Access Nexon's MapleStory Open API for character, guild, and game data.
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 ํค๋ฅผ ๋ฐ๊ธ๋ฐ์ผ์ธ์:
- NEXON ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ
- "๊ฐ๋ฐ์ ์ผํฐ" โ "์ ํ๋ฆฌ์ผ์ด์ ๊ด๋ฆฌ" ์ด๋
- "์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฑ๋ก" ํด๋ฆญ
- ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ณด ์ ๋ ฅ ํ ๋ฑ๋ก
- ์์ฑ๋ 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 ํค ์ป๊ธฐ
์์ธ ๊ฐ์ด๋
NEXON ์คํ API ํฌํธ ์ ์
- https://openapi.nexon.com/ ๋ฐฉ๋ฌธ
๊ณ์ ์์ฑ ๋ฐ ๋ก๊ทธ์ธ
- NEXON ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธ (๊ฒ์ ๊ณ์ ๊ณผ ๋์ผ)
- ๊ณ์ ์ด ์๋ค๋ฉด ํ์๊ฐ์ ์งํ
๊ฐ๋ฐ์ ์ผํฐ ์ด๋
- ์๋จ ๋ฉ๋ด์์ "๊ฐ๋ฐ์ ์ผํฐ" ํด๋ฆญ
- "์ ํ๋ฆฌ์ผ์ด์ ๊ด๋ฆฌ" ์ ํ
์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฑ๋ก
- "์ ์ ํ๋ฆฌ์ผ์ด์ ๋ฑ๋ก" ๋ฒํผ ํด๋ฆญ
- ํ์ ์ ๋ณด ์
๋ ฅ:
- ์ ํ๋ฆฌ์ผ์ด์
์ด๋ฆ:
MCP Maple(์์) - ์ ํ๋ฆฌ์ผ์ด์
์ค๋ช
:
Claude Desktop MCP ์๋ฒ์ฉ - ์๋น์ค URL:
http://localhost(๊ฐ๋ฐ์ฉ)
- ์ ํ๋ฆฌ์ผ์ด์
์ด๋ฆ:
API ํค ๋ฐ๊ธ ๋ฐ ๋ณต์ฌ
- ๋ฑ๋ก ์๋ฃ ํ API ํค ํ์ธ
- API ํค ๋ณต์ฌ (๋ณด์์ ์ํด ์์ ํ ๊ณณ์ ์ ์ฅ)
**AP
Tools (15)
get_character_basic_infoRetrieve basic character information including level, job, world, and guild.get_character_statsRetrieve detailed character stats and combat stats.get_character_equipmentRetrieve character equipment and item details.get_character_full_infoRetrieve comprehensive character information in one call.get_union_infoRetrieve Union level, rank, and artifact information.get_union_raiderRetrieve Union raider board configuration and blocks.get_union_rankingRetrieve Union power rankings.get_guild_infoRetrieve guild information, members, and skills.get_guild_rankingRetrieve guild level rankings.get_overall_rankingRetrieve overall level rankings with filtering options.get_notice_listRetrieve game announcements and notices.get_notice_detailRetrieve detailed notice information.get_cube_probabilityRetrieve cube enhancement probability information.get_starforce_probabilityRetrieve starforce enhancement probability information.health_checkCheck API connection and server status.Environment Variables
NEXON_API_KEYrequiredNEXON Open API keyLOG_LEVELLogging level (default: info)NODE_ENVEnvironment (development/production)Configuration
{"mcpServers": {"maplestory-mcp-server": {"command": "npx", "args": ["-y", "maplestory-mcp-server"], "env": {"NEXON_API_KEY": "YOUR_NEXON_API_KEY"}}}}