maplestory-mcp-server

ljy9303/maplestory-mcp-server

3.3

If you are the rightful owner of maplestory-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.

MapleStory MCP Server provides structured access to MapleStory data via NEXON's open API, compatible with Claude Desktop and other MCP AI assistants.

Tools
  1. get_character_basic_info

    Retrieve basic character information including level, job, world, and guild.

  2. get_character_stats

    Retrieve detailed character stats and combat stats.

  3. get_character_equipment

    Retrieve character equipment and item details.

  4. get_union_info

    Retrieve union level, grade, and artifact information.

  5. get_guild_info

    Retrieve guild information, members, and skills.

MapleStory MCP Server ๐Ÿ

NEXON ๋ฉ”์ดํ”Œ์Šคํ† ๋ฆฌ ์˜คํ”ˆ API ๋ฐ์ดํ„ฐ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋Š” ์ข…ํ•ฉ์ ์ธ MCP(Model Context Protocol) ์„œ๋ฒ„์ž…๋‹ˆ๋‹ค. Claude Desktop ๋ฐ ๊ธฐํƒ€ MCP ํ˜ธํ™˜ AI ์–ด์‹œ์Šคํ„ดํŠธ๋ฅผ ํ†ตํ•ด ์บ๋ฆญํ„ฐ ์ •๋ณด, ์œ ๋‹ˆ์˜จ ์„ธ๋ถ€์‚ฌํ•ญ, ๊ธธ๋“œ ๋ฐ์ดํ„ฐ, ๋žญํ‚น, ๊ฒŒ์ž„ ๋ฉ”์ปค๋‹ˆ์ฆ˜์— ๊ตฌ์กฐํ™”๋œ ์ ‘๊ทผ์„ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

โœจ ๊ธฐ๋Šฅ

  • ์บ๋ฆญํ„ฐ ์ •๋ณด: ์ƒ์„ธํ•œ ์บ๋ฆญํ„ฐ ์Šคํƒฏ, ์žฅ๋น„, ๊ธฐ๋ณธ ์ •๋ณด ์กฐํšŒ
  • ์œ ๋‹ˆ์˜จ ์‹œ์Šคํ…œ: ์œ ๋‹ˆ์˜จ ๊ณต๊ฒฉ๋Œ€ ๊ตฌ์„ฑ ๋ฐ ๋žญํ‚น ์ ‘๊ทผ
  • ๊ธธ๋“œ ๊ด€๋ฆฌ: ๊ธธ๋“œ ์ •๋ณด ๋ฐ ๋ฉค๋ฒ„ ์„ธ๋ถ€์‚ฌํ•ญ ์กฐํšŒ
  • ๋žญํ‚น: ๋‹ค์–‘ํ•œ ๋ฆฌ๋”๋ณด๋“œ ๋ฐ ๊ฒฝ์Ÿ ๋ฐ์ดํ„ฐ ์ ‘๊ทผ
  • ๊ฒŒ์ž„ ๋ฉ”์ปค๋‹ˆ์ฆ˜: ํ๋ธŒ ๋ฐ ์Šคํƒ€ํฌ์Šค ๊ฐ•ํ™” ํ™•๋ฅ  ์ •๋ณด
  • ๊ฒŒ์ž„ ์—…๋ฐ์ดํŠธ: ์ตœ์‹  ๊ณต์ง€์‚ฌํ•ญ ๋ฐ ๋ฐœํ‘œ
  • TypeScript ์ง€์›: ์™„์ „ํ•œ ํƒ€์ž… ์•ˆ์ „์„ฑ ๋ฐ IntelliSense ์ง€์›
  • ์ข…ํ•ฉ์ ์ธ ๋กœ๊น…: ๋””๋ฒ„๊น…์„ ์œ„ํ•œ ์ƒ์„ธํ•œ ์ž‘์—… ๋กœ๊น…
  • ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ: ์ƒ์„ธํ•œ ์˜ค๋ฅ˜ ๋ฉ”์‹œ์ง€์™€ ํ•จ๊ป˜ ๊ฐ•๋ ฅํ•œ ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ

๐Ÿš€ ๋น ๋ฅธ ์‹œ์ž‘

NPX ์‚ฌ์šฉ (๊ถŒ์žฅ)

npx maplestory-mcp-server --api-key YOUR_NEXON_API_KEY

์„ค์น˜

npm install -g maplestory-mcp-server

๐Ÿ–ฅ๏ธ Claude Desktop๊ณผ ํ•จ๊ป˜ ์‚ฌ์šฉ

1. NEXON API ํ‚ค ์ค€๋น„

