ECOS MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ECOS MCP Server What's the recent trend in the base rate?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
๐ฆ ECOS MCP Server
ํ๊ตญ์ํ ๊ฒฝ์ ํต๊ณ์์คํ (ECOS) Open API๋ฅผ ์ํ ์ต์ MCP(Model Context Protocol) ์๋ฒ์ ๋๋ค.
AI ์์ด์ ํธ(Claude Desktop, Cursor ๋ฑ)๊ฐ ํ๊ตญ ๊ฑฐ์๊ฒฝ์ ํต๊ณ ๋ฐ์ดํฐ๋ฅผ ์์ฐ์ด๋ก ์ค์๊ฐ ๊ฒ์ํ๊ณ ๊ณ ํจ์จ ์๊ณ์ด ๋ถ์์ ์ํํ ์ ์๊ฒ ํด์ค๋๋ค.
โจ ํต์ฌ ๊ธฐ๋ฅ
๐ ๏ธ MCP Tools (7๊ฐ)
๋ชจ๋ ๋๊ตฌ๋ ์ฝ๊ธฐ ์ ์ฉ(readOnlyHint)์ผ๋ก ํ์๋์ด ์๊ณ , ์คํจ ์ MCP ํ์ค ์๋ฌ(isError: true)๋ฅผ ๋ฐํํฉ๋๋ค.
Tool | ์ค๋ช | ์ฃผ์ ํน์ง |
| 1-Shot ์ธ๊ธฐ ์งํ ์ฆ์ ์กฐํ | ๊ธฐ์ค๊ธ๋ฆฌ, ์ฑ์ฅ๋ฅ , ๋ฌผ๊ฐ์์น๋ฅ , ํ์จ ๋ฑ์ ์ฝ๋ ๊ฒ์ ์์ด ํ ๋ฒ์ ํธ์ถ๋ก ์กฐํ |
| ํต๊ณ ์๊ณ์ด ๋ฐ์ดํฐ ์กฐํ (ํต์ฌ) | ์ค๋งํธ ๋ ์ง, ์ต์ ๊ตฌ๊ฐ ์ฐ์ , ์ฆ๊ฐ๋ฅ ๊ณ์ฐ( |
| ํต๊ณํ ๊ฒ์ยท๊ณ์ธต ํ์ | ๋ก์ปฌ ์ธ๋ฑ์ค๋ก ์ฆ์ ์๋ต. ๋์ด์ฐ๊ธฐ ๋ฌด์ยท๋ค์ค ๋จ์ดยท๊ด๋ จ๋ ์ ์ ๋ ฌ, |
| 100๋ ์ฃผ์ ๊ฒฝ์ ์งํ ์กฐํ | GDP, ๊ธฐ์ค๊ธ๋ฆฌ, ํ์จ, ํตํ๋ ๋ฑ ์ค์๊ฐ ํต์ฌ ์งํ |
| ํต๊ณ ์ฉ์ด ์ฌ์ ๊ฒ์ | ํ๊ตญ์ํ ๊ณต์ ์ฉ์ด ํด์ค |
| ํต๊ณํ ์ธ๋ถํญ๋ชฉ ๋ชฉ๋ก ์กฐํ | ํญ๋ชฉ์ฝ๋, ์ง์ ์ฃผ๊ธฐ, ์๋ก ๊ธฐ๊ฐ, ๋จ์ ํ์ธ (๊ฒฐ๊ณผ ์บ์) |
| ํต๊ณ ๋ฉํ๋ฐ์ดํฐ ์กฐํ | ํต๊ณ ์์ฑ ๋ฐฐ๊ฒฝ, ์์ฑ ์ฃผ๊ธฐ, ํธ์ ๊ธฐ์ค ๋ฑ (๊ฒฐ๊ณผ ์บ์) |
โก ํ ํฐ ์ต์ ํ ํฌ๋งท (output_format)
์๊ณ์ด ์กฐํ(search_statistics, get_popular_statistic) ๊ฒฐ๊ณผ๋ ๊ณต๋ฐฑ ์๋ JSON์ผ๋ก ๋ฐํ๋ฉ๋๋ค.
"compact"(๊ธฐ๋ณธ๊ฐ): ๊ณ์ด(ํญ๋ชฉ)๋ณ๋ก ์ด๋ฆยท๋จ์๋ฅผ ํ ๋ฒ๋ง ์ฐ๊ณ ๊ฐ์[์์ , ๊ฐ]๋ฐฐ์ด๋ก ๋ฐํ"csv": ํ ์ค์ ๊ด์ธก์น ํ๋. ์ฌ๋ฌ ํญ๋ชฉ์ ํยท์ฐจํธ๋ก ์ฎ๊ธธ ๋ ํธ๋ฆฌ"json": ECOS ์๋ณธ ํ ๊ทธ๋๋ก
์ธก์ ์์(์๋น์๋ฌผ๊ฐ์ง์ 24๊ฐ์ ๋จ์ผ ๊ณ์ด, ๋ฌธ์ ์ ๊ธฐ์ค): ์๋ณธ JSON 6,545์ โ compact 605์(์ฝ 91% ์ถ์), csv 805์.
๐ ์ฆ๊ฐ๋ฅ ยท๋ณ๊ฒฝ ์์ (transform, changes_only)
transform="yoy": ์ ๋ ๋๊ธฐ๋๋น ์ฆ๊ฐ๋ฅ (%) ์ด(yoy_pct) ์ถ๊ฐ. ๊ธฐ์ค ์์ ๋ฐ์ดํฐ๋ ์๋์ผ๋ก ํจ๊ป ์กฐํํฉ๋๋ค.transform="pop": ์ง์ ๊ด์ธก์น ๋๋น ์ฆ๊ฐ๋ฅ (%) ์ด(pop_pct) ์ถ๊ฐchanges_only=True: ๊ฐ์ด ๋ฐ๋ ์์ ๋ง ๋ฐํ (์: ์ผ๋ณ ๊ธฐ์ค๊ธ๋ฆฌ 2๋ ์น ์ฝ 500ํ โ ๋ณ๊ฒฝ ์์ ๋ช ํ)
๐๏ธ ์ค๋งํธ ๋ ์ง & ์ต์ ๊ตฌ๊ฐ ์ฐ์
start_date/end_date๋ฅผ ์๋ตํ๋ฉด ์ผ๊ฐ(D)์ ์ต๊ทผ 3๊ฐ์, ๊ทธ ์ธ ์ฃผ๊ธฐ๋ ์ต๊ทผ 2๋ ์ด ์๋ ์ค์ ๋ฉ๋๋ค.๊ฒฐ๊ณผ๊ฐ ํ ๋ฒ์ ๋ค ๋ด๊ธฐ์ง ์์ผ๋ฉด(
end_count์ด๊ณผ, sample ํค๋ 10๊ฑด) ๊ฐ์ฅ ์ต๊ทผ ๊ตฌ๊ฐ์ ๋ฐํํ๊ณtruncated: true์ ์๋ด ๋ฌธ๊ตฌ๋ฅผ ๋ถ์ ๋๋ค. ๊ณผ๊ฑฐ๋ถํฐ ํ์ด์ง ๋จ์๋ก ๋ฐ์ผ๋ ค๋ฉดprefer_latest=False๋ฅผ ์ฐ์ธ์.
Related MCP server: kosis-mcp
๐ MCP Resources & Prompts
Resources
ecos://popular-indicators: ํ๊ตญ์ํ ์ฃผ์ ํต์ฌ ๊ฒฝ์ ์งํ(๊ธฐ์ค๊ธ๋ฆฌ, ์ค์ง GDP, ์๋น์๋ฌผ๊ฐ์ง์, ํ์จ, M2 ๋ฑ) ํ๋ฆฌ์ ๋งคํํecos://date-format-guide: ์ฃผ๊ธฐ(Cycle)๋ณ ์ฌ๋ฐ๋ฅธ ๋ ์ง ํฌ๋งท ๊ท๊ฒฉ ์๋ด์
Prompts
macro-economic-briefing: 100๋ ์งํ์ ์ฑ์ฅ๋ฅ ยท๋ฌผ๊ฐ์์น๋ฅ ยท๊ธฐ์ค๊ธ๋ฆฌยทํ์จ ์ถ์ด ๊ธฐ๋ฐ ๊ฒฝ์ ํํฉ ๋ธ๋ฆฌํanalyze-economic-trend: ํน์ ๊ฒฝ์ ์งํ(์๋น์๋ฌผ๊ฐ์ง์ ๋ฑ) ์๊ณ์ด ์ถ์ด ๋ฐ ์ ์ฑ ์์ฌ์ ์ฌ์ธต ๋ถ์
๐ ์ฃผ๊ธฐ(Cycle)๋ณ ๋ ์ง ํฌ๋งท ๊ท์น
์ฃผ๊ธฐ ์ฝ๋ | ์ฃผ๊ธฐ๋ช | ์์/์ข ๋ฃ์ผ ํฌ๋งท ๊ท๊ฒฉ | ์์ |
| ์ฐ๊ฐ |
|
|
| ๋ฐ๊ธฐ |
|
|
| ๋ถ๊ธฐ |
|
|
| ์๊ฐ |
|
|
| ๋ฐ์ |
|
|
| ์ผ๊ฐ |
|
|
๐ ์ฃผ์ ์ธ๊ธฐ ํต๊ณํ ํ๋ฆฌ์
์งํ๋ช | ํค์๋(๋ณ์นญ) | ํต๊ณํ์ฝ๋ | ์ฃผ๊ธฐ | ํญ๋ชฉ์ฝ๋ | ๊ธฐ๋ณธ ์ฒ๋ฆฌ |
ํ๊ตญ์ํ ๊ธฐ์ค๊ธ๋ฆฌ |
|
|
|
| ๋ณ๊ฒฝ ์์ ๋ง |
๊ฒฝ์ ์ฑ์ฅ๋ฅ (์ค์ง, ์ ๊ธฐ๋น %) |
|
|
|
| |
์ค์ง GDP(๋ถ๊ธฐ, ์ญ์ต์) |
|
|
|
| |
์๋น์๋ฌผ๊ฐ์์น๋ฅ (%) |
|
|
|
|
|
์๋น์๋ฌผ๊ฐ์ง์(CPI) |
|
|
|
| |
์/๋ฌ๋ฌ ํ์จ(์ผ๋ณ) |
|
|
|
| |
์/๋ฌ๋ฌ ํ์จ(์ํ๊ท ) |
|
|
|
| |
๋ณธ์ํตํ(ํ์) |
|
|
|
| |
M2 ๊ด์ํตํ |
|
|
|
| |
๊ตญ๊ณ ์ฑ(3๋ ) ์์ต๋ฅ (์ผ๋ณ) |
|
|
|
| |
๊ตญ๊ณ ์ฑ(3๋ ) ์์ต๋ฅ (์ํ๊ท ) |
|
|
|
| |
์์ฐ์๋ฌผ๊ฐ์ง์(PPI) |
|
|
|
|
"ํตํ", "์ง์"์ฒ๋ผ ์ฌ๋ฌ ์งํ์ ๊ฑธ์น๋ ํค์๋๋ ํ๋ณด ๋ชฉ๋ก์ ๋ด์ ์๋ฌ๋ฅผ ๋๋ ค์ฃผ๋ฏ๋ก, ๋ ๊ตฌ์ฒด์ ์ธ ํค์๋๋ id๋ฅผ ์ฐ๋ฉด ๋ฉ๋๋ค.
๐ ๋น ๋ฅธ ์์
1. ์ค์น (๋ก์ปฌ ๊ฐ๋ฐ ์)
git clone https://github.com/kgy0617/ecos_mcp.git
cd ecos_mcp
uv sync2. API ํค ์ค์ (์ ํ)
cp .env.example .env
# .env ํ์ผ์์ ECOS_API_KEY ์
๋ ฅ (๋ฏธ์
๋ ฅ ์ sample ํค ์๋ ์ ์ฉ)๐ก API ํค ์์ด๋
sampleํค๋ก ํ ์คํธ ๊ฐ๋ฅํ๋ฉฐ, 1ํ ์ต๋ ํ์ฉ์น(10๊ฑด)๋ก ์๋ ํด๋จํ๋ฉ๋๋ค.
3. ์๊ฐ ์ง๋จ ํฌ์ค์ฒดํฌ ์คํ
uv run ecos-mcp --check๋คํธ์ํฌ ์ฐ๊ฒฐ, API ํค ์ํ, ํต๊ณํ ์ธ๋ฑ์ค ๋ก๋๊ฐ ์๋์ผ๋ก ์ง๋จ๋ฉ๋๋ค.
๐ง MCP ํด๋ผ์ด์ธํธ ์ค์
Claude Desktop
~/Library/Application Support/Claude/claude_desktop_config.json:
๋ฐฉ๋ฒ A: GitHub URL ์ง์ ์คํ (ํด๋ก ๋ถํ์, ์ถ์ฒ โญ)
{
"mcpServers": {
"ecos": {
"command": "uvx",
"args": ["--from", "git+https://github.com/kgy0617/ecos_mcp", "ecos-mcp"],
"env": {
"ECOS_API_KEY": "your_api_key_here"
}
}
}
}๋ฐฉ๋ฒ B: ๋ก์ปฌ ํด๋ก ์คํ
{
"mcpServers": {
"ecos": {
"command": "uv",
"args": ["--directory", "/path/to/ecos_mcp", "run", "ecos-mcp"],
"env": {
"ECOS_API_KEY": "your_api_key_here"
}
}
}
}Claude Code
claude mcp add ecos -e ECOS_API_KEY=your_api_key_here -- uvx --from git+https://github.com/kgy0617/ecos_mcp ecos-mcpCursor
Settings > Features > MCP Servers > Add New MCP Server:
๋ฐฉ๋ฒ A (GitHub ์ง์ ์คํ):
Name:
ecosType:
commandCommand:
uvx --from git+https://github.com/kgy0617/ecos_mcp ecos-mcp
๋ฐฉ๋ฒ B (๋ก์ปฌ ํด๋ก ):
Name:
ecosType:
commandCommand:
uv --directory /path/to/ecos_mcp run ecos-mcp
๐ ์ฌ์ฉ ์์
1. ์ธ๊ธฐ ์งํ ์์คํฑ ์กฐํ (get_popular_statistic)
์ฌ์ฉ์: "์ต๊ทผ ํ๊ตญ ๊ธฐ์ค๊ธ๋ฆฌ ์ด๋ป๊ฒ ๋ฐ๋์์ด?"
Tool ํธ์ถ:
{
"indicator": "๊ธฐ์ค๊ธ๋ฆฌ",
"recent_years": 2,
"output_format": "compact"
}์๋ต ์์ (์ผ๋ณ 500์ฌ ํ ๋์ changes_only=True๊ฐ ๊ธฐ๋ณธ ์ ์ฉ๋์ด ๊ธ๋ฆฌ ๋ณ๋ ์์ ๋ง ๊ฐ๊ฒฐํ๊ฒ ๋ฐํ):
{
"stat_code": "722Y001",
"stat_name": "ํ๊ตญ์ํ ๊ธฐ์ค๊ธ๋ฆฌ ๋ฐ ์ฌ์์ ๊ธ๋ฆฌ",
"indicator": "base_rate",
"total_count": 500,
"count": 3,
"columns": ["time", "value"],
"series": [
{
"item": "ํ๊ตญ์ํ ๊ธฐ์ค๊ธ๋ฆฌ",
"item_code": "0101000",
"unit": "์ฐ%",
"data": [
["20230113", 3.5],
["20241011", 3.25],
["20241128", 3.0]
]
}
]
}2. ๋ฌผ๊ฐ์์น๋ฅ CSV ์์ ํ ์ฐจํธ ๋ถ์
์ฌ์ฉ์: "์๋น์๋ฌผ๊ฐ ์์น๋ฅ ์ต๊ทผ ๋ฐ์ดํฐ CSV๋ก ๋ฝ์์ ๋ถ์ํด์ค"
Tool ํธ์ถ:
{
"indicator": "๋ฌผ๊ฐ์์น๋ฅ ",
"recent_years": 1,
"output_format": "csv"
}์๋ต ์์ (transform="yoy"๊ฐ ์๋ ์ ์ฉ๋์ด ์ ๋
๋๊ธฐ๋๋น ์ฆ๊ฐ๋ฅ ์ด์ธ YOY_PCT๊ฐ ํฌํจ๋จ):
# stat_code: 901Y009
# stat_name: 4.2.1. ์๋น์๋ฌผ๊ฐ์ง์
# indicator: inflation_rate
# total_count: 12
# count: 12
TIME,ITEM_CODE,ITEM,VALUE,UNIT,YOY_PCT
202401,0,์ด์ง์,113.15,2020=100,2.8
202402,0,์ด์ง์,113.77,2020=100,3.1
202403,0,์ด์ง์,113.94,2020=100,3.1
202404,0,์ด์ง์,114.09,2020=100,2.9
202405,0,์ด์ง์,114.14,2020=100,2.7
...3. ํต๊ณํ ํค์๋ ๊ฒ์ ๋ฐ ๊ณ์ธต ํ์ (search_statistic_tables)
์ฌ์ฉ์: "์๋น์๋ฌผ๊ฐ ๊ด๋ จ ํต๊ณํ ์ฐพ์์ค"
Tool ํธ์ถ:
{
"keyword": "์๋น์ ๋ฌผ๊ฐ",
"searchable_only": true,
"limit": 3
}์๋ต ์์ (๋ก์ปฌ ์ธ๋ฑ์ค ๊ธฐ๋ฐ์ผ๋ก ๋์ด์ฐ๊ธฐ ๋ฌด์ ๋ฐ ๊ด๋ จ๋ ์ ์ ๋ ฌ):
{
"query": "์๋น์ ๋ฌผ๊ฐ",
"total_matches": 3,
"count": 2,
"searchable_only": true,
"index_generated_at": "2026-09-26",
"rows": [
{
"P_STAT_CODE": "0000000211",
"STAT_CODE": "901Y009",
"STAT_NAME": "4.2.1. ์๋น์๋ฌผ๊ฐ์ง์",
"CYCLE": "M",
"SRCH_YN": "Y",
"ORG_NAME": "๊ตญ๊ฐ๋ฐ์ดํฐ์ฒ(02-2012-9114)"
},
{
"P_STAT_CODE": "0000000211",
"STAT_CODE": "901Y010",
"STAT_NAME": "4.2.2. ์๋น์๋ฌผ๊ฐ์ง์(ํน์๋ถ๋ฅ)",
"CYCLE": "M",
"SRCH_YN": "Y",
"ORG_NAME": "๊ตญ๊ฐ๋ฐ์ดํฐ์ฒ(02-2012-9114)"
}
]
}Tip: parent_code="0000000211"๋ฅผ ์ง์ ํ๋ฉด ํด๋น ๋ถ๋ฅ์ ํ์ ํต๊ณํ ํธ๋ฆฌ๋ฅผ ์ง์ ํ์ํ ์๋ ์์ต๋๋ค.
4. ํต๊ณ ์ฉ์ด ์ฌ์ ๊ฒ์ (search_statistic_word)
์ฌ์ฉ์: "ํ๊ตญ์ํ์์ ์ ์ํ๋ ๊ธฐ์ค๊ธ๋ฆฌ์ ์ ํํ ์๋ฏธ๊ฐ ๋ญ์ผ?"
Tool ํธ์ถ:
{
"word": "๊ธฐ์ค๊ธ๋ฆฌ"
}์๋ต ์์:
{
"total_count": 1,
"count": 1,
"rows": [
{
"WORD": "๊ธฐ์ค๊ธ๋ฆฌ",
"CONTENT": "ํ๊ตญ์ํ์ด ๊ธ์ต๊ธฐ๊ด๊ณผ ํ๋งค์กฐ๊ฑด๋ถ์ฆ๊ถ(RP) ๋งค๋งค, ์๊ธ์กฐ์ ์๊ธ ๋ฐ ๋์ถ ๋ฑ์ ๊ฑฐ๋๋ฅผ ํ ๋ ๊ธฐ์ค์ด ๋๋ ์ ์ฑ
๊ธ๋ฆฌ"
}
]
}๐งช ํ ์คํธ ์คํ
uv run pytest # ์คํ๋ผ์ธ ๋จ์ ํ
์คํธ (ECOS API๋ฅผ ๋ชจํน, ๋คํธ์ํฌ ๋ถํ์)
uv run pytest -m live # ์ค์ ECOS API ํธ์ถ ํ
์คํธ (๋ชจ๋ ํ๋ฆฌ์
์กฐํ ํ์ธ)๐ ๋ผ์ด์ ์ค
MIT License
Available Tools
7 toolsget_key_statistics100๋ ์ฃผ์ ๊ฒฝ์ ์งํARead-onlyIdempotent
100๋ ์ฃผ์ ๊ฒฝ์ ์งํ๋ฅผ ์กฐํํฉ๋๋ค.
GDP ์ฑ์ฅ๋ฅ , ๊ธฐ์ค๊ธ๋ฆฌ, ์๋น์๋ฌผ๊ฐ ์์น๋ฅ , ์ค์
๋ฅ , M1/M2 ํตํ๋ ๋ฑ
ํ๊ตญ ๊ฒฝ์ ์ ํต์ฌ ์งํ๋ฅผ ํ ๋ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
Args:
start_count: ์กฐํ ์์ ์๋ฒ (๊ธฐ๋ณธ๊ฐ: 1)
end_count: ์กฐํ ๋ ์๋ฒ (๊ธฐ๋ณธ๊ฐ: 100, sample ํค๋ ์ต๋ 10๊ฑด์ผ๋ก ์๋ ์ ํ)
language: ์๋ต ์ธ์ด โ "kr"(ํ๊ตญ์ด) ๋๋ "en"(์์ด)
Returns:
์ฃผ์ ๊ฒฝ์ ์งํ ๋ชฉ๋ก
Inputs: language, end_count, start_count.
get_popular_statistic์ธ๊ธฐ ๊ฒฝ์ ์งํ ์ฆ์ ์กฐํARead-onlyIdempotent
ํ๊ตญ์ํ ํต์ฌ ๊ฒฝ์ ์งํ๋ฅผ ์ฝ๋ ๊ฒ์ ์์ด ๋จ 1๋ฒ์ ํธ์ถ๋ก ์ฆ์ ์กฐํํฉ๋๋ค.
์ฌ์ฉ์๊ฐ "๊ธฐ์ค๊ธ๋ฆฌ ์๋ ค์ค", "์ต๊ทผ ์ฑ์ฅ๋ฅ ", "๋ฌผ๊ฐ์์น๋ฅ ์ถ์ด" ๋ฑ์ ๋ฌผ์ ๋
ํต๊ณํ์ฝ๋๋ ํญ๋ชฉ์ฝ๋๋ฅผ ๊ฒ์ํ ํ์ ์์ด ์ฆ๊ฐ์ ์ผ๋ก ์๊ณ์ด ๋ฐ์ดํฐ๋ฅผ ๋ฐํํฉ๋๋ค.
์ง์ํ๋ ์งํ ํค์๋:
- ๊ธฐ์ค๊ธ๋ฆฌ ("๊ธฐ์ค๊ธ๋ฆฌ", "๊ธ๋ฆฌ", "์ ์ฑ
๊ธ๋ฆฌ") โ ๋ณ๊ฒฝ ์์ ๋ง ๋ฐํ(changes_only ๊ธฐ๋ณธ True)
- ๊ฒฝ์ ์ฑ์ฅ๋ฅ ("๊ฒฝ์ ์ฑ์ฅ๋ฅ ", "์ฑ์ฅ๋ฅ ", "GDP์ฑ์ฅ๋ฅ ") โ ์ค์ง GDP ์ ๊ธฐ๋น %
- ๊ตญ๋ด์ด์์ฐ ("GDP", "์ค์งGDP", "๊ตญ๋ด์ด์์ฐ") โ ์ค์ง GDP ์์ค(์ญ์ต์)
- ์๋น์๋ฌผ๊ฐ์์น๋ฅ ("๋ฌผ๊ฐ์์น๋ฅ ", "์ธํ๋ ์ด์
") โ CPI ์ ๋
๋์๋น %(yoy_pct)
- ์๋น์๋ฌผ๊ฐ์ง์ ("CPI", "์๋น์๋ฌผ๊ฐ", "๋ฌผ๊ฐ") โ ์ง์ ์์ค(2020=100)
- ์/๋ฌ๋ฌ ํ์จ ("ํ์จ", "์๋ฌ๋ฌ", "๋ฌ๋ฌ", "USD") โ ์ผ๋ณ / ("์ํ๊ท ํ์จ") โ ์ํ๊ท
- ๋ณธ์ํตํ ("๋ณธ์ํตํ", "์ค์์ํ๋ถ์ฑ")
- M2 ๊ด์ํตํ ("M2", "ํตํ๋", "๊ด์ํตํ")
- ๊ตญ๊ณ ์ฑ 3๋
("๊ตญ๊ณ ์ฑ", "๊ตญ๊ณ ์ฑ3๋
", "์ฑ๊ถ๊ธ๋ฆฌ") โ ์ผ๋ณ / ("๊ตญ๊ณ ์ฑ์ํ๊ท ") โ ์ํ๊ท
- ์์ฐ์๋ฌผ๊ฐ์ง์ ("PPI", "์์ฐ์๋ฌผ๊ฐ")
Args:
indicator: ์กฐํํ ์งํ๋ช
๋๋ ํค์๋ (์: "๊ธฐ์ค๊ธ๋ฆฌ", "๋ฌผ๊ฐ์์น๋ฅ ", "์ฑ์ฅ๋ฅ ", "ํ์จ")
recent_years: start_date ๋ฏธ์ง์ ์ ์ต๊ทผ ๋ช ๋
์น๋ฅผ ์กฐํํ ์ง (๊ธฐ๋ณธ: ์ผ๋ณ ์งํ ์ต๊ทผ 3๊ฐ์, ๊ทธ ์ธ 2๋
)
start_date: ๊ฒ์ ์์์ผ (์ฃผ๊ธฐ์ ๋ง๋ ํฌ๋งท. ๋ฏธ์
๋ ฅ ์ ์๋ ๊ณ์ฐ)
end_date: ๊ฒ์ ์ข
๋ฃ์ผ (๋ฏธ์
๋ ฅ ์ ํ์ฌ ์์ )
output_format: "compact"(๊ธฐ๋ณธ๊ฐ, ๊ณ์ด๋ณ [์์ , ๊ฐ] ๋ฐฐ์ด), "csv", "json"(ECOS ์๋ณธ ํ)
transform: "yoy"(์ ๋
๋๊ธฐ๋๋น %), "pop"(์ง์ ๊ด์ธก์น ๋๋น %), "none". ๋ฏธ์ง์ ์ ์งํ ๊ธฐ๋ณธ๊ฐ ์ฌ์ฉ
changes_only: True๋ฉด ๊ฐ์ด ๋ฐ๋ ์์ ๋ง ๋ฐํ. ๋ฏธ์ง์ ์ ์งํ ๊ธฐ๋ณธ๊ฐ ์ฌ์ฉ
Returns:
ํต์ฌ ๊ฒฝ์ ์งํ ์๊ณ์ด ๋ฐ์ดํฐ. ๊ฒฐ๊ณผ๊ฐ ํ ๋ฒ์ ๋ค ๋ด๊ธฐ์ง ์์ผ๋ฉด ์ต์ ๊ตฌ๊ฐ์ ์ฐ์ ๋ฐํํฉ๋๋ค.
Inputs: indicator (required), end_date, transform, start_date, +3 more.
get_statistic_metaํต๊ณ ๋ฉํ๋ฐ์ดํฐARead-onlyIdempotent
ํต๊ณ ๋ฐ์ดํฐ์ ์ ๋ฉํ๋ฐ์ดํฐ(๊ตฌ์กฐ, ์์ฑ๋ฐฉ๋ฒ, ์ค๋ช )๋ฅผ ์กฐํํฉ๋๋ค.
Args:
data_name: ๋ฐ์ดํฐ์
์ด๋ฆ (ํ์). ์: "๊ฒฝ์ ์ฌ๋ฆฌ์ง์", "์๋น์๋ฌผ๊ฐ์ง์"
start_count: ์กฐํ ์์ ์๋ฒ (๊ธฐ๋ณธ๊ฐ: 1)
end_count: ์กฐํ ๋ ์๋ฒ (๊ธฐ๋ณธ๊ฐ: 100)
language: ์๋ต ์ธ์ด โ "kr" ๋๋ "en"
Returns:
๋ฉํ๋ฐ์ดํฐ
Inputs: data_name (required), language, end_count, start_count.
list_statistic_itemsํต๊ณํ ์ธ๋ถํญ๋ชฉARead-onlyIdempotent
ํน์ ํต๊ณํ์ ์ธ๋ถ ํญ๋ชฉ(ํญ๋ชฉ์ฝ๋, ์ง์ ์ฃผ๊ธฐ, ์๋ก ๊ธฐ๊ฐ, ๋จ์)์ ์กฐํํฉ๋๋ค.
Args:
stat_code: ํต๊ณํ์ฝ๋ (ํ์). search_statistic_tables์์ ์ฐพ์ ์ฝ๋ ์
๋ ฅ.
start_count: ์กฐํ ์์ ์๋ฒ (๊ธฐ๋ณธ๊ฐ: 1)
end_count: ์กฐํ ๋ ์๋ฒ (๊ธฐ๋ณธ๊ฐ: 500)
language: ์๋ต ์ธ์ด โ "kr" ๋๋ "en"
Returns:
์ธ๋ถํญ๋ชฉ ๋ชฉ๋ก (has_more=true๋ฉด start_count๋ฅผ ๋๋ ค ๋ค์ ํ์ด์ง ์กฐํ)
Inputs: stat_code (required), language, end_count, start_count.
search_statisticsํต๊ณ ์๊ณ์ด ์กฐํARead-onlyIdempotent
ํต๊ณ ์๊ณ์ด ๋ฐ์ดํฐ๋ฅผ ์กฐ๊ฑด๋ณ๋ก ์กฐํํฉ๋๋ค.
โ
์ค๋งํธ ๋ ์ง: start_date, end_date๋ฅผ ์๋ตํ๋ฉด ์ผ๊ฐ(D)์ ์ต๊ทผ 3๊ฐ์, ๊ทธ ์ธ ์ฃผ๊ธฐ๋ ์ต๊ทผ 2๋
์ด ์๋ ์ค์ ๋ฉ๋๋ค.
โ
์ต์ ์ฐ์ : ๊ฒฐ๊ณผ๊ฐ end_count๋ฅผ ๋์ผ๋ฉด ๊ฐ์ฅ ์ต๊ทผ ๊ตฌ๊ฐ์ ๋ฐํํ๊ณ truncated=true์ ์๋ด๋ฅผ ๋ถ์
๋๋ค.
โ
์ฆ๊ฐ๋ฅ : transform="yoy"(์ ๋
๋๊ธฐ๋๋น %) ๋๋ "pop"(์ง์ ๊ด์ธก์น ๋๋น %)๋ฅผ ์ง์ ํ๋ฉด ๊ณ์ฐ ์ด์ด ์ถ๊ฐ๋ฉ๋๋ค.
โ
ํฌ๋งท: "compact"(๊ธฐ๋ณธ๊ฐ, ๊ณ์ด๋ณ [์์ , ๊ฐ] ๋ฐฐ์ด), "csv", "json"(ECOS ์๋ณธ ํ)
โ
์ฃผ๊ธฐ(cycle) ๋ฐ ๋ ์ง ํฌ๋งท ๊ท์น:
- ์ฐ๊ฐ(A): YYYY (์: "2024")
- ๋ฐ๊ธฐ(S): YYYYS1, YYYYS2 (์: "2023S1")
- ๋ถ๊ธฐ(Q): YYYYQ1 ~ YYYYQ4 (์: "2024Q3")
- ์๊ฐ(M): YYYYMM (์: "202401")
- ๋ฐ์(SM): YYYYMMS1, YYYYMMS2 (์: "202401S1")
- ์ผ๊ฐ(D): YYYYMMDD (์: "20240315")
Args:
stat_code: ํต๊ณํ์ฝ๋ (ํ์). ์: "722Y001"(๊ธฐ์ค๊ธ๋ฆฌ), "901Y009"(์๋น์๋ฌผ๊ฐ)
cycle: ์ฃผ๊ธฐ (ํ์). A(์ฐ), S(๋ฐ๊ธฐ), Q(๋ถ๊ธฐ), M(์), SM(๋ฐ์), D(์ผ)
start_date: ๊ฒ์ ์์์ผ (์ ํ)
end_date: ๊ฒ์ ์ข
๋ฃ์ผ (์ ํ)
item_code1~4: ํต๊ณํญ๋ชฉ์ฝ๋ (์ ํ. ๋ฏธ์ง์ ์ ์ ์ฒด ์ธ๋ถํญ๋ชฉ ์กฐํ โ ๊ฒฐ๊ณผ๊ฐ ๋งค์ฐ ์ปค์ง ์ ์์)
output_format: "compact"(๊ธฐ๋ณธ๊ฐ), "csv", "json"
transform: "yoy", "pop", "none"(๊ธฐ๋ณธ๊ฐ)
changes_only: True๋ฉด ๊ฐ์ด ๋ฐ๋ ์์ ๋ง ๋ฐํ (๊ธ๋ฆฌ์ฒ๋ผ ๋๋ฌผ๊ฒ ๋ณํ๋ ์ผ๋ณ ์งํ์ ์ ์ฉ)
prefer_latest: ๊ฒฐ๊ณผ๊ฐ ์๋ฆด ๋ ์ต์ ๊ตฌ๊ฐ์ ์ฐ์ ๋ฐํ (๊ธฐ๋ณธ๊ฐ True)
start_count: ์กฐํ ์์ ์๋ฒ (๊ธฐ๋ณธ๊ฐ: 1)
end_count: ์กฐํ ๋ ์๋ฒ (๊ธฐ๋ณธ๊ฐ: 1000)
language: ์๋ต ์ธ์ด โ "kr" ๋๋ "en"
Returns:
์๊ณ์ด ๋ฐ์ดํฐ (์ง์ ๋ ํฌ๋งท)
Inputs: cycle (required), stat_code (required), end_date, language, +11 more.
search_statistic_tablesํต๊ณํ ๊ฒ์ยทํ์ARead-onlyIdempotent
ํต๊ณํ ์ด๋ฆ์ผ๋ก ํต๊ณํ์ฝ๋(STAT_CODE)๋ฅผ ๊ฒ์ํ๊ฑฐ๋, ํต๊ณํ ๋ถ๋ฅ ํธ๋ฆฌ๋ฅผ ํ์ํฉ๋๋ค.
ECOS ํต๊ณํ ์ ์ฒด์ ๋ก์ปฌ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฏ๋ก API ํธ์ถ ์์ด ์ฆ์ ์๋ตํฉ๋๋ค.
- keyword ์ง์ : ์ด๋ฆ ๊ฒ์. ๋์ด์ฐ๊ธฐ๋ก ๋๋ ๋จ์ด๊ฐ ๋ชจ๋ ํฌํจ๋ ํต๊ณํ๋ฅผ ๊ด๋ จ๋ ์์ผ๋ก ๋ฐํ
("์๋น์ ๋ฌผ๊ฐ" โ "์๋น์๋ฌผ๊ฐ์ง์"). parent_code๋ฅผ ํจ๊ป ์ฃผ๋ฉด ๊ทธ ๋ถ๋ฅ ์๋์์๋ง ๊ฒ์ํฉ๋๋ค.
- keyword ์์ด parent_code ์ง์ : ํด๋น ๋ถ๋ฅ์ ์ง์ ํ์ ํญ๋ชฉ ๋ฐํ (๋ถ๋ฅ ๋
ธ๋ ํฌํจ)
- ๋ ๋ค ์์: ์ต์์ ๋ถ๋ฅ ๋ชฉ๋ก ๋ฐํ
Args:
keyword: ๊ฒ์ํ ํต๊ณ๋ช
๋๋ ํค์๋ (์: "๋ฌผ๊ฐ", "๊ธ๋ฆฌ", "ํ์จ", "๊ฒฝ์์์ง")
parent_code: ์์ ๋ถ๋ฅ STAT_CODE (์: "0000000001")
searchable_only: keyword ๊ฒ์ ์ ์ค์ ๋ฐ์ดํฐ ์กฐํ๊ฐ ๊ฐ๋ฅํ ํต๊ณํ(SRCH_YN='Y')๋ง ๋ฐํ (๊ธฐ๋ณธ๊ฐ: True)
limit: keyword ๊ฒ์ ์ ์ต๋ ๋ฐํ ๊ฐ์ (๊ธฐ๋ณธ๊ฐ: 20)
Returns:
ํต๊ณํ ๋ชฉ๋ก (STAT_CODE, STAT_NAME, CYCLE, SRCH_YN ๋ฑ)
Inputs: limit, keyword, parent_code, searchable_only.
search_statistic_wordํต๊ณ ์ฉ์ด ์ฌ์ ARead-onlyIdempotent
๊ฒฝ์ /ํต๊ณ ์ฉ์ด์ ์ ์๋ฅผ ๊ฒ์ํฉ๋๋ค.
ํ๊ตญ์ํ ํต๊ณ์ฉ์ด์ฌ์ ์์ ์ฉ์ด์ ์์ธ ์ค๋ช
์ ์กฐํํฉ๋๋ค.
์: "๊ธฐ์ค๊ธ๋ฆฌ", "GDP", "์๋น์๋ฌผ๊ฐ์ง์", "ํตํ์น์" ๋ฑ
(ECOS ๋ฐฉํ๋ฒฝ ์ ์ฝ์ผ๋ก '/'๋ ๊ณต๋ฐฑ์ผ๋ก ๋ฐ๋์ด ๊ฒ์๋ฉ๋๋ค.)
Args:
word: ๊ฒ์ํ ํต๊ณ/๊ฒฝ์ ์ฉ์ด
start_count: ์กฐํ ์์ ์๋ฒ (๊ธฐ๋ณธ๊ฐ: 1)
end_count: ์กฐํ ๋ ์๋ฒ (๊ธฐ๋ณธ๊ฐ: 10)
language: ์๋ต ์ธ์ด โ "kr" ๋๋ "en"
Returns:
์ฉ์ด ์ ์ ๋ชฉ๋ก
Inputs: word (required), language, end_count, start_count.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogโฆ
TDQS
Scored across 7 tools
get_popular_statistic, get_key_statistics, and search_statistics all return economic indicator data, so an agent must infer which mode fits the query. The descriptions clarify code-free keyword lookup versus generic code-based queries versus a fixed 100-indicator list, but 'popular' and 'key' remain semantically close.
Names are grouped by action (get_, search_, list_) and remain readable, but the set mixes singular and plural forms ('statistic' vs 'statistics') and uses different object patterns like get_popular_statistic versus get_key_statistics. The naming is not chaotic, but it is not fully consistent.
Seven tools is a well-scoped size for an economic-statistics server. Each tool serves a distinct stage of the workflow: quick lookup, generic retrieval, table discovery, item discovery, metadata, and dictionary lookup.
The tool surface covers the main ECOS workflows end to end: find a statistical table, inspect its items, retrieve time series, fetch metadata, look up terms, and access popular or major indicators. There are no obvious dead ends or missing core operations for the stated domain.
Maintenance
Related MCP Connectors
Korean company facts in English for AI agents: ~830 KOSPI-listed companies (DART profiles, KRW financials, recent filings) and ~110,000 corporate public procurement suppliers (12-month KONEPS contract awards), plus live National Tax Service business status checks. 4 tools, keyless, read-only.
ECOS โ Bank of Korea Economic Statistics System.
Korean national statistics (KOSIS) โ browse, search and pull time series from Statistics Korea'sโฆ
Korean fact-verification tools for AI agents: business registration, address, DART, apt prices, laws
Related MCP Servers
- AlicenseAqualityBmaintenanceEnables natural language querying of Korean statistical data from KOSIS, including population, employment, GDP, housing prices, and more, with support for regional and trend analysis.813 npm17MIT
- AlicenseNot gradedqualityDmaintenanceEnables querying Korean official statistics from KOSIS via natural language in MCP clients like Claude Desktop, wrapping the KOSIS OpenAPI for search, data retrieval, and metadata exploration.MIT
- FlicenseNot gradedqualityCmaintenanceEnables querying Korean economic statistics via Bank of Korea's ECOS API, including time series data, statistical tables, items, key indicators, and terminology, with raw responses and error fidelity.-
- AlicenseNot gradedqualityCmaintenanceEnables querying Bank of Korea ECOS economic statistics via Open API, including searching tables, retrieving time series data, and accessing key indicators.MIT