UNPKG

maplestorysea-mcp-server

Version:

NEXON MapleStory SEA API MCP Server for Claude Desktop - Complete character info, union details, guild data, rankings optimized for SEA servers

267 lines 9.72 kB
/** * NEXON MapleStory Open API Client * Provides methods to interact with NEXON's official MapleStory API */ import { ApiClientConfig, CharacterOcid, CharacterBasic, CharacterStat, CharacterHyperStat, CharacterPropensity, CharacterAbility, ItemEquipment, CharacterPopularity, SymbolEquipment, SetEffect, AndroidEquipment, PetEquipment, CharacterSkill, LinkSkill, VMatrix, HexaMatrix, HexaMatrixStat, DojangRecord, UnionInfo, UnionRaider, UnionArtifact, GuildId, GuildBasic, OverallRanking, UnionRanking, GuildRanking, DojangRanking, TheSeedRanking, AchievementRanking } from './types'; import { ServerStatus } from '../utils/server-utils'; export declare class NexonApiClient { private client; private logger; private mcpLogger; private apiKey; private requestQueue; private isProcessingQueue; private cache; private errorAggregator; constructor(config: ApiClientConfig); private setupInterceptors; private getErrorName; private getErrorMessage; private waitForRateLimit; private processQueue; private retryRequest; private isRetryableError; private request; getCharacterOcid(characterName: string): Promise<CharacterOcid>; getCharacterBasic(ocid: string, date?: string): Promise<CharacterBasic>; getCharacterStat(ocid: string, date?: string): Promise<CharacterStat>; getCharacterHyperStat(ocid: string, date?: string): Promise<CharacterHyperStat>; getCharacterPropensity(ocid: string, date?: string): Promise<CharacterPropensity>; getCharacterAbility(ocid: string, date?: string): Promise<CharacterAbility>; getCharacterItemEquipment(ocid: string, date?: string): Promise<ItemEquipment>; getCharacterCashItemEquipment(ocid: string, date?: string): Promise<any>; getCharacterBeautyEquipment(ocid: string, date?: string): Promise<any>; getUnionInfo(ocid: string, date?: string): Promise<UnionInfo>; getUnionRaider(ocid: string, date?: string): Promise<UnionRaider>; getGuildId(guildName: string, worldName: string): Promise<GuildId>; getGuildBasic(oguildId: string, date?: string): Promise<GuildBasic>; /** * Search for guilds with fuzzy matching */ searchGuilds(searchTerm: string, worldName: string, limit?: number): Promise<Array<{ guildName: string; guildId: string; matchScore: number; guildInfo?: GuildBasic; }>>; /** * Get comprehensive guild analysis */ getGuildAnalysis(guildName: string, worldName: string, date?: string): Promise<{ basic: GuildBasic; metrics: { guildScore: number; level: number; memberCount: number; rankingPosition: number | null; }; recommendations: string[]; guildId: string; }>; /** * Generate guild improvement recommendations */ private generateGuildRecommendations; getOverallRanking(worldName?: string, worldType?: string, className?: string, ocid?: string, page?: number, date?: string): Promise<OverallRanking>; getUnionRanking(worldName?: string, ocid?: string, page?: number, date?: string): Promise<UnionRanking>; getGuildRanking(worldName: string, rankingType: number, guildName?: string, page?: number, date?: string): Promise<GuildRanking>; getCharacterFullInfo(characterName: string, date?: string): Promise<{ ocid: string; basic: CharacterBasic; stat: CharacterStat; hyperStat: CharacterHyperStat; propensity: CharacterPropensity; ability: CharacterAbility; equipment: ItemEquipment; cashItems: any; beautyEquipment: any; }>; /** * Get comprehensive character analysis including equipment stats and set effects */ getCharacterAnalysis(characterName: string, date?: string): Promise<{ analysis: { equipment: { setEffects: import("../utils/equipment-analyzer").SetEffect[]; enhancementScores: { itemName: string; slot: string; enhancement: import("../utils/equipment-analyzer").EquipmentEnhancement; score: number; }[]; totalCombatPower: number; }; characterScore: number; recommendations: string[]; }; ocid: string; basic: CharacterBasic; stat: CharacterStat; hyperStat: CharacterHyperStat; propensity: CharacterPropensity; ability: CharacterAbility; equipment: ItemEquipment; cashItems: any; beautyEquipment: any; }>; /** * Calculate total combat power from character stats */ private calculateTotalCombatPower; /** * Calculate overall character score */ private calculateCharacterScore; /** * Generate improvement recommendations */ private generateRecommendations; getGuildFullInfo(guildName: string, worldName: string, date?: string): Promise<{ oguild_id: string; basic: GuildBasic; }>; healthCheck(): Promise<{ status: string; timestamp: string; }>; /** * Get comprehensive server status for all worlds */ getServerStatus(worldName?: string): Promise<{ status: ServerStatus; worlds: Array<{ worldName: string; status: ServerStatus; population: 'high' | 'medium' | 'low' | 'unknown'; lastUpdate: string; }>; maintenance?: any; timestamp: string; }>; /** * Find character's position in overall ranking */ findCharacterRankingPosition(characterName: string, worldName?: string, className?: string, maxPages?: number): Promise<{ found: boolean; position?: number; entry?: any; searchedPages: number; }>; /** * Find guild's position in guild ranking */ findGuildRankingPosition(guildName: string, worldName: string, rankingType?: number, maxPages?: number): Promise<{ found: boolean; position?: number; entry?: any; searchedPages: number; }>; /** * Get comprehensive ranking analysis */ getRankingAnalysis(worldName?: string, className?: string, pages?: number): Promise<{ overall: any; union?: any; guild?: any; statistics: any; topCharacters: any[]; topGuilds: any[]; }>; getErrorSummary(): { total: number; byType: Record<string, number>; byCode: Record<string, number>; }; clearErrorHistory(): void; getPerformanceMetrics(): Record<string, { count: number; avgTime: number; minTime: number; maxTime: number; totalTime: number; }>; logPerformanceSummary(): void; getClientHealth(): Promise<{ status: 'healthy' | 'degraded' | 'unhealthy'; errors: { total: number; byType: Record<string, number>; byCode: Record<string, number>; }; performance: Record<string, any>; cache: { size: number; hit_rate?: number; }; uptime: number; }>; withErrorRecovery<T>(operation: () => Promise<T>, fallbackValue?: T, maxAttempts?: number): Promise<T>; executeBatch<T>(operations: Array<{ name: string; operation: () => Promise<T>; }>, continueOnError?: boolean): Promise<{ results: T[]; errors: any[]; }>; /** * Get character popularity information */ getCharacterPopularity(ocid: string, date?: string): Promise<CharacterPopularity>; /** * Get character symbol equipment */ getCharacterSymbolEquipment(ocid: string, date?: string): Promise<SymbolEquipment>; /** * Get character set effects */ getCharacterSetEffect(ocid: string, date?: string): Promise<SetEffect>; /** * Get character android equipment */ getCharacterAndroidEquipment(ocid: string, date?: string): Promise<AndroidEquipment>; /** * Get character pet equipment */ getCharacterPetEquipment(ocid: string, date?: string): Promise<PetEquipment>; /** * Get character skills */ getCharacterSkill(ocid: string, date?: string): Promise<CharacterSkill>; /** * Get character link skills */ getCharacterLinkSkill(ocid: string, date?: string): Promise<LinkSkill>; /** * Get character V-Matrix */ getCharacterVMatrix(ocid: string, date?: string): Promise<VMatrix>; /** * Get character Hexa Matrix */ getCharacterHexaMatrix(ocid: string, date?: string): Promise<HexaMatrix>; /** * Get character Hexa Matrix stats */ getCharacterHexaMatrixStat(ocid: string, date?: string): Promise<HexaMatrixStat>; /** * Get character Dojang record */ getCharacterDojang(ocid: string, date?: string): Promise<DojangRecord>; /** * Get union artifact information */ getUnionArtifact(ocid: string, date?: string): Promise<UnionArtifact>; /** * Get Dojang rankings */ getDojangRanking(worldName?: string, characterName?: string, page?: number, date?: string): Promise<DojangRanking>; /** * Get The Seed rankings */ getTheSeedRanking(worldName?: string, characterName?: string, page?: number, date?: string): Promise<TheSeedRanking>; /** * Get Achievement rankings */ getAchievementRanking(worldName?: string, characterName?: string, page?: number, date?: string): Promise<AchievementRanking>; } //# sourceMappingURL=nexon-client.d.ts.map