๋จผ์ € NEXON ์˜คํ”ˆ API ํฌํ„ธ์—์„œ API ํ‚ค๋ฅผ ๋ฐœ๊ธ‰๋ฐ›์œผ์„ธ์š”:

  1. NEXON ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ
  2. "๊ฐœ๋ฐœ์ž ์„ผํ„ฐ" โ†’ "์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ด€๋ฆฌ" ์ด๋™
  3. "์ƒˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ๋ก" ํด๋ฆญ
  4. ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ •๋ณด ์ž…๋ ฅ ํ›„ ๋“ฑ๋ก
  5. ์ƒ์„ฑ๋œ API ํ‚ค ๋ณต์‚ฌ
2. Claude Desktop ์„ค์ • ํŒŒ์ผ ์ฐพ๊ธฐ

์šด์˜์ฒด์ œ๋ณ„ ์„ค์ • ํŒŒ์ผ ์œ„์น˜:

Windows:

%APPDATA%\Claude\claude_desktop_config.json

macOS:

~/Library/Application Support/Claude/claude_desktop_config.json

Linux:

~/.config/Claude/claude_desktop_config.json
3. MCP ์„œ๋ฒ„ ์„ค์ • ์ถ”๊ฐ€

์„ค์ • ํŒŒ์ผ์— ๋‹ค์Œ ๋‚ด์šฉ์„ ์ถ”๊ฐ€ํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜์„ธ์š”:

{
  "mcpServers": {
    "maplestory-mcp-server": {
      "command": "npx",
      "args": ["-y", "maplestory-mcp-server"],
      "env": {
        "NEXON_API_KEY": "์—ฌ๊ธฐ์—_๋ฐœ๊ธ‰๋ฐ›์€_API_ํ‚ค_์ž…๋ ฅ"
      }
    }
  }
}

โš ๏ธ ์ค‘์š”: YOUR_NEXON_API_KEY๋ฅผ ์‹ค์ œ ๋ฐœ๊ธ‰๋ฐ›์€ API ํ‚ค๋กœ ๊ต์ฒดํ•˜์„ธ์š”.

4. Claude Desktop ์žฌ์‹œ์ž‘

์„ค์ • ํŒŒ์ผ์„ ์ˆ˜์ •ํ•œ ํ›„ Claude Desktop์„ ์™„์ „ํžˆ ์ข…๋ฃŒํ–ˆ๋‹ค๊ฐ€ ๋‹ค์‹œ ์‹œ์ž‘ํ•˜์„ธ์š”.

5. ์—ฐ๊ฒฐ ํ™•์ธ

Claude Desktop์ด ์žฌ์‹œ์ž‘๋˜๋ฉด ์ƒˆ ๋Œ€ํ™”์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•ด ์—ฐ๊ฒฐ์„ ํ™•์ธํ•˜์„ธ์š”:

๋ฉ”์ดํ”Œ์Šคํ† ๋ฆฌ API๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ž‘๋™ํ•˜๋Š”์ง€ ํ™•์ธํ•ด์ค˜

์„ฑ๊ณต์ ์œผ๋กœ ์—ฐ๊ฒฐ๋˜๋ฉด Claude๊ฐ€ ๋ฉ”์ดํ”Œ์Šคํ† ๋ฆฌ ๊ด€๋ จ ์งˆ๋ฌธ์— ๋‹ตํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค!

๐Ÿ› ๏ธ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ MCP ๋„๊ตฌ

์บ๋ฆญํ„ฐ ๋„๊ตฌ

  • get_character_basic_info - ๊ธฐ๋ณธ ์บ๋ฆญํ„ฐ ์ •๋ณด ์กฐํšŒ (๋ ˆ๋ฒจ, ์ง์—…, ์›”๋“œ, ๊ธธ๋“œ)
  • get_character_stats - ์ƒ์„ธํ•œ ์บ๋ฆญํ„ฐ ์Šคํƒฏ ๋ฐ ์ „ํˆฌ ์Šคํƒฏ ์กฐํšŒ
  • get_character_equipment - ์บ๋ฆญํ„ฐ ์žฅ๋น„ ๋ฐ ์•„์ดํ…œ ์„ธ๋ถ€์‚ฌํ•ญ ์กฐํšŒ
  • get_character_full_info - ์ข…ํ•ฉ์ ์ธ ์บ๋ฆญํ„ฐ ์ •๋ณด๋ฅผ ํ•œ ๋ฒˆ์— ์กฐํšŒ

์œ ๋‹ˆ์˜จ ๋„๊ตฌ

  • get_union_info - ์œ ๋‹ˆ์˜จ ๋ ˆ๋ฒจ, ๋“ฑ๊ธ‰, ์•„ํ‹ฐํŒฉํŠธ ์ •๋ณด ์กฐํšŒ
  • get_union_raider - ์œ ๋‹ˆ์˜จ ๊ณต๊ฒฉ๋Œ€ ๋ณด๋“œ ๊ตฌ์„ฑ ๋ฐ ๋ธ”๋ก ์กฐํšŒ
  • get_union_ranking - ์œ ๋‹ˆ์˜จ ํŒŒ์›Œ ๋žญํ‚น ์กฐํšŒ

