MCP server for Korean KOSIS OpenAPI statistics data
Project description
korean-stat-mcp
KOSIS OpenAPI 데이터를 MCP 클라이언트에서 바로 쓸 수 있게 만든 Python 서버입니다.
Claude Desktop, Claude Code, Cursor, Windsurf 같은 MCP 지원 도구에서 통계표를 검색하고, 메타데이터를 확인하고, 데이터를 가져와 간단한 분석까지 이어갈 수 있습니다.
할 수 있는 일
- KOSIS 통계표 키워드 검색
- 기관/주제별 통계 목록 탐색
- 통계표 분류, 항목, 수록 기간 같은 메타데이터 조회
- 원천 데이터 조회, 필터링, 그룹 집계
- 저장된 데이터 청크 읽기와 원천 데이터 검증
verify_statistics로 특정 수치가 KOSIS 원천 행과 맞는지 확인
KOSIS API는 테이블마다 필요한 파라미터가 조금씩 다르고, 기간/분기/지자체 데이터에서 예외가 자주 나옵니다. 이 서버는 그 부분을 MCP 도구 형태로 감싸서 클라이언트 쪽 설정을 줄이는 데 초점을 둡니다.
설치
먼저 KOSIS OpenAPI 키가 필요합니다. 키는 KOSIS OpenAPI 신청 페이지에서 발급받을 수 있습니다.
Claude Desktop / Cursor / Windsurf
pip install korean-stat-mcp
MCP 설정 파일에 아래 내용을 추가합니다.
{
"mcpServers": {
"korean-stat": {
"command": "korean-stat-mcp",
"env": {
"KOSIS_API_KEY": "<KOSIS_API_KEY>"
}
}
}
}
Claude Desktop의 macOS 설정 파일 위치:
~/Library/Application Support/Claude/claude_desktop_config.json
MCP 클라이언트 설정
{
"mcpServers": {
"korean-stat": {
"command": "korean-stat-mcp",
"env": {
"KOSIS_API_KEY": "<KOSIS_API_KEY>"
}
}
}
}
직접 실행
pip install korean-stat-mcp
export KOSIS_API_KEY="<KOSIS_API_KEY>"
korean-stat-mcp # stdio MCP, 로컬 Claude Desktop/Cursor용
korean-stat-mcp --http # Streamable HTTP 서버, http://localhost:8000/mcp
설치 확인:
korean-stat-mcp --version
원격 MCP로 호스팅하기
공식 호스팅 엔드포인트는 아직 없습니다. Claude.ai의 custom connector에서 쓰려면 직접 배포한 뒤 아래 형태의 URL을 등록합니다.
https://<your-host>/mcp
배포 예시는 deploy/README.md에 정리되어 있습니다. Docker, Fly.io, Render, Railway, DigitalOcean App Platform, 일반 VPS 배포를 다룹니다.
상태 확인:
curl https://<your-host>/health
주요 도구
| 구분 | 도구 | 용도 |
|---|---|---|
| 검색 | search_statistics |
키워드로 통계표 찾기 |
| 탐색 | browse_categories |
기관/주제별 목록 탐색 |
| 메타데이터 | get_table_metadata, get_available_values |
분류, 항목, 기간 확인 |
| 데이터 | get_statistics_data |
KOSIS 원천 데이터 조회 |
| 가공 | filter_statistics, aggregate_statistics |
필터링, 그룹 집계 |
| 저장 데이터 | read_stored_data, list_stored_data |
큰 결과를 나눠 읽기 |
| 검증 | verify_statistics |
특정 수치와 원천 데이터 대조 |
전체 도구 목록과 이전 이름과의 매핑은 docs/TOOL_MIGRATION.md를 참고하세요.
환경변수
| 변수 | 필수 | 설명 |
|---|---|---|
KOSIS_API_KEY |
예 | KOSIS OpenAPI 인증키 |
KOSIS_ARTIFACTS_DIR |
아니오 | 로컬 차트/리포트 저장 경로 |
KOSIS_MCP_URL |
아니오 | 자체 호스팅 인스턴스의 base URL |
전체 예시는 .env.example에 있습니다.
검증 상태
- Python 3.12 / 3.13 CI를 사용합니다.
- 2026-04-30 기준 unit test는 449개가 통과했습니다.
- KOSIS live pilot 100건에서 API 오류, timeout, parse 오류는 없었습니다.
no_data2건은 폐기되었거나 응답이 비어 있는 통계표로 분류했습니다.
자세한 내용은 docs/VALIDATION_REPORT.md에 있습니다.
문서
- docs/USER_GUIDE.md: 사용자 가이드
- docs/KOSIS_API_REFERENCE.md: KOSIS API 정리
- docs/TOOL_MIGRATION.md: 도구 이름 변경/매핑
- deploy/README.md: 배포 가이드
- MIGRATION.md: 기존
kosis-mcp사용자용 변경 사항 - CONTRIBUTING.md: 개발 환경과 PR 절차
라이선스
코드는 MIT 라이선스로 배포됩니다. KOSIS 데이터 자체의 이용 조건은 KOSIS 국가통계포털 정책을 따릅니다.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file korean_stat_mcp-0.1.4.tar.gz.
File metadata
- Download URL: korean_stat_mcp-0.1.4.tar.gz
- Upload date:
- Size: 84.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0387d1f9a18fea59ad704c91d8328cb3c5d47ce3df483631d45fe0a6e5f0db4c
|
|
| MD5 |
d37047be265a57acba86aa172991a72e
|
|
| BLAKE2b-256 |
3032d9e7355dbb28d061f6625034024755ccbadfcfbd876b7f209acc4f00f2f6
|
Provenance
The following attestation bundles were made for korean_stat_mcp-0.1.4.tar.gz:
Publisher:
release.yml on seolcoding/korean-stat-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
korean_stat_mcp-0.1.4.tar.gz -
Subject digest:
0387d1f9a18fea59ad704c91d8328cb3c5d47ce3df483631d45fe0a6e5f0db4c - Sigstore transparency entry: 1408834068
- Sigstore integration time:
-
Permalink:
seolcoding/korean-stat-mcp@964d1db03060210e7dacb1b7bdfaa6fb0613bd90 -
Branch / Tag:
refs/tags/v0.1.4 - Owner: https://github.com/seolcoding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@964d1db03060210e7dacb1b7bdfaa6fb0613bd90 -
Trigger Event:
push
-
Statement type:
File details
Details for the file korean_stat_mcp-0.1.4-py3-none-any.whl.
File metadata
- Download URL: korean_stat_mcp-0.1.4-py3-none-any.whl
- Upload date:
- Size: 98.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
042fdce4c97141a90fa607131369560b114db6ca28359899ec03da678a9522d4
|
|
| MD5 |
b4585b1a500c99b1e6e6192c786e599b
|
|
| BLAKE2b-256 |
6c0e48b86c43e62cc725840ac10eee066b6d5f9cef1d6e926e59c0bf17b697b1
|
Provenance
The following attestation bundles were made for korean_stat_mcp-0.1.4-py3-none-any.whl:
Publisher:
release.yml on seolcoding/korean-stat-mcp
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
korean_stat_mcp-0.1.4-py3-none-any.whl -
Subject digest:
042fdce4c97141a90fa607131369560b114db6ca28359899ec03da678a9522d4 - Sigstore transparency entry: 1408834681
- Sigstore integration time:
-
Permalink:
seolcoding/korean-stat-mcp@964d1db03060210e7dacb1b7bdfaa6fb0613bd90 -
Branch / Tag:
refs/tags/v0.1.4 - Owner: https://github.com/seolcoding
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@964d1db03060210e7dacb1b7bdfaa6fb0613bd90 -
Trigger Event:
push
-
Statement type: