Korea Stats MCP
by Dayoooun
README.md
# ๐ฐ๐ท Korea Stats MCP
[](https://opensource.org/licenses/MIT)
[](https://modelcontextprotocol.io/)
[](https://korea-stats-mcp.vercel.app/)
[](https://www.npmjs.com/package/@kimdayoun/korea-stats-mcp)
> **์ด ์ ์ฅ์๊ฐ ์๋ณธ์
๋๋ค.** ์ ๋ณธ: https://github.com/Dayoooun/korea-stats-mcp
> npm ๋ฐฐํฌ๋ณธ์ **`@kimdayoun/korea-stats-mcp`** ํ๋๋ฟ์
๋๋ค.
> `kosis-mcp` ๋ฑ ์ค์ฝํ ์๋ ๋๋ช
ํจํค์ง๋ ์ด ํ๋ก์ ํธ์ ๋ฌด๊ดํ ์ 3์ ๋ฐฐํฌ๋ณธ์
๋๋ค.
> **์์ฐ์ด๋ก KOSIS ํต๊ณ๋ฅผ ์กฐํํ๋ MCP ์๋ฒ**
ํต๊ณ์ฒญ KOSIS OpenAPI ๊ธฐ๋ฐ์ MCP(Model Context Protocol) ์๋ฒ์
๋๋ค.
Claude Code์ Codex์์ **์์ฐ์ด๋ก ํ๊ตญ ํต๊ณ ๋ฐ์ดํฐ**๋ฅผ ๊ฒ์ํ๊ณ ๋ถ์ํ ์ ์์ต๋๋ค.
**์๊ฒฉ ์๋ฒ URL:** `https://korea-stats-mcp.vercel.app/mcp`
**๐ฆ ๋ก์ปฌ ์ค์น:**
```bash
npx -y @kimdayoun/korea-stats-mcp
```
MCP ํด๋ผ์ด์ธํธ ์ค์ :
```json
{
"mcpServers": {
"korea-stats": {
"command": "npx",
"args": ["-y", "@kimdayoun/korea-stats-mcp"]
}
}
}
```
---
## ๐ฏ ์ ๋ง๋ค์๋์?
AI์๊ฒ **"ํ๊ตญ ์ธ๊ตฌ๊ฐ ๋ช ๋ช
์ด์ผ?"** ๋ผ๊ณ ๋ฌผ์ผ๋ฉด, AI๋ ํ์ต ๋ฐ์ดํฐ์ ์ค๋๋ ์ ๋ณด๋ฅผ ๋ตํฉ๋๋ค.
Korea Stats MCP๋ฅผ ์ฐ๊ฒฐํ๋ฉด **์ค์๊ฐ ๊ณต์ ํต๊ณ**๋ฅผ ์กฐํํด์ ์ ํํ ๋ต๋ณ์ ์ ๊ณตํฉ๋๋ค.
| Before (MCP ์์ด) | After (Korea Stats MCP ์ฐ๊ฒฐ) |
| -------------------------------------- | ------------------------------------------------ |
| Q: ํ๊ตญ ์ธ๊ตฌ๊ฐ ๋ช ๋ช
์ด์ผ? | Q: ํ๊ตญ ์ธ๊ตฌ๊ฐ ๋ช ๋ช
์ด์ผ? |
| A: 2023๋
๊ธฐ์ค ์ฝ 5,100๋ง ๋ช
์
๋๋ค. โ | A: 2024๋
ํ๊ตญ์ ์ด์ธ๊ตฌ๋ 51,712,619๋ช
์
๋๋ค. โ
|
---
## โจ ์ฃผ์ ๊ธฐ๋ฅ
| ๊ธฐ๋ฅ | ์ค๋ช
|
| ---------------- | ------------------------------------------------------------- |
| **๋น ๋ฅธ ์กฐํ** | "์ค์
๋ฅ ", "GDP", "์ถ์ฐ์จ", "๋ฏธ์ธ๋จผ์ง" ๋ฑ ์ฌ์ ์ค์ ํค์๋ ์กฐํ |
| ๐ **์ถ์ธ ๋ถ์** | ์ต๊ทผ N๋
๊ฐ ๋ฐ์ดํฐ ์ถ์ด ๋ฐ ๋ณํ์จ ๋ถ์ |
| **ํต๊ณ ๊ฒ์** | KOSIS OpenAPI ๊ณต๊ฐ ํต๊ณํ์์ ํค์๋ ๊ฒ์ |
| ๐ **๋น๊ต ๋ถ์** | ์ฐ๋๋ณ, ์ง์ญ๋ณ, ํญ๋ชฉ๋ณ ํต๊ณ ๋น๊ต |
| **์ง์ญ๋ณ ์กฐํ** | ๊ณต์ ๋ถ๋ฅ์ ๋ฐ๋ฅธ ์๋ยท์๊ตฐ๊ตฌ ์กฐํ, ํต๊ณํ๋ณ ์ง์ ๋ฒ์ ํ์ธ |
---
## ๐ ์ฌ์ฉ ๋ฐฉ๋ฒ
### ๋ฐฉ๋ฒ 1: ์๊ฒฉ ์๋ฒ ์ฌ์ฉ (์ค์น ์์ด ๋ฐ๋ก ์ฌ์ฉ) โญ ๊ถ์ฅ
์ค์น ์์ด ์๊ฒฉ MCP ์๋ฒ์ ๋ฐ๋ก ์ฐ๊ฒฐํ ์ ์์ต๋๋ค.
#### Claude Code
```bash
claude mcp add --scope user --transport http korea-stats https://korea-stats-mcp.vercel.app/mcp
claude mcp get korea-stats
```
#### Codex
```bash
codex mcp add korea-stats --url https://korea-stats-mcp.vercel.app/mcp
codex mcp get korea-stats
```
๋ ํด๋ผ์ด์ธํธ ๋ชจ๋ ๋ค์ดํฐ๋ธ HTTP ์ฐ๊ฒฐ์ ์ฌ์ฉํ๋ฏ๋ก `mcp-remote`๋ ์ฌ์ฉ์ KOSIS ํค๊ฐ ํ์ํ์ง ์์ต๋๋ค. ๋ฑ๋ก ํ ์ Claude Code ๋๋ Codex ์ธ์
์์ MCP ๋๊ตฌ๋ฅผ ํธ์ถํ์ธ์. ์ด๋ฏธ ๊ฐ์ ์ด๋ฆ์ ์๋ฒ๊ฐ ๋ฑ๋ก๋ผ ์๋ค๋ฉด ๊ธฐ์กด ์ค์ ์ ๋จผ์ ํ์ธํ๊ณ ๋ฎ์ด์ฐ์ง ๋ง์ธ์.
๊ฐ์ URL์ ์ด๋ฏธ ์ฌ์ฉ ์ค์ด๋ผ๋ฉด ์ญ์ ยท์ฌ๋ฑ๋ก์ ํ์๊ฐ ์๋๋๋ค. ๋๊ตฌ ๋ชฉ๋ก์ด ๊ฐฑ์ ๋์ง ์๋ ํด๋ผ์ด์ธํธ์์๋ ์๋ก๊ณ ์นจ ๋๋ ์ฌ์ฐ๊ฒฐํ์ธ์.
#### ํ์ฌ ํ์ธ๋ ์ ํ (2026-09-10)
- ๊ณต๊ฐ ์๋ฒ์ ๊ตฌยท๊ตฐ ์กฐํ์ ์ง์ญ ๊ตฌ๋ถ์ ์ค์ ํธ์ถ๋ก ํ์ธํ์ง๋ง, ๋ชจ๋ ํต๊ณํ๊ฐ ๋ชจ๋ ์๊ตฐ๊ตฌ๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ ์๋๋๋ค.
- ๋
๋ฆฝ ๊ฒ์ฆ์์ `get_indicator`์ ์งํ ์ ์ ์กฐํ๊ฐ KOSIS ์ค๋ฅ `30`์ผ๋ก ์คํจํ์ต๋๋ค. ์งํ ๊ฒ์ ์ฑ๊ณต์ด ๋ชจ๋ ์งํ ์์ธยท๊ฐ ์กฐํ์ ์ฑ๊ณต์ ์๋ฏธํ์ง ์์ต๋๋ค.
- `get_indicator`, `search_businesses`, `get_microdata_info`์ ๊ณต๊ฐ `tools/list`์์ ์
๋ ฅ ์คํค๋ง์ `properties`๊ฐ ๋น์ด ์๋ ๋ฌธ์ ๊ฐ ํ์ธ๋์ต๋๋ค. ์ธ์๋ฅผ ์ง์ ์ง์ ํ ํธ์ถ์ด ์ฑ๊ณตํ๋๋ผ๋ AI์ ์๋ ๋๊ตฌ ์ ํยท์ธ์ ๊ตฌ์ฑ๊น์ง ๋ณด์ฅํ์ง ์์ต๋๋ค.
- MDIS๋ ๊ณต๊ฐ ์นดํ๋ก๊ทธยท๋ฉํ๋ฐ์ดํฐ ์กฐํ ๋ฒ์์ด๋ฉฐ, ์ฐ๊ตฌ์ฉ ์์๋ฃ ๋ค์ด๋ก๋ยท๋ก๊ทธ์ธยท๋ณ๋ ์ ๊ทผ ์น์ธ์ ๋์ ํ์ง ์์ต๋๋ค.
- ๊ณต๊ฐ ์๋ฒ ๋ฐฐํฌ, GitHub ์์ค, npm ๊ฒ์ ๋ฒ์ ์ ๋ณ๊ฐ์
๋๋ค. ์ด ์์ค์ ๊ฐ์ ์ฌํญ์ด npm ์ต์ ๋ฐฐํฌ๋ณธ์๋ ๋ชจ๋ ํฌํจ๋๋ค๊ณ ๊ฐ์ ํ์ง ๋ง์ธ์.
---
### ๋ฐฉ๋ฒ 2: ๋ก์ปฌ ์ค์น
์ง์ ์๋ฒ๋ฅผ ์คํํ๊ณ ์ถ๋ค๋ฉด ๋ก์ปฌ์ ์ค์นํ ์ ์์ต๋๋ค.
#### 1๋จ๊ณ: ์ค์น
```bash
# ์ ์ฅ์ ํด๋ก
git clone https://github.com/Dayoooun/korea-stats-mcp.git
cd korea-stats-mcp
# ์์กด์ฑ ์ค์น (pnpm ๊ถ์ฅ)
pnpm install
# ๋น๋
pnpm run build
```
#### 2๋จ๊ณ: AI ๋๊ตฌ์ ์ฐ๊ฒฐ
**Claude Code**:
```bash
claude mcp add --scope user --transport stdio korea-stats-local -- node /์ ๋๊ฒฝ๋ก/korea-stats-mcp/dist/index.js
```
**Codex**:
```bash
codex mcp add korea-stats-local -- node /์ ๋๊ฒฝ๋ก/korea-stats-mcp/dist/index.js
```
์ค์ ๋น๋ ํ์ผ์ ์ ๋๊ฒฝ๋ก๋ฅผ ์ฌ์ฉํ์ธ์. ์๊ฒฉ ์ฐ๊ฒฐ๋ง ํ์ํ๋ฉด ๋ก์ปฌ ๋ฑ๋ก์ ํ์ง ์์ต๋๋ค. npm ๊ฒ์๋ณธ๊ณผ ์ด ์ ์ฅ์์ ๋น๋ยท์ด์ ๋ฐฐํฌ ๋ฒ์ ์ ๋ณ๊ฐ์ด๋ฏ๋ก, ์ ๋ฒ์ ์ npm์ ๊ฒ์ํ๋ค๊ณ ๊ฐ์ ํ์ง ๋ง์ธ์.
---
### ๋ฐฉ๋ฒ 3: Kakao PlayMCP
[Kakao PlayMCP](https://playmcp.com/)์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค.
1. PlayMCP ์ฌ์ดํธ ์ ์
2. **korea-stats-mcp** ๊ฒ์
3. ํด๋ฆญ ํ ๋ฒ์ผ๋ก ์ฐ๊ฒฐ ์๋ฃ!
---
## ๐ฌ ์ฌ์ฉ ์์
์ฐ๊ฒฐ ํ AI์๊ฒ ์์ฐ์ด๋ก ์ง๋ฌธํ์ธ์:
```
"ํ๊ตญ ์ธ๊ตฌ๊ฐ ๋ช ๋ช
์ด์ผ?"
"์์ธ ์ค์
๋ฅ ์๋ ค์ค"
"์ต๊ทผ 10๋
์ถ์ฐ์จ ์ถ์ด ๋ณด์ฌ์ค"
"GDP ์ฑ์ฅ๋ฅ ์?"
"๋ถ์ฐ๊ณผ ๋๊ตฌ ์ธ๊ตฌ ๋น๊ตํด์ค"
"์์ธ ์ํํธ๊ฐ๊ฒฉ ์๋ ค์ค"
"๊ฒฝ๊ธฐ๋ GRDP ์ผ๋ง์ผ?"
"ํ๊ท ์๊ธ ์๋ ค์ค"
"2024๋
10์ ์ถ์์์ ์๋ ค์ค" # ์๋ณ ๋ฐ์ดํฐ
"์์ธ ์ ์ธ๊ฐ๊ฒฉ" # ๐ ์ ์ธ
"๊ฒฝ๊ธฐ ์๋์ฐจ ๋ฑ๋ก๋์" # ๐ ์๋์ฐจ
"๋ถ์ฐ ๋ฒ์ฃ์จ" # ๐ ๋ฒ์ฃ
"์ธ๋๊ด๊ด๊ฐ ๋ช ๋ช
์ด์ผ?"
"๊ตํต์ฌ๊ณ ๋ฐ์๊ฑด์" # ๐ ๊ตํต์ฌ๊ณ
"์์ธ ์์ฌ์ ์๋ ค์ค" # ๐ ์๋ฃ
```
**์ค์ ์๋ต ์์:**
```
โ
"2025๋
ํ๊ตญ์ ์ฃผ๋ฏผ๋ฑ๋ก ์ด์ธ๊ตฌ๋ 51,117,378๋ช
์
๋๋ค."
โ
"2024๋
์์ธ์ ์ค์
๋ฅ ์ 3%์
๋๋ค."
โ
"2025๋
3์ ์์ธ์ ์ํํธ๋งค๋งค๊ฐ๊ฒฉ์ง์๋ 99.687 (2021.6=100)์
๋๋ค."
โ
"2025๋
ํ๊ตญ์ ์์ฉ๊ทผ๋ก์ ์ํ๊ท ์๊ธ์ 4,094,615์์
๋๋ค."
โ
"2024๋
๊ฒฝ๊ธฐ์ ์ง์ญ๋ด์ด์์ฐ(๋ช
๋ชฉ)์ 651,417,234๋ฐฑ๋ง์์
๋๋ค."
โ
"2025๋
3์ ์์ธ์ ์ฃผํ์ ์ธ๊ฐ๊ฒฉ์ง์๋ 94.134 (2021.6=100)์
๋๋ค."
โ
"2024๋
์์ธ์ ์๋์ฐจ ๋ฑ๋ก๋์๋ 3,176,933๋์
๋๋ค."
โ
"2024๋
๋ถ์ฐ์ ์ธ๊ตฌ ์ฒ๋ช
๋น ๋ฒ์ฃ๋ฐ์๊ฑด์๋ 34.4๊ฑด์
๋๋ค."
โ
"2025๋
11์ ํ๊ตญ์ ์ธ๋๊ด๊ด๊ฐ์๋ 1,596,939๋ช
์
๋๋ค."
โ
"2024๋
ํ๊ตญ์ ๊ตํต์ฌ๊ณ ๋ฐ์๊ฑด์๋ 168,585๊ฑด์
๋๋ค."
โ
"2024๋
์์ธ์ ์๋ฃ๊ธฐ๊ด ์ข
์ฌ ์์ฌ์๋ 43,547๋ช
์
๋๋ค."
```
---
## ๋น ๋ฅธ ์กฐํ ํค์๋
ํ์ฌ ์ฌ์ ์ค์ ์ ๋์์ด๋ฅผ ํฌํจํด 91๊ฐ ํค์๋์
๋๋ค. ์๋ ๋ชฉ๋ก์ ๋น ๋ฅธ ์กฐํ ์์์ด๋ฉฐ ์ ์ฒด ์ง์ ํต๊ณํ์ ์ํ์ด ์๋๋๋ค. ๋ค๋ฅธ ํต๊ณ๋ `search_statistics`์ ๊ณต์ ๋ถ๋ฅ ๋ฉํ๋ฐ์ดํฐ๋ก ํ์ํ์ธ์.
### ์ธ๊ตฌ/์ถ์ฐ/์ฌ๋ง
| ํค์๋ | ์ค๋ช
| ์ฃผ๊ธฐ |
| ------------------------------------------ | ---------- | ---------- |
| `์ธ๊ตฌ`, `์ด์ธ๊ตฌ` | ์ด์ธ๊ตฌ์ | ์ฐ |
| `์ถ์ฐ์จ`, `ํฉ๊ณ์ถ์ฐ์จ` | ํฉ๊ณ์ถ์ฐ์จ | ์ฐ |
| `์ถ์์์`, `์ถ์์`, `์กฐ์ถ์๋ฅ ` | ์ถ์ ํต๊ณ | ์ฐ/๋ถ๊ธฐ/์ |
| `์ฌ๋ง์์`, `์ฌ๋ง์`, `์กฐ์ฌ๋ง๋ฅ `, `์ฌ๋ง๋ฅ ` | ์ฌ๋ง ํต๊ณ | ์ฐ/๋ถ๊ธฐ/์ |
| `์์ฐ์ฆ๊ฐ`, `์์ฐ์ฆ๊ฐ์จ` | ์์ฐ์ฆ๊ฐ | ์ฐ/๋ถ๊ธฐ/์ |
| `๊ธฐ๋์๋ช
`, `๊ธฐ๋์ฌ๋ช
`, `ํ๊ท ์๋ช
` | ๊ธฐ๋์๋ช
| ์ฐ |
### ํผ์ธ/์ดํผ
| ํค์๋ | ์ค๋ช
| ์ฃผ๊ธฐ |
| -------------------------------- | --------- | ---------- |
| `ํผ์ธ์จ`, `ํผ์ธ๊ฑด์`, `์กฐํผ์ธ์จ` | ํผ์ธ ํต๊ณ | ์ฐ/๋ถ๊ธฐ/์ |
| `์ดํผ์จ`, `์ดํผ๊ฑด์`, `์กฐ์ดํผ์จ` | ์ดํผ ํต๊ณ | ์ฐ/๋ถ๊ธฐ/์ |
### ๊ณ ์ฉ/๋
ธ๋
| ํค์๋ | ์ค๋ช
| ์ฃผ๊ธฐ |
| ---------------------------------------- | ------------------------------- | ---- |
| `์ค์
๋ฅ ` | ์ค์
๋ฅ (์๋๋ณ ์ง์) | ์ฐ |
| `๊ณ ์ฉ๋ฅ ` | ๊ณ ์ฉ๋ฅ (์๋๋ณ ์ง์) | ์ฐ |
| `์ทจ์
์์`, `์ทจ์
์` | ์ทจ์
์ ์ | ์ฐ |
| `์ค์
์์`, `์ค์
์` | ์ค์
์ ์ | ์ฐ |
| `๊ฒฝ์ ํ๋์ธ๊ตฌ`, `๋น๊ฒฝ์ ํ๋์ธ๊ตฌ` | ๊ฒฝ์ ํ๋์ธ๊ตฌ | ์ฐ |
| `์๊ธ`, `์ํ๊ท ์๊ธ`, `์๊ธ`, `ํ๊ท ์๊ธ` | ์์ฉ๊ทผ๋ก์ ์ํ๊ท ์๊ธ (์๋๋ณ) | ์ฐ |
### ๊ฒฝ์
| ํค์๋ | ์ค๋ช
| ์ฃผ๊ธฐ |
| -------------------------------------- | --------------------- | ----- |
| `GDP`, `๊ตญ๋ด์ด์์ฐ` | GDP (๊ตญ๋ด์ด์์ฐ) | ์ฐ |
| `GRDP`, `์ง์ญ๋ด์ด์์ฐ` | ์ง์ญ๋ด์ด์์ฐ (์๋๋ณ) | ์ฐ |
| `๊ฒฝ์ ์ฑ์ฅ๋ฅ `, `์ฑ์ฅ๋ฅ `, `GDP์ฑ์ฅ๋ฅ ` | ๊ฒฝ์ ์ฑ์ฅ๋ฅ | ์ฐ |
| `๋ฌผ๊ฐ`, `์๋น์๋ฌผ๊ฐ`, `์๋น์๋ฌผ๊ฐ์ง์` | ์๋น์๋ฌผ๊ฐ (์๋๋ณ) | ์ฐ/์ |
### ๋ฌด์ญ
| ํค์๋ | ์ค๋ช
| ์ฃผ๊ธฐ |
| ---------------- | -------- | ---- |
| `์์ถ์ก`, `์์ถ` | ์์ถ์ก | ์ฐ |
| `์์
์ก`, `์์
` | ์์
์ก | ์ฐ |
| `๋ฌด์ญ์์ง` | ๋ฌด์ญ์์ง | ์ฐ |
### ๋ถ๋์ฐ
| ํค์๋ | ์ค๋ช
| ์ฃผ๊ธฐ |
| ---------------------------------------------------------- | --------------------------- | ---- |
| `์ฃผํ๊ฐ๊ฒฉ`, `์ฃผํ๋งค๋งค๊ฐ๊ฒฉ`, `์ฃผํ๊ฐ๊ฒฉ์ง์` | ์ฃผํ๋งค๋งค๊ฐ๊ฒฉ์ง์ (์๋๋ณ) | ์ |
| `์ํํธ`, `์ํํธ๊ฐ๊ฒฉ`, `์ํํธ๋งค๋งค๊ฐ๊ฒฉ`, `์ํํธ๊ฐ๊ฒฉ์ง์` | ์ํํธ๋งค๋งค๊ฐ๊ฒฉ์ง์ (์๋๋ณ) | ์ |
| `์ ์ธ`, `์ ์ธ๊ฐ๊ฒฉ`, `์ ์ธ๊ฐ๊ฒฉ์ง์`, `์ฃผํ์ ์ธ` | ์ฃผํ์ ์ธ๊ฐ๊ฒฉ์ง์ (์๋๋ณ) | ์ |
| `์ํํธ์ ์ธ`, `์ํํธ์ ์ธ๊ฐ๊ฒฉ` | ์ํํธ์ ์ธ๊ฐ๊ฒฉ์ง์ (์๋๋ณ) | ์ |
### ์๋์ฐจ/๊ตํต ๐
| ํค์๋ | ์ค๋ช
| ์ฃผ๊ธฐ |
| ------------------------------------ | ------------------------ | ---- |
| `์๋์ฐจ`, `์๋์ฐจ๋ฑ๋ก`, `์๋์ฐจ๋์` | ์๋์ฐจ ๋ฑ๋ก๋์ (์๋๋ณ) | ์ฐ |
### ๋ฒ์ฃ/์น์ ๐
| ํค์๋ | ์ค๋ช
| ์ฃผ๊ธฐ |
| ---------------------------- | --------------------------------- | ---- |
| `๋ฒ์ฃ`, `๋ฒ์ฃ์จ`, `๋ฒ์ฃ๋ฐ์` | ์ธ๊ตฌ ์ฒ๋ช
๋น ๋ฒ์ฃ๋ฐ์๊ฑด์ (์๋๋ณ) | ์ฐ |
### ๊ด๊ด
| ํค์๋ | ์ค๋ช
| ์ฃผ๊ธฐ |
| -------------------------------- | ------------------- | ---- |
| `๊ด๊ด๊ฐ`, `์ธ๋๊ด๊ด๊ฐ`, `์
๊ตญ์` | ์ธ๋๊ด๊ด๊ฐ ์
๊ตญ์์ | ์ |
### ๊ตํต/์์ ๐
| ํค์๋ | ์ค๋ช
| ์ฃผ๊ธฐ |
| -------------------------------------- | -------------------------- | ---- |
| `๊ตํต์ฌ๊ณ `, `๊ตํต์ฌ๊ณ ๋ฐ์`, `์ฌ๊ณ ๊ฑด์` | ๊ตํต์ฌ๊ณ ๋ฐ์๊ฑด์ (์๋๋ณ) | ์ฐ |
### ์๋ฃ/๊ฑด๊ฐ
| ํค์๋ | ์ค๋ช
| ์ฃผ๊ธฐ |
| ---------------------------- | ----------------------------- | ---- |
| `์์ฌ`, `์์ฌ์`, `์๋ฃ์ธ๋ ฅ` | ์๋ฃ๊ธฐ๊ด ์ข
์ฌ ์์ฌ์ (์๋๋ณ) | ์ฐ |
### ๋๊ธฐํ๊ฒฝ ๐
| ํค์๋ | ์ค๋ช
| ์ฃผ๊ธฐ |
| --------------------------------------------- | ------------------------------- | ---- |
| `๋ฏธ์ธ๋จผ์ง`, `PM2.5`, `์ด๋ฏธ์ธ๋จผ์ง`, `๋๊ธฐ์ค์ผ` | ์ด๋ฏธ์ธ๋จผ์ง(PM2.5) ๋๋ (์๋๋ณ) | ์ |
| `PM10` | ๋ฏธ์ธ๋จผ์ง(PM10) ๋๋ (์๋๋ณ) | ์ |
---
## ๐บ๏ธ ์ง์ญ๋ณ ์กฐํ
์ง์ญ ์ง์ ๋ฒ์๋ ์ ํํ ํต๊ณํ์ ๊ณต์ ๋ถ๋ฅ์ ๋ฐ๋ผ ๊ฒฐ์ ๋ฉ๋๋ค. ์๊ตฐ๊ตฌ๋ ITM ๋ฉํ๋ฐ์ดํฐ์ ์ค์ ์๋ต์ ๋ถ๋ฅ์ถ์ ํ์ธํด ์กฐํํ๋ฉฐ, ์ฝ๋ ๊ธธ์ด๋ก ์ง์ญ์ ์ถ์ธกํ์ง ์์ต๋๋ค. ๋๋ช
์ด๊ฑฐ๋ ์์ฒญํ ํ์ ์ง์ญ์ ํ์ธํ ์ ์์ผ๋ฉด ์์ ์ง์ญยท์ ๊ตญ ๊ฐ์ผ๋ก ๋์ ๋ตํ์ง ์์ต๋๋ค.
KOSIS์ ์ค๊ฐ ์ ์ด๋ฆ์ด ๋น ์ง `์์์ ์ํต๊ตฌ` ๊ฐ์ ์์ฒญ์, ์ค์ KOSIS ๋ถ๋ฅ์ถยท์ฝ๋๊ฐ ํ์ธ๋ ๋จ์ผ ํ๋ณด์ ํํด ๊ณต์ ์๊ถ์ ๋ณด์ ์๊ตฐ๊ตฌ ์ ์ฒด ์ด๋ฆ์ ํ ๋ฒ ๋์กฐํฉ๋๋ค. ์๊ตฐ๊ตฌ ์ฝ๋ยท์๋ ์ฝ๋ยท๊ณต์ ์๋๋ช
ยท์ ์ฒด ์ด๋ฆ์ด ์ ํํ ๋ง์์ผ ๋ตํฉ๋๋ค. ํ์ธ ์๋ฃ๋ ์ด์์ ํค๊ฐ ์์ผ๋ฉด ๊ฒ์ฆ์ ๋ณด๋ฅํ๋ฉฐ, ํ์ฌ ๋ช
์นญ์ ์์์ ํ์ธํ ๊ฒ์ด ๊ณผ๊ฑฐ ํ์ ๊ฒฝ๊ณ์ ๋์ผ์ฑ์ ์
์ฆํ์ง๋ ์์ต๋๋ค. ์ด ํ๊ณ๋ ์๋ต์ `caveats`์๋ ๋จ๊น๋๋ค.
**์๋ ์
๋ ฅ ์์(์ง์ ๋ฒ์์ ์ํ์ด ์๋๋๋ค):**
์ ๊ตญ, ์์ธ, ๋ถ์ฐ, ๋๊ตฌ, ์ธ์ฒ, ๊ด์ฃผ, ๋์ , ์ธ์ฐ, ์ธ์ข
, ๊ฒฝ๊ธฐ, ๊ฐ์, ์ถฉ๋ถ, ์ถฉ๋จ, ์ ๋ถ, ์ ๋จ, ๊ฒฝ๋ถ, ๊ฒฝ๋จ, ์ ์ฃผ
**์์:**
```
"์์ธ ์ธ๊ตฌ"
"๋ถ์ฐ ์ค์
๋ฅ "
"์ ์ฃผ ์ถ์ฐ์จ"
"๊ฒฝ๊ธฐ๋ ๊ณ ์ฉ๋ฅ "
"์์ธ ์ํํธ๊ฐ๊ฒฉ"
"๊ฒฝ๊ธฐ GRDP"
"์ธ์ฐ ์๊ธ"
"์์ธ ์ ์ธ๊ฐ๊ฒฉ"
"๊ฒฝ๊ธฐ ์๋์ฐจ"
"๋ถ์ฐ ๋ฒ์ฃ์จ"
"์์ธ ๊ตํต์ฌ๊ณ " # ๐ ๊ตํต์ฌ๊ณ
"๋ถ์ฐ ์์ฌ์" # ๐ ์๋ฃ
```
---
## ๐
์๋ณ/๋ถ๊ธฐ๋ณ ์กฐํ ๐
์ผ๋ถ ํต๊ณ๋ ์๋ณ ๋๋ ๋ถ๊ธฐ๋ณ ์กฐํ๊ฐ ๊ฐ๋ฅํฉ๋๋ค:
**์์:**
```
"2024๋
10์ ์ถ์์์" # ์๋ณ ์กฐํ
"2024๋
3๋ถ๊ธฐ ์ฌ๋ง์์" # ๋ถ๊ธฐ๋ณ ์กฐํ
"2025๋
1์ ์ฃผํ๊ฐ๊ฒฉ" # ์๋ณ ์กฐํ
```
**์ง์ ํต๊ณ:** ์ถ์์์, ์ฌ๋ง์์, ํผ์ธ๊ฑด์, ์ดํผ๊ฑด์, ์์ฐ์ฆ๊ฐ, ๋ฌผ๊ฐ, ์ฃผํ๊ฐ๊ฒฉ, ์ํํธ๊ฐ๊ฒฉ, ์ ์ธ๊ฐ๊ฒฉ, ๊ด๊ด๊ฐ
---
## ์ ๊ณต ๋๊ตฌ (๊ฐ๋ฐ๋ณธ 14๊ฐ)
์ด ๋ชฉ๋ก์ ํ์ฌ ์์ค ๊ธฐ์ค์
๋๋ค. ๊ณต๊ฐ ์๊ฒฉ ์๋ฒ์ npm ๋ฐฐํฌ๋ณธ์ ์ค์ ๋๊ตฌ๋ ํด๋น ๋ฐฐํฌ ๋ฒ์ ์ `tools/list`๋ก ํ์ธํ์ธ์. ํค ์๋ ๋ก์ปฌ ์คํ์ ๊ณต๊ฐ ์๊ฒฉ ๋ฐฐํฌ๋ณธ์ ์ด์ฉํ๋ฏ๋ก ์์ง ๋ฐฐํฌํ์ง ์์ ๋ก์ปฌ ๋ณ๊ฒฝ์ ์ ๊ณตํ์ง ์์ต๋๋ค.
### ํต์ฌ ๋๊ตฌ โญ
| ๋๊ตฌ | ์ค๋ช
| ์์ |
| ------------- | ------------------------- | ------------------------------------------------- |
| `quick_stats` | ์ฌ์ ์ค์ ํค์๋ ๋น ๋ฅธ ์กฐํ | "์ค์
๋ฅ ", "GDP", "๋ฏธ์ธ๋จผ์ง", "๊ตํต์ฌ๊ณ ", "์์ฌ์" |
| `quick_trend` | ์๊ณ์ด ์ถ์ธ ๋ถ์ | "์ถ์ฐ์จ 10๋
์ถ์ด" |
### ๊ณ ๊ธ ๋๊ตฌ
| ๋๊ตฌ | ์ค๋ช
|
| ---------------------------- | ----------------------------------------------------------------------------- |
| `search_statistics` | KOSIS ํต๊ณํ ํค์๋ ๊ฒ์ |
| `get_statistics_list` | ์ฃผ์ ๋ณ/๊ธฐ๊ด๋ณ ํต๊ณ ๋ชฉ๋ก ํ์ |
| `get_statistics_data` | ํน์ ํต๊ณํ ๋ฐ์ดํฐ ์กฐํ |
| `compare_statistics` | ์์ ๋ณ/ํญ๋ชฉ๋ณ ๋น๊ต ๋ถ์ |
| `analyze_time_series` | ์์ธ ์๊ณ์ด ๋ถ์ |
| `get_recommended_statistics` | ๋ถ์ผ๋ณ ์ถ์ฒ ํต๊ณ |
| `get_table_info` | ๊ณต์ ๋ถ๋ฅยทํญ๋ชฉ ๋ฉํ๋ฐ์ดํฐ์ ๊ทผ๊ฑฐ๋ฅผ ๋ฐ์ดํธ ์ ํ ๋ด์์ ํ์ด์ง๋ณ ์กฐํ |
| `search_indicators` | ๊ณต์ ์งํ ์ด๋ฆยทIDยท์๋ก์ฃผ๊ธฐ ๊ฒ์ |
| `get_indicator` | ๊ฒ์ํ ์งํ์ ๊ณต์ ์ ์ ๋๋ ์์๋ฃ ๊ฐ ์กฐํ |
| `search_businesses` | ๊ณต๊ณต ์๊ถ์ ๋ณด์ ์ง์ญยท์
์ข
๋ณ ์ฌ์
์ฒด ์์๋ฃ๋ฅผ ํ์ด์ง๋ณ ์ทจ๋ |
| `search_microdata` | MDIS ๊ณต๊ฐ ์กฐ์ฌ ์นดํ๋ก๊ทธ ๊ฒ์ |
| `get_microdata_info` | ์ผ๋ฐ ์กฐ์ฌ ์์ธ ๋๋ ์๋น์ค ์ ํ๋ณ ๊ณต๊ฐ ๋ณ์ยท์ฝ๋๋ถ ํ์ธ๊ณผ ๊ณต์ ์ด์ฉ ๊ฒฝ๋ก ์๋ด |
### ์๋ฃ ํด์๊ณผ ์ด์ฉ ๊ฒฝ๊ณ
- KOSIS ๋ถ๋ฅ์ฝ๋์ ์๊ถ API์ ํ์ ๊ตฌ์ญ ์ฝ๋๋ ์๋ก ๋ค๋ฅผ ์ ์์ต๋๋ค. ๊ณต๊ธ์๋ณ ๊ณต์ ์ฝ๋๋ฅผ ๊ตฌ๋ถํ์ธ์.
- ์ถ์ฒยท์กฐํ ์๊ฐยท์๋ ๊ธฐ๊ฐยท๋จ์ยท์๋ณ์์ ๊ฒ์ฆ ๋ฒ์๋ฅผ ํจ๊ป ํ์ธํ์ธ์. ๋๋ฝ๋ ๊ทผ๊ฑฐ๋ `unknown`, `partial`, `unverified` ๋ฑ์ ํ์๋ก ๊ตฌ๋ถํ๋ฉฐ ๋จ์ยท๊ฒฐ์ธก๊ฐยท๋ฒ์ฃผ ์๋ฏธ๋ฅผ ์์๋ก ์ฑ์ฐ์ง ์์ต๋๋ค.
- ์ฐยท์ยท๋ถ๊ธฐ ๋ฒ์ ์กฐํ๋ ํญ๋ชฉยท๋ถ๋ฅ ์กฐํฉ๋ณ ์์ยท์ข
๋ฃ ์์ ๊ณผ ๋ด๋ถ ๋๋ฝ์ ๊ฒ์ฌํฉ๋๋ค. ๊ธฐ๊ฐ ๊ทผ๊ฑฐ๊ฐ ๋ถ์์ ํ๋ฉด `response_incomplete`๋ก ์คํจํ๋ฉฐ ๋ฐํ ๊ฐ๋ฅํ ์๋ณธ์ `data[].raw`์ ๋จ๊น๋๋ค. ์ผ์ ํ ์ฃผ๊ธฐ๋ฅผ ์
์ฆํ ์ ์๋ ์ฃผ๊ธฐ๋ ๋ฏธ๊ฒ์ฆ์ผ๋ก ํ์ํฉ๋๋ค.
- ๊ธฐ๊ฐ์ ์ง์ ํ์ง ์๊ฑฐ๋ `recentCount`๋ง ์ฌ์ฉํ ์๋ต์ ์ต์ ์ฑยท์ ์ฒด์ฑ์ ์
์ฆํ์ง ๋ชปํ๋ฏ๋ก ๋ฏธ๊ฒ์ฆ์
๋๋ค. ์์ฒญํ ์ต๊ทผ ๊ด์ธก ์๋ณด๋ค ์ ๊ฑฐ๋ ๊ด์ธก ์๋ณ์๊ฐ ์ค๋ณต๋๋ฉด ์คํจํฉ๋๋ค.
- `get_statistics_data`์ ์๋์ด ๋ช
์๋ ์ฐยท์ยท๋ถ๊ธฐ ๋ฒ์๋ `pageSize`(๊ธฐ๋ณธ 50, ์ต๋ 200)์ `cursor`๋ก ์ด์ด๋ฐ์ต๋๋ค. ๊ณต๊ธ์ ์๋ต 4 MiB ์ด๊ณผ ์ ๊ธฐ๊ฐ์ ๋ถํ ํ๋ฉฐ, ๋จ์ผ ๊ธฐ๊ฐ๋ ์ด๊ณผํ๋ฉด ์ ํ ์กฐ๊ฑด์ ์ขํ์ผ ํฉ๋๋ค. MCP ์๋ต์ 32 KiB ์ด๋ด์ด๋ฉฐ ์์ ๊ด์ธก ํ๋๋ฅผ ์์๋ก ์๋ฅด์ง ์์ต๋๋ค.
- ๊ณต์ ์ฝ๋์ `+` ๋ค์ค ์ ํ์๋ ๊ณต๊ธ์์ ๊ทธ๋๋ก ์ ๋ฌํ๋ฉฐ ๋จ์ผ ์ฝ๋๋ก ์ค์ธํ์ง ์์ต๋๋ค. ๋ค์ค ์ ํ ์๋ต์ `unverified`๋ก ํ์ํ๋ฉฐ, ํ์ด์ง ์ํ ์๋ฃ์ ๊ณต๊ธ์ ์ ์ฒด์ฑ ๊ฒ์ฆ์ ๋ณ๊ฐ์
๋๋ค.
- `hasMore`๊ฐ ์ฐธ์ด๋ฉด ์๋ ์กฐ๊ฑด ๊ทธ๋๋ก `nextCursor`๋ฅผ ๋๊ธฐ์ธ์. `partition_split` ์งํ ํ์ด์ง๋ 0ํ์ผ ์ ์์ต๋๋ค. ๋ง์ง๋ง ํ์ด์ง์ `completion: "complete"`๋ ์์ฒญ ๊ธฐ๊ฐ ์ํ ์๋ฃ์ด์ง ๊ณต๊ธ์ ์ ์ฒด ์๋ฃยท์ ์ฒด ์์ ์ ๋์ผ ์ค๋
์ท์ ์
์ฆํ ๊ฒ์ ์๋๋๋ค. ์ ํ์ด์ง๋ค์ ํฉ์ณ์ผ ์ ์ฒด ๋ฐํ ๊ด์ธก์ ์ป์ต๋๋ค.
- ์ด์ HTTP ์๋ฒ๋ 2.0.0์ผ๋ก ๋ฐฐํฌยท๊ฒ์ฆ๋์ต๋๋ค. npm ๊ฒ์๋ณธ์ ๋ณ๊ฐ์ด๋ฉฐ ์ ๋ฒ์ ๊ฒ์๊ฐ ์๋ฃ๋๋ค๋ ๋ป์ ์๋๋๋ค. ๊ธฐ์กด ํต๊ณ์๋ฃ `totalCount` ๋์ `returnedCount`ยท`emittedCount`ยท`aggregateRowCount`๋ฅผ ๊ตฌ๋ถํฉ๋๋ค.
- ๋ถ์ยท๋น๊ต์ ์ถ์ฒ ๋ชฉ๋ก์ ์์ฒญํ ๋
ผ๋ฆฌ ์กฐํ์ด๋ฉฐ ์ค์ ๋คํธ์ํฌ ํธ์ถ ์ด๋ ฅ์ด๋ ์บ์ ์ต์ ์ฑ ์ฆ๋ช
์ด ์๋๋๋ค. ์กฐํ ์๊ฐยท๋ฏธ์ ๊ณต ๋ฉํยท์ถ์ฒ ์ง๋จ์ ์ ๋จ ์ฌ๋ถ์ ๊ณ์ฐ ์ฑ๊ณต ์ฌ๋ถ๋ฅผ ๊ตฌ๋ถํด ๋ฐํํฉ๋๋ค.
- ์์ ๋น๊ต์๋ ์๋ก ๋ค๋ฅธ ์์ ์ด ์ต์ 2๊ฐ ํ์ํฉ๋๋ค. ๊ธฐ์ค๊ฐ 0์ ๋ณํ์จ์ 0%๊ฐ ์๋๋ผ ๋ฏธ์ ์ด๋ฉฐ ์ ๋ ๋ณํ๋์ ํจ๊ป ์ ๊ณตํฉ๋๋ค. ๋จ์๊ฐ ์์ด๊ฑฐ๋ ๋๋ฝ๋๋ฉด ๋จ์ผ ์์ `unit`์ ๋ง๋ค์ง ์๊ณ ๊ด์ธก๋ณ ๋จ์๋ฅผ ์ ์งํฉ๋๋ค.
- ํ์ด์ง ์๋ต์ ์ ์ฒด ์๋ฃ ์ทจ๋ ์๋ฃ๊ฐ ์๋๋๋ค. ๋ฐํ ๊ฑด์์ ๊ณต๊ธ์ ์ด๊ฑด์๋ฅผ ๊ตฌ๋ถํ๊ณ , `hasMore`์ ๋ค์ ํ์ด์ง๋ฅผ ํ์ธํ์ธ์.
- MDIS๋ ๊ณต์ ๊ณต๊ฐ ์น ํ์ด์ง๋ฅผ ์ฝ๋ `adapter`(๊ณต๊ฐ ์น ์๋ต์ MCP ๋๊ตฌ ํ์์ผ๋ก ์ฐ๊ฒฐํ๋ ๋ชจ๋)์
๋๋ค. ๊ณต๊ฐ ์กฐ์ฌยท๋ณ์ยท์ฝ๋๋ถ ํ์์๋ ์ฐ๊ตฌ์ ๋ก๊ทธ์ธ์ด ํ์ํ์ง ์์ต๋๋ค. ์ผ๋ฐ ์์๋ฃ ์ด์ฉยท์ธ๊ฐ์๋ฃ ์ ์ฒญยท๋ถ์์ ๋ณธ์ธ ํ๊ฒฝ์์ ๊ณต์ ์ ์ฐจ๋ก ์งํํ๋ฉฐ, ์ด ์๋ฒ๋ ์ฐ๊ตฌ์ ๋น๋ฐ๋ฒํธยท์ฟ ํค๋ฅผ ๋ฐ๊ฑฐ๋ ์ ์ฅํ์ง ์์ต๋๋ค.
- ์ฝ๋๋ถ์ `validation.level: "header-only"`๋ ํ์ผ ํ์๊ณผ CFB(์ XLS๋ฅผ ๋ด๋ ๋ณตํฉ ํ์ผ ํ์) ํค๋๋ง ๊ฒ์ฌํ๋ค๋ ๋ป์
๋๋ค. ์ํฌ์ํธ ๋ณธ๋ฌธ ๊ฒ์ฆยท์์๋ฃ ๋ค์ด๋ก๋ยท์ด์ฉ ์น์ธ ์๋ฃ๋ฅผ ๋ปํ์ง ์์ต๋๋ค.
---
## ๐ง ๊ฐ๋ฐ์ ๊ฐ์ด๋
### ๋ก์ปฌ ๊ฐ๋ฐ
```bash
# ๊ฐ๋ฐ ๋ชจ๋ (watch)
pnpm run dev
# MCP Inspector๋ก ํ
์คํธ
pnpm run inspector
# E2E ํ
์คํธ
node e2e-test.js
```
### ํ๋ก์ ํธ ๊ตฌ์กฐ
```
korea-stats-mcp/
โโโ src/
โ โโโ index.ts # ์ง์
์ (stdio ํธ๋์คํฌํธ)
โ โโโ server.ts # MCP ์๋ฒ ์ค์
โ โโโ tools/ # 8๊ฐ ๋๊ตฌ ๊ตฌํ
โ โ โโโ quickStats.ts # ๋น ๋ฅธ ์กฐํ
โ โ โโโ quickTrend.ts # ์ถ์ธ ๋ถ์
โ โ โโโ ...
โ โโโ data/
โ โ โโโ quickStatsParams.ts # ํต๊ณํยทํญ๋ชฉ ๊ธฐ๋ณธ ์ค์
โ โโโ api/
โ โโโ client.ts # KOSIS API ํด๋ผ์ด์ธํธ
โโโ api/
โ โโโ mcp.ts # Vercel ์๋ฒ๋ฆฌ์ค (์๊ฒฉ MCP)
โโโ tests/ # Playwright ํ
์คํธ
```
### ์ ํค์๋ ์ถ๊ฐํ๊ธฐ
`src/data/quickStatsParams.ts`์ ์ ํค์๋๋ฅผ ์ถ๊ฐํ ์ ์์ต๋๋ค:
```typescript
'์ํค์๋': {
orgId: '101', // ๊ธฐ๊ด ์ฝ๋ (101 = ํต๊ณ์ฒญ)
tableId: 'DT_XXXXX', // ํต๊ณํ ID
tableName: 'ํต๊ณํ๋ช
',
description: '์ค๋ช
',
objL1: '00', // ๋ถ๋ฅ๊ฐ ์ฝ๋
itemId: 'T10', // ํญ๋ชฉ ์ฝ๋
unit: '๋จ์',
}
```
---
## ๐ API ํค
**์๊ฒฉ ์๋ฒ๋ ์ฌ์ฉ์ KOSIS ํค ์์ด ์ด์ฉํ ์ ์์ต๋๋ค.** MCP ํด๋ผ์ด์ธํธ์ ์์ ์๊ฒฉ URL์ ๋ฑ๋กํ์ธ์. KOSIS ์ธ์ฆ์ ์ด์์๊ฐ ์๋ฒ ํ๊ฒฝ๋ณ์๋ก ์ค์ ํ ํค๋ก ์ฒ๋ฆฌํฉ๋๋ค.
๋ก์ปฌ npm/stdio ์คํ๋ **ํค ์์ด ์์ํ ์ ์์ต๋๋ค.** ํค๊ฐ ์์ผ๋ฉด ๊ณต๊ฐ ์๊ฒฉ MCP ์๋ฒ๋ก ์ฐ๊ฒฐ๋๋ฉฐ ์ง๋ฌธ๊ณผ ์กฐํ ์กฐ๊ฑด์ด ์๊ฒฉ ์๋ฒ๋ก ์ ๋ฌ๋ฉ๋๋ค. ์ด ๊ฒฝ์ฐ ์ ๊ณต๋๋ ๋๊ตฌยท๋ฒ์ ์ ํ์ฌ ์๊ฒฉ ๋ฐฐํฌ๋ณธ์ ๋ฐ๋ฆ
๋๋ค.
๊ณต๊ฐ ์๋ฒ๋ฅผ ๊ฑฐ์น์ง ์๊ณ KOSIS๋ฅผ ์ง์ ์กฐํํ๋ ค๋ฉด [KOSIS OpenAPI](https://kosis.kr/openapi/)์์ ๋ฐ๊ธ๋ฐ์ ๋ณธ์ธ ํค๋ฅผ `KOSIS_API_KEY` ํ๊ฒฝ๋ณ์๋ก ์ค์ ํฉ๋๋ค. ์์ค ์ฝ๋๋ฅผ ์์ ํ๊ฑฐ๋ ํค๋ฅผ ํจํค์ง์ ๋ฃ์ง ์์ต๋๋ค.
์๊ฒฉ ์๋ฒ ์ด์์๋ Vercel์ ํด๋น ๋ฐฐํฌ ํ๊ฒฝ์ `KOSIS_API_KEY`๋ฅผ ์ค์ ํ๊ณ ์ ๋ฐฐํฌ์์ ์ค์ ์กฐํ๋ฅผ ํ์ธํด์ผ ํฉ๋๋ค. ํค๋ฅผ ํ๋ฐํธ์๋ ๊ณต๊ฐ ํ๊ฒฝ๋ณ์, ์ ์ฅ์, ๋ก๊ทธ์ ๋ฃ์ง ๋ง์ธ์. ๊ณผ๊ฑฐ ๊ณต๊ฐ ํค๋ ์ ํค๋ก ์ ์ ๋์์ ํ์ธํ ๋ค ํ๊ธฐํด์ผ ํ๋ฉฐ, ์์ค์์ ์ญ์ ํ ๊ฒ๋ง์ผ๋ก ๊ณผ๊ฑฐ ๋ฐฐํฌ๋ณธ๊ณผ Git ์ด๋ ฅ์์ ์ฌ๋ผ์ง์ง๋ ์์ต๋๋ค.
์๊ถ์ ๋ณด ์ ๊ณต๊ณผ ์์ ์ค์ฒฉ ์๊ตฐ๊ตฌ ๋ช
์นญ ํ์ธ์ ์ง์ํ๋ ์ด์์๋ ๊ฐ์ ๋ฐฐํฌ ํ๊ฒฝ์ `DATA_GO_KR_SERVICE_KEY`๋ ์ค์ ํด์ผ ํฉ๋๋ค. ์ด ํค๋ ๊ณต๊ณต๋ฐ์ดํฐํฌํธ์ ํด๋น ์๊ถ์ ๋ณด ์๋น์ค ํ์ฉ ์น์ธ์ ๋ฐ์ ์ด์์์ฉ ํค์
๋๋ค. ์ด์ฉ์์๊ฒ ๊ฐ์ ๋ฐ๊ธ๋ฐ๋๋ก ์๊ตฌํ์ง ์์ต๋๋ค. MDIS ๊ณต๊ฐ ๋ฉํ๋ฐ์ดํฐ adapter์๋ ์ด ๋ API ํค๊ฐ ํ์ํ์ง ์์ต๋๋ค.
Vercel Functions๋ `vercel.json`์ `regions: ["icn1"]`์ ๋ฐ๋ผ ์์ธ์ ๋ฐฐ์นํฉ๋๋ค. MDIS ๊ณต๊ฐ ์นดํ๋ก๊ทธ์ ๋ณธ๋ฌธ ์ ์ก ์ง์ฐ์ ์ค์ด๊ธฐ ์ํ ์ค์ ์ด๋ฉฐ, ์์ฒญ 8์ดยท์๋ต 4 MiB ์ ํ์ ์ ์งํฉ๋๋ค. ๋ค๋ฅธ ๋ฆฌ์ ์ ๋์์ ๋ก์ปฌ ์ฑ๊ณต๋ง์ผ๋ก ๊ฐ์ ํ์ง ๋ง๊ณ ์ค์ ๋ฐฐํฌ์์ ํ์ธํ์ธ์. ์ด ์ค์ ์์ฒด๊ฐ ๊ธฐ์กด ๊ณต๊ฐ ์๋ฒ์ ๋ฐฐํฌ ์๋ฃ๋ฅผ ๋ปํ์ง๋ ์์ต๋๋ค.
์ถ์ ์ ๋จ๊ณ๋ณ ๊ฒ์ฆ, ๊ณต๊ฐ ๋์์ ์ฌํ ํ์ธ๊ณผ ์์ ํ ๋กค๋ฐฑ์ [์ฌ์ฉ์ ๊ฐ์ด๋์ ์ด์์ ์ ์ฐจ](docs/USER_GUIDE.md)๋ฅผ ๋ฐ๋ฆ
๋๋ค. ๋ณดํธ๋ preview ๊ฒ์ฆ๊ณผ ์ค์ ๊ณต๊ฐ ์๋น์ค์ ๋ฐฐํฌ ์๋ฃ๋ฅผ ๊ตฌ๋ถํฉ๋๋ค.
### ๊ณต๊ฐ ์๊ตฐ๊ตฌยท์์ธ ์กฐํ ๋ฒค์น๋งํฌ
์ง๋ฌธยท์ฑ์ ยทํฉ๊ฒฉ์ ์ ์ ๋ณธ์ [๊ณ ์ ๋ฒค์น๋งํฌ ๊ธฐ์ค](tests/public-benchmark.json)์
๋๋ค. ์ด์์๊ฐ ๋
๋ฆฝ ๊ณต์ ์๋ฌธ๊ณผ ๊ณต๊ฐ MCP ์๋ต์ ๋์กฐํ ๋ ์คํํฉ๋๋ค.
```bash
node --env-file=/๋ณดํธ๋๊ฒฝ๋ก/provider.env tests/public-benchmark.mjs --output /์ ๋๊ฒฝ๋ก/์๊ฒ์ฆํด๋
```
`provider.env`์๋ ๋
๋ฆฝ ์๋ฌธ ๋์กฐ์ฉ ์ด์์ `KOSIS_API_KEY`์ `DATA_GO_KR_SERVICE_KEY`๋ฅผ ๋ก๋๋ค. ๊ณต๊ฐ MCP ์ฐ๊ฒฐ์๋ ์ด ํค๋ ์ธ์ฆ ์ฐํ ํค๋๋ฅผ ๋ณด๋ด์ง ์์ต๋๋ค. ์ผ๋ฐ ์ด์ฉ์๊ฐ ์ด ๋ฒค์น๋งํฌ๋ฅผ ์คํํ๊ฑฐ๋ ํค๋ฅผ ๋ฐ๊ธ๋ฐ์ ํ์๋ ์์ต๋๋ค.
๋งค ์คํ์ ์ ๊ฒฐ๊ณผ ํด๋์ ๊ธฐ์ค ํ์ผ ํด์๋ฅผ ๋จ๊น๋๋ค. ๋ฏธ์คํยท์ธ๋ถ ์ฅ์ ยท์์๋ฃ ๋ฏธ์ ๊ณต์ ํต๊ณผ๋ก ๋ฐ๊พธ๊ฑฐ๋ ๋ถ๋ชจ์์ ๋นผ์ง ์์ต๋๋ค. ์ด ๋ฒค์น๋งํฌ๋ ๊ธฐ์กด ๋จ๊ณ๋ณ ์ถ์ ๊ฒ์ฌ๋ ์ ๊ตญ ๋ชจ๋ ํต๊ณ์ ์ ๊ณต ๋ฒ์๋ฅผ ๋์ ํ์ง ์์ต๋๋ค.
---
## ๐ค ๊ธฐ์ฌํ๊ธฐ
๊ธฐ์ฌ๋ฅผ ํ์ํฉ๋๋ค!
1. ์ด ์ ์ฅ์๋ฅผ Fork ํฉ๋๋ค
2. ์ ๋ธ๋์น๋ฅผ ์์ฑํฉ๋๋ค (`git checkout -b feature/์๊ธฐ๋ฅ`)
3. ๋ณ๊ฒฝ์ฌํญ์ ์ปค๋ฐํฉ๋๋ค (`git commit -m 'feat: ์ ๊ธฐ๋ฅ ์ถ๊ฐ'`)
4. ๋ธ๋์น์ Push ํฉ๋๋ค (`git push origin feature/์๊ธฐ๋ฅ`)
5. Pull Request๋ฅผ ์์ฑํฉ๋๋ค
### ๊ธฐ์ฌ ์์ด๋์ด
- [ ] ์๋ก์ด ํต๊ณ ํค์๋ ์ถ๊ฐ
- [ ] ์๋ฌธ ํค์๋ ์ง์ (population, unemployment ๋ฑ)
- [ ] ์ง์ญ๋ช
ํ๋ค์ ์ง์ (์์ธํน๋ณ์ โ ์์ธ)
- [ ] ๋ ๋ง์ ํ
์คํธ ์ผ์ด์ค
---
## ๐ ๋ผ์ด์ ์ค
[MIT License](LICENSE) - ์์ ๋กญ๊ฒ ์ฌ์ฉ, ์์ , ๋ฐฐํฌํ ์ ์์ต๋๋ค.
MIT ๋ผ์ด์ ์ค๋ ์ด ํ๋ก๊ทธ๋จ ์ฝ๋์ ์ ์ฉ๋ฉ๋๋ค. KOSISยท๊ณต๊ณต๋ฐ์ดํฐํฌํธยทMDIS ์๋ฃ์ ์ ์๊ถ, ์ถ์ฒ ํ์, ์ด์ฉ ์กฐ๊ฑด๊ณผ ์ ๊ทผ ์น์ธ์ ๊ฐ ๊ณต๊ธ์์ ์กฐ๊ฑด์ ๋ฐ๋ฆ
๋๋ค.
---
## ๐ ๊ด๋ จ ๋งํฌ
- [KOSIS ๊ตญ๊ฐํต๊ณํฌํธ](https://kosis.kr/)
- [KOSIS OpenAPI ๊ฐ๋ฐ ๊ฐ์ด๋](https://kosis.kr/openapi/)
- [Model Context Protocol](https://modelcontextprotocol.io/)
- [MCP TypeScript SDK](https://github.com/modelcontextprotocol/typescript-sdk)
---
## ๐ฌ ๋ฌธ์
์ด์๋ ์ง๋ฌธ์ด ์์ผ์๋ฉด [GitHub Issues](https://github.com/Dayoooun/korea-stats-mcp/issues)์ ๋ฑ๋กํด ์ฃผ์ธ์.
---
<p align="center">
<b>Made with โค๏ธ for Korean Statistics</b><br>
<sub>KOSIS OpenAPI ๊ธฐ๋ฐ | MCP Compatible</sub>
</p>
TDQS
A3.5/5.0
Scored across 8 tools
Disambiguation4/5
Tools have distinct purposes with detailed usage hints, but quick_stats and get_statistics_data both return data and could cause minor confusion. Overall, agents can differentiate well.
Naming Consistency4/5
Most names follow verb_noun pattern (get_statistics_data, analyze_time_series), but quick_stats and quick_trend break the pattern with 'quick' as prefix, slightly reducing consistency.
Tool Count5/5
8 tools is ideal for a statistics server, covering listing, searching, data retrieval, comparison, and trend analysis without being overwhelming.
Completeness3/5
Core CRUD-like operations are present but missing get_table_info, which is referenced as a prerequisite. This gap forces agents to work around missing metadata retrieval.
Maintenance
ActivityMaintained
ResponsivenessSlow