๊ธธ๋“œ ๋„๊ตฌ

  • get_guild_info - ๊ธธ๋“œ ์ •๋ณด, ๋ฉค๋ฒ„, ์Šคํ‚ฌ ์กฐํšŒ
  • get_guild_ranking - ๊ธธ๋“œ ๋ ˆ๋ฒจ ๋žญํ‚น ์กฐํšŒ

๋žญํ‚น ๋„๊ตฌ

  • get_overall_ranking - ํ•„ํ„ฐ๋ง ์˜ต์…˜์ด ํฌํ•จ๋œ ์ข…ํ•ฉ ๋ ˆ๋ฒจ ๋žญํ‚น ์กฐํšŒ

์œ ํ‹ธ๋ฆฌํ‹ฐ ๋„๊ตฌ

  • get_notice_list - ๊ฒŒ์ž„ ๊ณต์ง€์‚ฌํ•ญ ๋ฐ ๋ฐœํ‘œ ์กฐํšŒ
  • get_notice_detail - ์ƒ์„ธํ•œ ๊ณต์ง€์‚ฌํ•ญ ์ •๋ณด ์กฐํšŒ
  • get_cube_probability - ํ๋ธŒ ๊ฐ•ํ™” ํ™•๋ฅ  ์ •๋ณด ์กฐํšŒ
  • get_starforce_probability - ์Šคํƒ€ํฌ์Šค ๊ฐ•ํ™” ํ™•๋ฅ  ์ •๋ณด ์กฐํšŒ
  • health_check - API ์—ฐ๊ฒฐ ๋ฐ ์ƒํƒœ ํ™•์ธ

๐Ÿ“– ์‚ฌ์šฉ ์˜ˆ์‹œ

๐ŸŽฏ Claude Desktop์—์„œ ์งˆ๋ฌธํ•˜๊ธฐ

Claude Desktop์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ž์—ฐ์–ด๋กœ ๋ฉ”์ดํ”Œ์Šคํ† ๋ฆฌ ์ •๋ณด๋ฅผ ์กฐํšŒํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค:

์บ๋ฆญํ„ฐ ์ •๋ณด ์กฐํšŒ
"๊น€์ฝ”์ธ"์ด๋ผ๋Š” ์บ๋ฆญํ„ฐ์˜ ๊ธฐ๋ณธ ์ •๋ณด๋ฅผ ์•Œ๋ ค์ค˜
"๋ฒ ๋ผ์›”๋“œ์šฉ์‚ฌ" ์บ๋ฆญํ„ฐ์˜ ์ƒ์„ธํ•œ ์Šคํƒฏ ์ •๋ณด๋ฅผ ์กฐํšŒํ•ด์ค˜
"๋ฆฌ๋ถ€ํŠธ์šฉ์‚ฌ" ์บ๋ฆญํ„ฐ๊ฐ€ ์ฐฉ์šฉํ•˜๊ณ  ์žˆ๋Š” ์žฅ๋น„ ๋ชฉ๋ก์„ ๋ณด์—ฌ์ค˜
์œ ๋‹ˆ์˜จ ๋ฐ ๊ธธ๋“œ ์ •๋ณด
"์Šค์นด๋‹ˆ์•„์šฉ์‚ฌ" ์บ๋ฆญํ„ฐ์˜ ์œ ๋‹ˆ์˜จ ์ •๋ณด๋ฅผ ์กฐํšŒํ•ด์ค˜
"์Šค์นด๋‹ˆ์•„" ์›”๋“œ์˜ "๊ธธ๋“œ๋ช…" ๊ธธ๋“œ ์ •๋ณด๋ฅผ ์•Œ๋ ค์ค˜
๋žญํ‚น ์กฐํšŒ
์Šค์นด๋‹ˆ์•„ ์›”๋“œ์˜ ์•„ํฌ๋ฉ”์ด์ง€(๋ถˆ,๋…) ์ง์—… ๋žญํ‚น 1ํŽ˜์ด์ง€๋ฅผ ๋ณด์—ฌ์ค˜
๋ฒ ๋ผ ์›”๋“œ์˜ ์œ ๋‹ˆ์˜จ ๋žญํ‚น ์ƒ์œ„ 20๋ช…์„ ์กฐํšŒํ•ด์ค˜
๊ฒŒ์ž„ ์ •๋ณด
๋ฉ”์ดํ”Œ์Šคํ† ๋ฆฌ ์ตœ์‹  ๊ณต์ง€์‚ฌํ•ญ์„ ํ™•์ธํ•ด์ค˜
๋ ˆ๋“œ ํ๋ธŒ์˜ ๊ฐ•ํ™” ํ™•๋ฅ  ์ •๋ณด๋ฅผ ์•Œ๋ ค์ค˜

๐Ÿ’ก ํ™œ์šฉ ํŒ

