[](https://lobehub.com/mcp/ljy9303-maplestory-mcp-server)
# MapleStory MCP Server ๐
NEXON ๋ฉ์ดํ์คํ ๋ฆฌ ์คํ API ๋ฐ์ดํฐ์ ์ ๊ทผํ ์ ์๋ ์ข
ํฉ์ ์ธ MCP(Model Context Protocol) ์๋ฒ์
๋๋ค. Claude Desktop ๋ฐ ๊ธฐํ MCP ํธํ AI ์ด์์คํดํธ๋ฅผ ํตํด ์บ๋ฆญํฐ ์ ๋ณด, ์ ๋์จ ์ธ๋ถ์ฌํญ, ๊ธธ๋ ๋ฐ์ดํฐ, ๋ญํน, ๊ฒ์ ๋ฉ์ปค๋์ฆ์ ๊ตฌ์กฐํ๋ ์ ๊ทผ์ ์ ๊ณตํฉ๋๋ค.
## โจ ๊ธฐ๋ฅ
- **์บ๋ฆญํฐ ์ ๋ณด**: ์์ธํ ์บ๋ฆญํฐ ์คํฏ, ์ฅ๋น, ๊ธฐ๋ณธ ์ ๋ณด ์กฐํ
- **์ ๋์จ ์์คํ
**: ์ ๋์จ ๊ณต๊ฒฉ๋ ๊ตฌ์ฑ ๋ฐ ๋ญํน ์ ๊ทผ
- **๊ธธ๋ ๊ด๋ฆฌ**: ๊ธธ๋ ์ ๋ณด ๋ฐ ๋ฉค๋ฒ ์ธ๋ถ์ฌํญ ์กฐํ
- **๋ญํน**: ๋ค์ํ ๋ฆฌ๋๋ณด๋ ๋ฐ ๊ฒฝ์ ๋ฐ์ดํฐ ์ ๊ทผ
- **๊ฒ์ ๋ฉ์ปค๋์ฆ**: ํ๋ธ ๋ฐ ์คํํฌ์ค ๊ฐํ ํ๋ฅ ์ ๋ณด
- **๊ฒ์ ์
๋ฐ์ดํธ**: ์ต์ ๊ณต์ง์ฌํญ ๋ฐ ๋ฐํ
- **TypeScript ์ง์**: ์์ ํ ํ์
์์ ์ฑ ๋ฐ IntelliSense ์ง์
- **์ข
ํฉ์ ์ธ ๋ก๊น
**: ๋๋ฒ๊น
์ ์ํ ์์ธํ ์์
๋ก๊น
- **์ค๋ฅ ์ฒ๋ฆฌ**: ์์ธํ ์ค๋ฅ ๋ฉ์์ง์ ํจ๊ป ๊ฐ๋ ฅํ ์ค๋ฅ ์ฒ๋ฆฌ
## ๐ ๋น ๋ฅธ ์์
### NPX ์ฌ์ฉ (๊ถ์ฅ)
```bash
npx maplestory-mcp-server --api-key YOUR_NEXON_API_KEY
```
### ์ค์น
```bash
npm install -g maplestory-mcp-server
```
### ๐ฅ๏ธ Claude Desktop๊ณผ ํจ๊ป ์ฌ์ฉ
#### 1. NEXON API ํค ์ค๋น
๋จผ์ [NEXON ์คํ API ํฌํธ](https://openapi.nexon.com/)์์ 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 ์๋ฒ ์ค์ ์ถ๊ฐ
์ค์ ํ์ผ์ ๋ค์ ๋ด์ฉ์ ์ถ๊ฐํ๊ฑฐ๋ ์์ ํ์ธ์:
```json
{
"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 ํธ์ถ ์์:
#### ์บ๋ฆญํฐ ์ ๋ณด ์กฐํ
```typescript
// ๊ธฐ๋ณธ ์บ๋ฆญํฐ ์ ๋ณด ์กฐํ
const basicInfo = await getCharacterBasicInfo({
characterName: "์ค์นด๋์์ฉ์ฌ"
});
// ์์ธํ ์บ๋ฆญํฐ ์คํฏ ์กฐํ
const stats = await getCharacterStats({
characterName: "์ค์นด๋์์ฉ์ฌ",
date: "2024-01-15"
});
// ์บ๋ฆญํฐ ์ฅ๋น ์กฐํ
const equipment = await getCharacterEquipment({
characterName: "์ค์นด๋์์ฉ์ฌ"
});
```
#### ์ ๋์จ ๋ฐ ๊ธธ๋ ๋ฐ์ดํฐ
```typescript
// ์ ๋์จ ์ ๋ณด ์กฐํ
const unionInfo = await getUnionInfo({
characterName: "์ค์นด๋์์ฉ์ฌ"
});
// ๊ธธ๋ ์ ๋ณด ์กฐํ
const guildInfo = await getGuildInfo({
guildName: "๊ธธ๋๋ช
",
worldName: "์ค์นด๋์"
});
```
#### ๋ญํน ๋ฐ ๋ฆฌ๋๋ณด๋
```typescript
// ์ข
ํฉ ๋ญํน ์กฐํ
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 ํฌํธ ์ ์**
- [https://openapi.nexon.com/](https://openapi.nexon.com/) ๋ฐฉ๋ฌธ
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 ํค
### ์ค์
```bash
git clone https://github.com/ljy9303/maplestory-mcp-server.git
cd maplestory-mcp-server
npm install
npm run build
```
### ๋น๋
```bash
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`: ์ํฐํฉํธ ๋ ๋ฒจ ๋ฐ ํฌ์ธํธ
### ์ค๋ฅ ์ฒ๋ฆฌ
๋ชจ๋ ๋๊ตฌ๋ ์ผ๊ด๋ ์ค๋ฅ ์ ๋ณด๋ฅผ ๋ฐํํฉ๋๋ค:
```typescript
{
success: false,
error: "์ค๋ฅ ์ค๋ช
",
metadata?: {
executionTime: number,
apiCalls: number
}
}
```
## ๐ค ๊ธฐ์ฌํ๊ธฐ
๊ธฐ์ฌ๋ฅผ ํ์ํฉ๋๋ค! ์์ธํ ๋ด์ฉ์ [๊ธฐ์ฌ ๊ฐ์ด๋](CONTRIBUTING.md)๋ฅผ ์ฝ์ด์ฃผ์ธ์.
### ๊ฐ๋ฐ ํ๋ก์ธ์ค
1. ์ ์ฅ์๋ฅผ ํฌํฌํฉ๋๋ค
2. ๊ธฐ๋ฅ ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค
3. ๋ณ๊ฒฝ์ฌํญ์ ์์ฑํฉ๋๋ค
4. ํ
์คํธ๋ฅผ ์ถ๊ฐํฉ๋๋ค
5. ๋ชจ๋ ํ
์คํธ๊ฐ ํต๊ณผํ๋์ง ํ์ธํฉ๋๋ค
6. ํ ๋ฆฌํ์คํธ๋ฅผ ์ ์ถํฉ๋๋ค
## ๐ ๋ผ์ด์ ์ค
์ด ํ๋ก์ ํธ๋ MIT ๋ผ์ด์ ์ค์ ๋ฐ๋ผ ๋ผ์ด์ ์ค๊ฐ ๋ถ์ฌ๋ฉ๋๋ค. ์์ธํ ๋ด์ฉ์ [LICENSE](LICENSE) ํ์ผ์ ์ฐธ์กฐํ์ธ์.
## ๐ ๊ฐ์ฌ์ ๋ง
- ๋ฉ์ดํ์คํ ๋ฆฌ ์คํ API๋ฅผ ์ ๊ณตํด ์ฃผ์ [NEXON](https://www.nexon.com/)
- MCP ์ฌ์์ ์ ๊ณตํด ์ฃผ์ [Model Context Protocol](https://modelcontextprotocol.io/)
- Claude ๋ฐ MCP ๋๊ตฌ๋ฅผ ์ ๊ณตํด ์ฃผ์ [Anthropic](https://www.anthropic.com/)
## ๐ง ๋ฌธ์ ํด๊ฒฐ
### ์ผ๋ฐ์ ์ธ ๋ฌธ์ ๋ค
#### 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 ํฌํธ](https://openapi.nexon.com/)์์ 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. ์์ธํ ๋ก๊ทธ ํ์ธ
```bash
npx mcp-maple --debug --api-key YOUR_API_KEY
```
#### 2. ์ฐ๊ฒฐ ํ
์คํธ
Claude Desktop์์ ๋ค์๊ณผ ๊ฐ์ด ์
๋ ฅํ์ฌ ์ฐ๊ฒฐ ์ํ๋ฅผ ํ์ธ:
```
๋ฉ์ดํ์คํ ๋ฆฌ API ์ฐ๊ฒฐ ์ํ๋ฅผ ํ์ธํด์ค
```
#### 3. ์ค์ ํ์ผ ๊ฒ์ฆ
JSON ํ์์ด ์ฌ๋ฐ๋ฅธ์ง ์จ๋ผ์ธ JSON ๊ฒ์ฆ๊ธฐ์์ ํ์ธํ์ธ์.
### ์๋ ค์ง ์ ํ ์ฌํญ
- **API ํธ์ถ ์ ํ**: ํ๋ฃจ 500ํ, ์ด๋น 1ํ
- **๋ฐ์ดํฐ ๊ฐฑ์ **: ์บ๋ฆญํฐ ์ ๋ณด๋ ๋งค์ผ ์ค์ 8์๊ฒฝ ์
๋ฐ์ดํธ
- **์ง์ ์๋**: ์ผ๋ถ ํ
์คํธ ์๋ฒ๋ ํน์ ์๋๋ ์ง์๋์ง ์์ ์ ์์
## ๐ ์ง์
- **์ด์**: [GitHub Issues](https://github.com/ljy9303/maplestory-mcp-server/issues)
- **๋ฌธ์**: [API ์ฐธ์กฐ](docs/API_REFERENCE.md)
- **์์**: [์ฌ์ฉ ์์](docs/EXAMPLES.md)
## ๐ ๊ด๋ จ ํ๋ก์ ํธ
- [MCP TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk)
- [Claude Desktop](https://claude.ai/desktop)
- [NEXON ์คํ API](https://openapi.nexon.com/)
---
๋ฉ์ดํ์คํ ๋ฆฌ ์ปค๋ฎค๋ํฐ๋ฅผ ์ํด โค๏ธ๋ก ์ ์๋์์ต๋๋ค