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
TypeScript
/**
* 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