1. ์บ๋ฆญํ„ฐ ์ข…ํ•ฉ ๋ถ„์„
"์Šค์นด๋‹ˆ์•„์šฉ์‚ฌ" ์บ๋ฆญํ„ฐ์˜ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์ข…ํ•ฉ์ ์œผ๋กœ ๋ถ„์„ํ•ด์ค˜ (๊ธฐ๋ณธ์ •๋ณด, ์Šคํƒฏ, ์žฅ๋น„, ์œ ๋‹ˆ์˜จ)
2. ๊ธธ๋“œ ๊ด€๋ฆฌ
"๋ฒ ๋ผ" ์›”๋“œ์˜ "์šฐ๋ฆฌ๊ธธ๋“œ" ๊ธธ๋“œ์›๋“ค์˜ ๋ ˆ๋ฒจ๊ณผ ์ง์—…์„ ์ •๋ฆฌํ•ด์ค˜
3. ๋žญํ‚น ๋น„๊ต
"์Šค์นด๋‹ˆ์•„" ์›”๋“œ์™€ "๋ฒ ๋ผ" ์›”๋“œ์˜ ์ƒ์œ„ ๋žญ์ปค๋“ค์„ ๋น„๊ต ๋ถ„์„ํ•ด์ค˜
4. ์ง„ํ–‰ ์ƒํ™ฉ ์ถ”์ 
"๋‚ด์บ๋ฆญํ„ฐ" ์บ๋ฆญํ„ฐ์˜ ์–ด์ œ์™€ ์˜ค๋Š˜ ์Šคํƒฏ ๋ณ€ํ™”๋ฅผ ๋น„๊ตํ•ด์ค˜

๐Ÿ”ง ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์˜ˆ์‹œ

๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ์ง์ ‘ API ํ˜ธ์ถœ ์˜ˆ์‹œ:

์บ๋ฆญํ„ฐ ์ •๋ณด ์กฐํšŒ
// ๊ธฐ๋ณธ ์บ๋ฆญํ„ฐ ์ •๋ณด ์กฐํšŒ
const basicInfo = await getCharacterBasicInfo({
  characterName: "์Šค์นด๋‹ˆ์•„์šฉ์‚ฌ"
});

// ์ƒ์„ธํ•œ ์บ๋ฆญํ„ฐ ์Šคํƒฏ ์กฐํšŒ
const stats = await getCharacterStats({
  characterName: "์Šค์นด๋‹ˆ์•„์šฉ์‚ฌ",
  date: "2024-01-15"
});

// ์บ๋ฆญํ„ฐ ์žฅ๋น„ ์กฐํšŒ
const equipment = await getCharacterEquipment({
  characterName: "์Šค์นด๋‹ˆ์•„์šฉ์‚ฌ"
});
์œ ๋‹ˆ์˜จ ๋ฐ ๊ธธ๋“œ ๋ฐ์ดํ„ฐ
// ์œ ๋‹ˆ์˜จ ์ •๋ณด ์กฐํšŒ
const unionInfo = await getUnionInfo({
  characterName: "์Šค์นด๋‹ˆ์•„์šฉ์‚ฌ"
});

// ๊ธธ๋“œ ์ •๋ณด ์กฐํšŒ
const guildInfo = await getGuildInfo({
  guildName: "๊ธธ๋“œ๋ช…",
  worldName: "์Šค์นด๋‹ˆ์•„"
});
๋žญํ‚น ๋ฐ ๋ฆฌ๋”๋ณด๋“œ
// ์ข…ํ•ฉ ๋žญํ‚น ์กฐํšŒ
const rankings = await getOverallRanking({
  worldName: "์Šค์นด๋‹ˆ์•„",
  className: "์•„ํฌ๋ฉ”์ด์ง€(๋ถˆ,๋…)",
  page: 1
});

// ์œ ๋‹ˆ์˜จ ๋žญํ‚น ์กฐํšŒ
const unionRankings = await getUnionRanking({
  worldName: "์Šค์นด๋‹ˆ์•„",
  page: 1
});

๐Ÿ”ง ์„ค์ •

ํ™˜๊ฒฝ ๋ณ€์ˆ˜

  • NEXON_API_KEY - NEXON ์˜คํ”ˆ API ํ‚ค (ํ•„์ˆ˜)
  • LOG_LEVEL - ๋กœ๊น… ๋ ˆ๋ฒจ (๊ธฐ๋ณธ๊ฐ’: "info")
  • NODE_ENV - ํ™˜๊ฒฝ (development/production)

CLI ์˜ต์…˜

  • --api-key - NEXON API ํ‚ค
  • --port - ์„œ๋ฒ„ ํฌํŠธ (๊ธฐ๋ณธ๊ฐ’: 3000)
  • --debug - ๋””๋ฒ„๊ทธ ๋กœ๊น… ํ™œ์„ฑํ™”
  • --name - ์„œ๋ฒ„ ์ด๋ฆ„ (๊ธฐ๋ณธ๊ฐ’: "mcp-maple")
  • --version - ์„œ๋ฒ„ ๋ฒ„์ „

