ne-kosis-mcp
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., "@ne-kosis-mcp초등학생 수 추이를 최근 10년간 조회하고 연평균 성장률을 계산해줘"
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.
ne-kosis-mcp
국가통계포털(KOSIS) OpenAPI를 쓰는 MCP(Model Context Protocol) 서버입니다. 인구, 지역별 학생 수, 사교육비 같은 통계를 찾고(find_table), 조회하고(kosis_data), 추이와 성장률을 계산하고(kosis_trend), 엑셀/CSV로 내보냅니다(kosis_export). 거시 트렌드와 시장 규모 파악이 목적입니다.
구조 참고: 설정, 캐시, 도구 허용 목록, 내보내기 구조는 ne-naver-api-mcp(원본: isnow890/naver-search-mcp, MIT License)에서 가져왔습니다. 원본의 저작권 고지는
LICENSE에 그대로 유지됩니다.
상태
키 없이 검증한 것: 단위 테스트(가짜 응답), 기간 분할, 수치 파싱, 증감률·CAGR 계산, 카탈로그 검색, 서버 도구 등록.
실제 KOSIS 호출로 아직 검증하지 못한 것: 응답 구조, 오류 형식(
err/errMsg), 메타(getMetaITM/OBJ) 응답 키, 반기 코드(HvsS),parentListId/parentId중 맞는 이름. KOSIS 문서에 샘플 응답이 없어 추정으로 구현했습니다. 키를 넣고KOSIS_LIVE_TEST=1 uv run pytest tests/live로 확인하세요.카탈로그(
data/catalog.json)는 비어 있습니다. 통계표 ID를 기억에 의존해 적으면 틀린 값이 들어갈 수 있어서, 키로 실제 호출해 검증한 표만 넣기로 했습니다. 아래 "카탈로그 채우기"를 보세요. 그전에는find_table이 KOSIS 통합검색으로 대신합니다.
Related MCP server: Korea Stats MCP
도구 (7개)
도구 | 하는 일 |
| 자연어로 통계표를 찾습니다. 카탈로그 → 없으면 KOSIS 통합검색 |
| KOSIS 통합검색 직접 실행 (기관, 정렬, 페이지) |
| 주제별/기관별 통계목록 트리 탐색 |
| 통계표의 항목(ITM)과 분류(OBJ) 코드 조회 |
| 자료 조회 (기간 지정 또는 최근 N개 시점). 40,000셀을 넘으면 기간을 자동 분할 |
| 시계열로 묶어 직전 시점 대비 증감률, 구간 변화량·증감률·연평균 성장률(CAGR) 계산 |
|
|
권장 흐름: find_table → kosis_table_meta → kosis_data 또는 kosis_trend → kosis_export.
설치
필요한 것: uv, KOSIS 인증키(https://kosis.kr/openapi 로그인 후 활용신청).
claude mcp add ne-kosis -s user ^
-e KOSIS_API_KEY=발급키 ^
-e KOSIS_EXPORT_DIR=C:\Users\내이름\Documents\kosis-exports ^
-- uvx --from D:\repos\ne-kosis-mcp ne-kosis-mcp(줄 끝 ^는 Windows cmd의 줄 이음입니다.) 개발 중에는 이 폴더의 .env에 KOSIS_API_KEY=...를 넣으면 서버가 읽습니다(.env는 git에 올라가지 않습니다).
환경변수
이름 | 설명 | 기본값 |
| KOSIS 인증키 (필수) | — |
| 엑셀/CSV 저장 폴더. 지정을 권장합니다 |
|
| API 응답 캐시 폴더 |
|
| 캐시 유지 시간 |
|
| 노출할 도구 이름(쉼표 구분, 비우면 전체) | 전체 |
카탈로그
src/ne_kosis_mcp/data/catalog.json은 사람이 확인한 통계표 목록입니다. 항목 하나의 형식:
{
"id": "student-count-by-region",
"orgId": "...", "tblId": "...",
"title": "표 이름",
"topic": "교육 > 학생 수",
"description": "무엇을 재는지, 어떤 질문에 답하는지",
"prdSe": "Y", "period": "1990~2024",
"unit": "명",
"items": [{"id": "T1", "name": "학생수"}],
"classifications": [{"level": 1, "name": "시도", "note": "ALL이면 전체 시도"}],
"keywords": ["학생 수", "초등학생", "학령인구"],
"notes": ["2021년부터 조사 기준 변경"],
"verified": "YYYY-MM-DD"
}find_table은 keywords(가중치 최고), title, topic, description 순으로 점수를 매깁니다.
카탈로그 채우기
키가 있으면 uv run python scripts/build_catalog.py "학생수" "사교육비" ...로 주제별 후보를 KOSIS 통합검색과 메타 조회로 모아 catalog.draft.json에 씁니다. 후보를 사람이 확인(실제 kosis_data 호출로 값 확인)하고 설명·키워드·주의사항을 채워 catalog.json에 옮깁니다.
한계
ELT 시장 규모처럼 KOSIS에 직접 없는 지표는 대리 지표(영어 사교육비, 학원업 사업체·매출, 학령인구 등)로 추정해야 합니다. 도구는 통계표의 값만 돌려주며 시장 규모를 추정하지 않습니다.
통계표마다 단위와 조사 기준이 다릅니다. 모든 결과에
limitations가 붙습니다.기간 자동 분할은 연/반기/분기/월 주기와 시작·종료 지정일 때만 됩니다 (일 주기, 최근 N개는 범위를 직접 좁혀야 합니다).
개발
uv sync
uv run pytestAvailable Tools
7 toolsfind_tableA
자연어로 통계표를 찾습니다. 검증된 카탈로그(통계표 ID와 분류·항목 설명)를 먼저 보고, 없으면 KOSIS 통합검색으로 넘어갑니다. 통계 조회의 첫 단계입니다.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | 찾을 통계 주제 (예: '시도별 초등학생 수', '사교육비', '출생아 수') | |
| max_results | No | 최대 결과 수 (기본 10) | |
| include_search | No | True면 카탈로그에 결과가 있어도 KOSIS 통합검색을 함께 실행합니다 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose a useful behavioral trait beyond the schema: a two-stage strategy that consults a verified catalog first and only escalates to KOSIS integrated search when nothing is found. It says nothing about result format, latency, rate limits, or whether results are cached/authoritative.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core purpose before the retrieval strategy and the 'first step' framing. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity 3-parameter lookup tool with no output schema and no annotations, the description covers what it does and how it resolves queries well enough to invoke it. The main omission is any hint of what the returned catalog entries look like, which is a minor gap for a finder tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with each parameter documented in the schema (query examples, max_results default, include_search semantics). The description adds no parameter-level meaning beyond that, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: finding statistical tables from natural-language queries, and positions itself as the entry point of a statistics lookup flow. It implicitly distinguishes itself from the raw KOSIS search sibling by describing a catalog-first strategy, though it never names kosis_search or kosis_list directly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear context for when to reach for this tool: '통계 조회의 첫 단계입니다' (the first step of a statistics lookup) and explains the catalog-first-then-fallback ordering. It does not explicitly state when NOT to use it or which sibling to prefer for raw search, so it stops short of full alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kosis_dataA
통계표 자료를 조회합니다 (기간 지정 또는 최근 N개 시점). 결과가 40,000셀을 넘으면 기간을 자동으로 나눠 받습니다. 행이 많으면 kosis_export를 쓰세요.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | 종료 시점 (시작 시점과 같은 형식) | |
| start | No | 시작 시점 (주기별 형식: Y=YYYY, Q/H=YYYYQQ/HH, M=YYYYMM) | |
| itm_id | No | 항목 ID. 여러 개는 공백으로 구분, 전체는 'ALL' (kosis_table_meta로 확인) | ALL |
| org_id | Yes | 기관 ID (예: 통계청 101). find_table 결과의 orgId | |
| prd_se | Yes | 수록주기: Y(년) H(반기) Q(분기) M(월) D(일) F(2~10년 주기) IR(부정기) | |
| recent | No | 최근 N개 시점. 시작/종료를 주지 않으면 5개를 조회합니다 | |
| tbl_id | Yes | 통계표 ID (예: DT_1B040A3). find_table 결과의 tblId | |
| max_rows | No | 응답에 담을 최대 행 수 (넘치면 kosis_export 사용) | |
| classifications | No | 분류 코드 목록: 첫 원소가 분류1(objL1), 둘째가 분류2... 최대 8개. 전체는 'ALL', 여러 값은 공백으로 구분 (예: ["11 26", "ALL"]) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose one valuable trait – automatic period-splitting when the result exceeds 40,000 cells – but says nothing about pagination, return shape, or rate/permission constraints that an agent would want for a 9-parameter data pull.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with zero filler, and the core purpose plus the key behavioral constraint (40,000-cell auto-split) are front-loaded before the sibling redirect.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a data-retrieval tool with a fully documented 9-parameter schema and no output schema, the description covers purpose, modes, the large-result behavior, and the escape hatch to kosis_export. The main remaining gap is the shape of the returned data, which no output schema documents either.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every parameter is already documented in the schema with format hints (e.g. YYYYMM, 'ALL'). The description only restates the period-vs-recent choice at a high level and adds no parameter-level meaning beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb and resource (retrieving statistical table data) and scopes it to two modes, period-based or recent-N. It differentiates itself from kosis_export by routing large-row cases there, but gives no signal about how it differs from kosis_trend or kosis_table_meta.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly offers the two invocation modes (기간 지정 또는 최근 N개 시점) and names the alternative tool (kosis_export) with the condition that selects it (행이 많으면). It stops short of stating when NOT to use this tool beyond the row-count case.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kosis_exportA
통계표 자료를 엑셀(xlsx)과 CSV로 저장합니다 (원자료 시트 + 시점별 가로 표 시트). 저장 폴더는 KOSIS_EXPORT_DIR로 지정합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | 종료 시점 (시작 시점과 같은 형식) | |
| start | No | 시작 시점 (주기별 형식: Y=YYYY, Q/H=YYYYQQ/HH, M=YYYYMM) | |
| itm_id | No | 항목 ID. 여러 개는 공백으로 구분, 전체는 'ALL' (kosis_table_meta로 확인) | ALL |
| org_id | Yes | 기관 ID (예: 통계청 101). find_table 결과의 orgId | |
| prd_se | Yes | 수록주기: Y(년) H(반기) Q(분기) M(월) D(일) F(2~10년 주기) IR(부정기) | |
| recent | No | 최근 N개 시점. 시작/종료를 주지 않으면 5개를 조회합니다 | |
| tbl_id | Yes | 통계표 ID (예: DT_1B040A3). find_table 결과의 tblId | |
| file_name | No | 저장 파일 이름(확장자 제외). 기본: 통계표 ID | |
| classifications | No | 분류 코드 목록: 첫 원소가 분류1(objL1), 둘째가 분류2... 최대 8개. 전체는 'ALL', 여러 값은 공백으로 구분 (예: ["11 26", "ALL"]) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations, so the description carries the full burden. It usefully discloses the output artifact structure (two sheets, xlsx + CSV) and the KOSIS_EXPORT_DIR configuration, but says nothing about overwrite behavior, required write permissions on the directory, or whether a file path/confirmation is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tightly packed sentences: the operation and output formats come first, the output-location detail second. No filler and nothing redundant with the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a nine-parameter export tool with no annotations and no output schema, the definition covers the operation, artifacts, and destination folder but omits what the call returns (e.g., saved path) and any failure/overwrite semantics. Adequate but leaves real gaps for a write-to-disk tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so all nine parameters are already documented in the schema. The description adds no parameter-level detail beyond the KOSIS_EXPORT_DIR environmental note; baseline 3 is appropriate when the schema does the heavy lifting.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (저장합니다 / save) and resource (통계표 자료), plus the concrete output forms (xlsx, CSV, raw-data sheet + time-period sheet). This clearly separates it from data-fetching siblings like kosis_data, though the description never names an alternative explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies 'use this when you want the table written to disk rather than returned in-chat', but there is no explicit when-to-use/when-not guidance or reference to the sibling kosis_data it overlaps with. Usage must be inferred from the name and format details.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kosis_listB
KOSIS 통계목록(주제별/기관별 분류 트리)을 한 단계씩 탐색합니다.
| Name | Required | Description | Default |
|---|---|---|---|
| vw_cd | No | 목록 구분: MT_ZTITLE(주제별), MT_OTITLE(기관별) 등 | MT_ZTITLE |
| parent_id | No | 상위 목록 ID (최상위는 빈 값이 아니라 '0') | 0 |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full behavioral burden. It usefully discloses that this is a step-by-step (iterative) tree traversal, which is behavior beyond the schema, but it does not state read-only safety, what is returned, or how to proceed after a call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single efficient sentence, front-loaded with the resource and the traversal mode. It avoids waste, though it is arguably too terse for a tool with no annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple two-parameter tool with a fully documented schema, the description covers the core purpose. It omits important operational context: that it returns child nodes, how to use parent_id='0' for the root, and that repeated calls are needed to reach a table.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%: both vw_cd and parent_id are fully documented with defaults and enum-like values. The description adds no parameter meaning beyond the schema, so the baseline of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource: exploring the KOSIS statistics list, which is a theme/institution classification tree. The phrase '한 단계씩' (one step at a time) signals hierarchical traversal and distinguishes it from search-style siblings, though no sibling is named explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by '한 단계씩 탐색' – the agent can infer this tool is for iterative top-down browsing rather than searching or fetching data. However, no explicit when-to-use guidance or alternatives (e.g., kosis_search) are provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kosis_searchB
KOSIS 통합검색을 직접 실행합니다 (기관·정렬·페이지 지정 가능). 카탈로그에 없는 통계표를 찾을 때 씁니다.
| Name | Required | Description | Default |
|---|---|---|---|
| page | No | 페이지 번호 (1부터) | |
| sort | No | RANK(정확도순) 또는 DATE(최신순) | RANK |
| count | No | 페이지당 결과 수 | |
| query | Yes | KOSIS 통합검색어 | |
| org_id | No | 기관 ID로 좁히기 (선택) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full behavioral burden, and it adds almost nothing beyond the schema. It does not disclose result shape, pagination limits, whether results are ranked, or any cost/rate behavior for a tool that hits an external search endpoint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the action and followed by the routing condition, with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Covers purpose and a rough usage condition, but for a search tool with no output schema the description omits anything about what results look like or how to page through them. Adequate but with clear gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so page, sort, count, query and org_id are already fully documented in the schema. The description only restates that 기관·정렬·페이지 are specifiable, adding no format or syntax detail beyond it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb+resource (실행한다 / KOSIS 통합검색) and frames it as the direct search entry point. The clause about finding tables not in the catalog hints at a distinction from catalog-oriented siblings, though it does not name them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"카탈로그에 없는 통계표를 찾을 때 씁니다" gives a when-to-use condition, which implies the catalog tools are the alternative path. However, it never names kosis_list or find_table explicitly, so the routing decision is left to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kosis_table_metaA
통계표의 항목(ITM)과 분류(OBJ) 코드를 조회합니다. kosis_data에 넣을 코드를 확인하는 단계입니다.
| Name | Required | Description | Default |
|---|---|---|---|
| org_id | Yes | 기관 ID (예: 통계청 101). find_table 결과의 orgId | |
| tbl_id | Yes | 통계표 ID (예: DT_1B040A3). find_table 결과의 tblId |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It conveys that this is a lookup/조회 step that returns codes and feeds into kosis_data, which implies a read operation, but it says nothing about permissions, return format, or failure behavior for a metadata query.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two compact sentences, front-loaded with the what (ITM/OBJ code lookup) followed by the workflow position. No filler; both sentences carry information, though it is minimal overall.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a two-parameter, fully-required metadata lookup with no output schema, the description adequately conveys what is retrieved and how it fits before kosis_data. Slightly more on the return shape would help, but it is largely complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, with org_id and tbl_id both documented (including examples and their origin in find_table results). The description adds no parameter-level detail beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource: retrieving the item (ITM) and classification (OBJ) codes of a statistical table. This is distinct from the data-pulling siblings like kosis_data, which the description references, though it does not explicitly name find_table or other siblings for contrast.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence positions the tool as a preparatory step before kosis_data ('the step to check codes to put into kosis_data'), giving implied workflow context. It stops short of naming alternatives or stating when not to use it, so guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
kosis_trendA
통계표 자료를 시계열로 묶어 직전 시점 대비 증감·증감률과 구간 요약(변화량, 증감률, 연평균 성장률 CAGR)을 계산합니다. 거시 추이와 시장 규모 변화를 볼 때 씁니다.
| Name | Required | Description | Default |
|---|---|---|---|
| end | No | 종료 시점 (시작 시점과 같은 형식) | |
| start | No | 시작 시점 (주기별 형식: Y=YYYY, Q/H=YYYYQQ/HH, M=YYYYMM) | |
| itm_id | Yes | 항목 ID. 여러 개는 공백으로 구분, 전체는 'ALL' (kosis_table_meta로 확인) | |
| org_id | Yes | 기관 ID (예: 통계청 101). find_table 결과의 orgId | |
| prd_se | Yes | 수록주기: Y(년) H(반기) Q(분기) M(월) D(일) F(2~10년 주기) IR(부정기) | |
| recent | No | 최근 N개 시점. 시작/종료를 주지 않으면 5개를 조회합니다 | |
| tbl_id | Yes | 통계표 ID (예: DT_1B040A3). find_table 결과의 tblId | |
| group_by | No | 시계열을 나눌 분류 번호 (예: [1]이면 분류1별로 한 줄씩). 기본 [1] | |
| include_series | No | False면 요약(증감률·CAGR)만 돌려줍니다 | |
| classifications | Yes | 분류 코드 목록: 첫 원소가 분류1(objL1), 둘째가 분류2... 최대 8개. 전체는 'ALL', 여러 값은 공백으로 구분 (예: ["11 26", "ALL"]) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It does disclose the computation semantics (직전 시점 대비 증감, 구간 요약, CAGR), which is the key behavioral trait, but says nothing about missing periods, minimum data requirements, or how the default 5-point window is chosen.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler: the first front-loads what is computed and the output shape, the second gives the motivating use case. Every clause earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter analytical tool with no annotations and no output schema, the description does help by naming the returned metrics. But it omits default behavior (5 recent points), error handling, and any guidance on the required classification identifiers beyond what the schema already says.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, covering the date formats, ALL convention, group_by, and include_series, so the baseline is 3. The description adds no parameter-level meaning beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific action (시계열로 묶어 증감·증감률·CAGR 계산) on a specific resource (통계표 자료), so an agent knows exactly what comes back. It is clear but does not distinguish itself explicitly from the sibling kosis_data, which likely returns raw observations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The second sentence gives a use case (거시 추이와 시장 규모 변화 파악), which implies when to reach for this tool. However, it never states when NOT to use it or points to kosis_data/kosis_export for raw series or export, so routing remains inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
7 tool updates
v0.1.0- First observed
find_table - First observed
kosis_data - First observed
kosis_export - First observed
kosis_list - First observed
kosis_search - First observed
kosis_table_meta - First observed
kosis_trend
TDQS
Scored across 7 tools
Most tools target distinct stages of the pipeline (navigate tree, find table, get codes, fetch data, analyze trend, export). The one soft overlap is find_table versus kosis_search, since both locate tables, but the descriptions clarify that find_table consults the catalog first while kosis_search hits KOSIS search directly. kosis_data and kosis_trend also both return data, but trend's change/CAGR framing distinguishes it.
Six of seven tools share a clean kosis_ prefix with snake_case (kosis_list, kosis_search, kosis_table_meta, kosis_data, kosis_trend, kosis_export). The lone deviation is find_table, which drops the prefix and reads as an English verb_noun outlier. Minor but noticeable inconsistency.
Seven tools is well-scoped for a statistics retrieval service, with each tool mapping to a clear stage (discover, inspect schema, fetch, analyze, export). No redundant or filler tools.
The surface covers the full read-only lifecycle: tree navigation, catalog/search discovery, metadata codes, data retrieval, trend analysis, and export. As a read-only data source there is no CRUD update/delete gap, though the slight find_table/kosis_search overlap hints at a small redundancy rather than a true hole.
Maintenance
Related MCP Connectors
Korean national statistics (KOSIS) — browse, search and pull time series from Statistics Korea's…
Access Korea’s G2B procurement and Nara Market data for bid notices, awards, contracts, statistics…
Search and query 1,500+ OECD statistical datasets via SDMX. Keyless.
All KR Data tools in one server: Korean business checks, addresses, laws, car flood records & more
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables MCP clients like Claude Desktop to search, retrieve, and analyze Korean statistical data from KOSIS OpenAPI.161MIT
- 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.811 npm16MIT
- 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
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to retrieve real-time official Korean statistics from the KOSIS database through natural language queries, with source citations.MIT