๐Ÿ”‘ NEXON API ํ‚ค ์–ป๊ธฐ

์ƒ์„ธ ๊ฐ€์ด๋“œ

  1. NEXON ์˜คํ”ˆ API ํฌํ„ธ ์ ‘์†

  2. ๊ณ„์ • ์ƒ์„ฑ ๋ฐ ๋กœ๊ทธ์ธ

    • NEXON ๊ณ„์ •์œผ๋กœ ๋กœ๊ทธ์ธ (๊ฒŒ์ž„ ๊ณ„์ •๊ณผ ๋™์ผ)
    • ๊ณ„์ •์ด ์—†๋‹ค๋ฉด ํšŒ์›๊ฐ€์ž… ์ง„ํ–‰
  3. ๊ฐœ๋ฐœ์ž ์„ผํ„ฐ ์ด๋™

    • ์ƒ๋‹จ ๋ฉ”๋‰ด์—์„œ "๊ฐœ๋ฐœ์ž ์„ผํ„ฐ" ํด๋ฆญ
    • "์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ด€๋ฆฌ" ์„ ํƒ
  4. ์ƒˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ๋ก

    • "์ƒˆ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋“ฑ๋ก" ๋ฒ„ํŠผ ํด๋ฆญ
    • ํ•„์ˆ˜ ์ •๋ณด ์ž…๋ ฅ:
      • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์ด๋ฆ„: MCP Maple (์˜ˆ์‹œ)
      • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค๋ช…: Claude Desktop MCP ์„œ๋ฒ„์šฉ
      • ์„œ๋น„์Šค URL: http://localhost (๊ฐœ๋ฐœ์šฉ)
  5. API ํ‚ค ๋ฐœ๊ธ‰ ๋ฐ ๋ณต์‚ฌ

    • ๋“ฑ๋ก ์™„๋ฃŒ ํ›„ API ํ‚ค ํ™•์ธ
    • API ํ‚ค ๋ณต์‚ฌ (๋ณด์•ˆ์„ ์œ„ํ•ด ์•ˆ์ „ํ•œ ๊ณณ์— ์ €์žฅ)
  6. API ํ‚ค ์‚ฌ์šฉ

    • Claude Desktop ์„ค์ •์—์„œ NEXON_API_KEY๋กœ ์‚ฌ์šฉ
    • ๋˜๋Š” CLI์—์„œ --api-key ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์‚ฌ์šฉ

๐Ÿ’ก ํŒ: API ํ‚ค๋Š” ์™ธ๋ถ€์— ๋…ธ์ถœ๋˜์ง€ ์•Š๋„๋ก ์ฃผ์˜ํ•˜์„ธ์š”. GitHub ๋“ฑ ๊ณต๊ฐœ ์ €์žฅ์†Œ์— ์—…๋กœ๋“œํ•˜์ง€ ๋งˆ์„ธ์š”.

๐ŸŽฎ ์ง€์›๋˜๋Š” ๊ฒŒ์ž„ ๋ฐ ์›”๋“œ

๋ฉ”์ดํ”Œ์Šคํ† ๋ฆฌ ์›”๋“œ

  • ์Šค์นด๋‹ˆ์•„ (Scania)
  • ๋ฒ ๋ผ (Bera)
  • ๋ฃจ๋‚˜ (Luna)
  • ์ œ๋‹ˆ์Šค (Zenith)
  • ํฌ๋กœ์•„ (Croa)
  • ์œ ๋‹ˆ์˜จ (Union)
  • ์—˜๋ฆฌ์‹œ์›€ (Elysium)
  • ์ด๋…ธ์‹œ์Šค (Enosis)
  • ๋ ˆ๋“œ (Red)
  • ์˜ค๋กœ๋ผ (Aurora)
  • ์•„์ผ€์ธ (Arcane)
  • ๋…ธ๋ฐ” (Nova)
  • ๋ฆฌ๋ถ€ํŠธ (Reboot)
  • ๋ฆฌ๋ถ€ํŠธ2 (Reboot2)

๐Ÿšฆ ์š”์ฒญ ์ œํ•œ ๋ฐ ๋ชจ๋ฒ” ์‚ฌ๋ก€

  • ์š”์ฒญ ์ œํ•œ: API ํ‚ค๋‹น ํ•˜๋ฃจ 500ํšŒ ์š”์ฒญ
  • ์š”์ฒญ ๋นˆ๋„: ์ดˆ๋‹น ์ตœ๋Œ€ 1ํšŒ ์š”์ฒญ
  • ๋ฐ์ดํ„ฐ ๊ฐฑ์‹ : ์บ๋ฆญํ„ฐ ๋ฐ์ดํ„ฐ๋Š” ๋งค์ผ ์—…๋ฐ์ดํŠธ
  • ์บ์‹œ: ๋” ๋‚˜์€ ์„ฑ๋Šฅ์„ ์œ„ํ•œ ๊ฒฐ๊ณผ ์บ์‹ฑ
  • ์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ: ์ผ์‹œ์  ์‹คํŒจ์— ๋Œ€ํ•œ ์ž๋™ ์žฌ์‹œ๋„

๐Ÿงช ๊ฐœ๋ฐœ

์ „์ œ ์กฐ๊ฑด

  • Node.js 18+
  • TypeScript 5.4+
  • NEXON API ํ‚ค

์„ค์ •

git clone https://github.com/ljy9303/maplestory-mcp-server.git
cd maplestory-mcp-server
npm install
npm run build

๋นŒ๋“œ

npm run build          # TypeScript ๋นŒ๋“œ
npm run dev            # ๊ฐœ๋ฐœ ๋ชจ๋“œ (watch)

๐Ÿ“š API ์ฐธ์กฐ

์บ๋ฆญํ„ฐ ์ •๋ณด ๋„๊ตฌ

get_character_basic_info

๋ ˆ๋ฒจ, ์ง์—…, ์›”๋“œ, ๊ธธ๋“œ๋ฅผ ํฌํ•จํ•œ ๊ธฐ๋ณธ ์บ๋ฆญํ„ฐ ์ •๋ณด๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜:

  • characterName (string, ํ•„์ˆ˜): ์กฐํšŒํ•  ์บ๋ฆญํ„ฐ ์ด๋ฆ„
  • date (string, ์„ ํƒ์‚ฌํ•ญ): YYYY-MM-DD ํ˜•์‹์˜ ๋‚ ์งœ

๋ฐ˜ํ™˜๊ฐ’:

  • characterName: ์บ๋ฆญํ„ฐ ์ด๋ฆ„
  • level: ์บ๋ฆญํ„ฐ ๋ ˆ๋ฒจ
  • job: ์บ๋ฆญํ„ฐ ์ง์—…/ํด๋ž˜์Šค
  • world: ์›”๋“œ/์„œ๋ฒ„ ์ด๋ฆ„
  • guildName: ๊ธธ๋“œ ์ด๋ฆ„ (์žˆ๋Š” ๊ฒฝ์šฐ)
  • exp: ํ˜„์žฌ ๊ฒฝํ—˜์น˜
  • expRate: ๊ฒฝํ—˜์น˜ ๋น„์œจ ๋ฐฑ๋ถ„์œจ
get_character_stats

๋ฐ๋ฏธ์ง€, ํฌ๋ฆฌํ‹ฐ์ปฌ ํ™•๋ฅ , ๋ชจ๋“  ์ „ํˆฌ ์Šคํƒฏ์„ ํฌํ•จํ•œ ์ƒ์„ธํ•œ ์บ๋ฆญํ„ฐ ํ†ต๊ณ„๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜:

  • characterName (string, ํ•„์ˆ˜): ์กฐํšŒํ•  ์บ๋ฆญํ„ฐ ์ด๋ฆ„
  • date (string, ์„ ํƒ์‚ฌํ•ญ): YYYY-MM-DD ํ˜•์‹์˜ ๋‚ ์งœ

๋ฐ˜ํ™˜๊ฐ’:

  • basicStats: STR, DEX, INT, LUK, HP, MP
  • combatStats: ๊ณต๊ฒฉ๋ ฅ, ๋งˆ๋ ฅ, ํฌ๋ฆฌํ‹ฐ์ปฌ ์Šคํƒฏ
  • defenseStats: ๋ฌผ๋ฆฌ/๋งˆ๋ฒ• ๋ฐฉ์–ด ์Šคํƒฏ
  • allStats: ์™„์ „ํ•œ ์Šคํƒฏ ๋ถ„์„

์œ ๋‹ˆ์˜จ ๋„๊ตฌ

get_union_info

์œ ๋‹ˆ์˜จ ๋ ˆ๋ฒจ, ๋“ฑ๊ธ‰, ์•„ํ‹ฐํŒฉํŠธ ์ •๋ณด๋ฅผ ์กฐํšŒํ•ฉ๋‹ˆ๋‹ค.

๋งค๊ฐœ๋ณ€์ˆ˜:

  • characterName (string, ํ•„์ˆ˜): ์กฐํšŒํ•  ์บ๋ฆญํ„ฐ ์ด๋ฆ„
  • date (string, ์„ ํƒ์‚ฌํ•ญ): YYYY-MM-DD ํ˜•์‹์˜ ๋‚ ์งœ

๋ฐ˜ํ™˜๊ฐ’:

  • unionLevel: ํ˜„์žฌ ์œ ๋‹ˆ์˜จ ๋ ˆ๋ฒจ
  • unionGrade: ์œ ๋‹ˆ์˜จ ๋“ฑ๊ธ‰/๋žญํฌ
  • unionArtifact: ์•„ํ‹ฐํŒฉํŠธ ๋ ˆ๋ฒจ ๋ฐ ํฌ์ธํŠธ

์˜ค๋ฅ˜ ์ฒ˜๋ฆฌ

๋ชจ๋“  ๋„๊ตฌ๋Š” ์ผ๊ด€๋œ ์˜ค๋ฅ˜ ์ •๋ณด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค:

{
  success: false,
  error: "์˜ค๋ฅ˜ ์„ค๋ช…",
  metadata?: {
    executionTime: number,
    apiCalls: number
  }
}

๐Ÿค ๊ธฐ์—ฌํ•˜๊ธฐ

๊ธฐ์—ฌ๋ฅผ ํ™˜์˜ํ•ฉ๋‹ˆ๋‹ค! ์ž์„ธํ•œ ๋‚ด์šฉ์€ ๋ฅผ ์ฝ์–ด์ฃผ์„ธ์š”.

๊ฐœ๋ฐœ ํ”„๋กœ์„ธ์Šค

  1. ์ €์žฅ์†Œ๋ฅผ ํฌํฌํ•ฉ๋‹ˆ๋‹ค
  2. ๊ธฐ๋Šฅ ๋ธŒ๋žœ์น˜๋ฅผ ์ƒ์„ฑํ•ฉ๋‹ˆ๋‹ค
  3. ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ž‘์„ฑํ•ฉ๋‹ˆ๋‹ค
  4. ํ…Œ์ŠคํŠธ๋ฅผ ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค
  5. ๋ชจ๋“  ํ…Œ์ŠคํŠธ๊ฐ€ ํ†ต๊ณผํ•˜๋Š”์ง€ ํ™•์ธํ•ฉ๋‹ˆ๋‹ค
  6. ํ’€ ๋ฆฌํ€˜์ŠคํŠธ๋ฅผ ์ œ์ถœํ•ฉ๋‹ˆ๋‹ค

๐Ÿ“„ ๋ผ์ด์„ ์Šค

์ด ํ”„๋กœ์ ํŠธ๋Š” MIT ๋ผ์ด์„ ์Šค์— ๋”ฐ๋ผ ๋ผ์ด์„ ์Šค๊ฐ€ ๋ถ€์—ฌ๋ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ์€ ํŒŒ์ผ์„ ์ฐธ์กฐํ•˜์„ธ์š”.

๐Ÿ™ ๊ฐ์‚ฌ์˜ ๋ง

  • ๋ฉ”์ดํ”Œ์Šคํ† ๋ฆฌ ์˜คํ”ˆ API๋ฅผ ์ œ๊ณตํ•ด ์ฃผ์‹  NEXON
  • MCP ์‚ฌ์–‘์„ ์ œ๊ณตํ•ด ์ฃผ์‹  Model Context Protocol
  • Claude ๋ฐ MCP ๋„๊ตฌ๋ฅผ ์ œ๊ณตํ•ด ์ฃผ์‹  Anthropic

๐Ÿ”ง ๋ฌธ์ œ ํ•ด๊ฒฐ

์ผ๋ฐ˜์ ์ธ ๋ฌธ์ œ๋“ค

1. Claude Desktop์—์„œ mcp-maple์ด ์ธ์‹๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ

์ฆ์ƒ: Claude Desktop์—์„œ ๋ฉ”์ดํ”Œ์Šคํ† ๋ฆฌ ๊ด€๋ จ ์งˆ๋ฌธ์„ ํ•ด๋„ ์‘๋‹ตํ•˜์ง€ ๋ชปํ•จ

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•:

  1. Claude Desktop์„ ์™„์ „ํžˆ ์ข…๋ฃŒ
  2. ์„ค์ • ํŒŒ์ผ ๊ฒฝ๋กœ๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธ:
    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Linux: ~/.config/Claude/claude_desktop_config.json
  3. JSON ํ˜•์‹์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ํ™•์ธ (์‰ผํ‘œ, ๊ด„ํ˜ธ ๋“ฑ)
  4. Claude Desktop ์žฌ์‹œ์ž‘
2. API ํ‚ค ์˜ค๋ฅ˜

์ฆ์ƒ: "API key is invalid" ๋˜๋Š” "Authentication failed" ์˜ค๋ฅ˜

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•:

  1. NEXON ์˜คํ”ˆ API ํฌํ„ธ์—์„œ API ํ‚ค ์ƒํƒœ ํ™•์ธ
  2. API ํ‚ค๊ฐ€ ๋งŒ๋ฃŒ๋˜์ง€ ์•Š์•˜๋Š”์ง€ ํ™•์ธ
  3. ์„ค์ • ํŒŒ์ผ์—์„œ API ํ‚ค๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ž…๋ ฅ๋˜์—ˆ๋Š”์ง€ ํ™•์ธ
  4. API ํ‚ค ์•ž๋’ค ๊ณต๋ฐฑ ์ œ๊ฑฐ
3. ์บ๋ฆญํ„ฐ๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ

์ฆ์ƒ: "Character not found" ์˜ค๋ฅ˜

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•:

  1. ์บ๋ฆญํ„ฐ ์ด๋ฆ„์„ ์ •ํ™•ํžˆ ์ž…๋ ฅ (๋Œ€์†Œ๋ฌธ์ž, ํŠน์ˆ˜๋ฌธ์ž ํฌํ•จ)
  2. ํ•ด๋‹น ์บ๋ฆญํ„ฐ๊ฐ€ ์‹ค์ œ๋กœ ์กด์žฌํ•˜๋Š”์ง€ ๊ฒŒ์ž„์—์„œ ํ™•์ธ
  3. ์บ๋ฆญํ„ฐ๊ฐ€ ์ตœ๊ทผ์— ์ƒ์„ฑ๋œ ๊ฒฝ์šฐ ํ•˜๋ฃจ ์ •๋„ ๊ธฐ๋‹ค๋ฆฐ ํ›„ ์žฌ์‹œ๋„
4. ์š”์ฒญ ์ œํ•œ ์ดˆ๊ณผ

์ฆ์ƒ: "Rate limit exceeded" ์˜ค๋ฅ˜

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•:

  1. ์ž ์‹œ ๊ธฐ๋‹ค๋ฆฐ ํ›„ ์žฌ์‹œ๋„ (1๋ถ„ ์ •๋„)
  2. ์š”์ฒญ ๋นˆ๋„๋ฅผ ์ค„์—ฌ์„œ ์‚ฌ์šฉ
  3. ํ•˜๋ฃจ 500ํšŒ ์ œํ•œ์„ ์ดˆ๊ณผํ•˜์ง€ ์•Š๋„๋ก ์ฃผ์˜
5. ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ ๋ฌธ์ œ

์ฆ์ƒ: "Network error" ๋˜๋Š” "Timeout" ์˜ค๋ฅ˜

ํ•ด๊ฒฐ๋ฐฉ๋ฒ•:

  1. ์ธํ„ฐ๋„ท ์—ฐ๊ฒฐ ์ƒํƒœ ํ™•์ธ
  2. ๋ฐฉํ™”๋ฒฝ์ด๋‚˜ ํ”„๋ก์‹œ ์„ค์ • ํ™•์ธ
  3. ์ž ์‹œ ํ›„ ์žฌ์‹œ๋„

๋””๋ฒ„๊น… ๋ฐฉ๋ฒ•

1. ์ƒ์„ธํ•œ ๋กœ๊ทธ ํ™•์ธ
npx mcp-maple --debug --api-key YOUR_API_KEY
2. ์—ฐ๊ฒฐ ํ…Œ์ŠคํŠธ

Claude Desktop์—์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์ž…๋ ฅํ•˜์—ฌ ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ํ™•์ธ:

๋ฉ”์ดํ”Œ์Šคํ† ๋ฆฌ API ์—ฐ๊ฒฐ ์ƒํƒœ๋ฅผ ํ™•์ธํ•ด์ค˜
3. ์„ค์ • ํŒŒ์ผ ๊ฒ€์ฆ

JSON ํ˜•์‹์ด ์˜ฌ๋ฐ”๋ฅธ์ง€ ์˜จ๋ผ์ธ JSON ๊ฒ€์ฆ๊ธฐ์—์„œ ํ™•์ธํ•˜์„ธ์š”.

์•Œ๋ ค์ง„ ์ œํ•œ ์‚ฌํ•ญ

  • API ํ˜ธ์ถœ ์ œํ•œ: ํ•˜๋ฃจ 500ํšŒ, ์ดˆ๋‹น 1ํšŒ
  • ๋ฐ์ดํ„ฐ ๊ฐฑ์‹ : ์บ๋ฆญํ„ฐ ์ •๋ณด๋Š” ๋งค์ผ ์˜ค์ „ 8์‹œ๊ฒฝ ์—…๋ฐ์ดํŠธ
  • ์ง€์› ์›”๋“œ: ์ผ๋ถ€ ํ…Œ์ŠคํŠธ ์„œ๋ฒ„๋‚˜ ํŠน์ˆ˜ ์›”๋“œ๋Š” ์ง€์›๋˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์Œ

๐Ÿ“ž ์ง€์›

  • ์ด์Šˆ: GitHub Issues
  • ๋ฌธ์„œ:
  • ์˜ˆ์‹œ:

๐Ÿ”— ๊ด€๋ จ ํ”„๋กœ์ ํŠธ


๋ฉ”์ดํ”Œ์Šคํ† ๋ฆฌ ์ปค๋ฎค๋‹ˆํ‹ฐ๋ฅผ ์œ„ํ•ด โค๏ธ๋กœ ์ œ์ž‘๋˜์—ˆ์Šต๋‹ˆ๋‹ค