| title | Public Data Opportunity MCP |
|---|---|
| sdk | docker |
| app_port | 7860 |
| pinned | false |
공공데이터포털(data.go.kr)에 열린 데이터셋과 OpenAPI 접근 경로를 MCP tool로 제공하는 서버입니다.
핵심 질문은 하나입니다.
“공공데이터에 이런 내용이 있는가? 있다면 API인가, XML/JSON인가, 파일인가? 상세 링크는 무엇인가?”
이 프로젝트의 산출물은 MCP 서버 자체입니다. Claude, Codex, Cursor 같은 MCP 클라이언트가 이 서버에 연결하면 공공데이터 카탈로그 검색, 접근 방식 판별, 상세 링크 반환, 최근 변경 조회를 tool call로 수행할 수 있습니다.
이 저장소는 공공데이터포털을 대상으로 하는 Remote/Local MCP 서버를 구현합니다.
- 로컬 stdio MCP 서버
- 외부 공개용 Streamable HTTP MCP 서버
- 공공데이터 카탈로그 로더
- 원격 CSV 카탈로그 로더 (
DATA_GO_KR_CATALOG_URL) - 데이터셋 검색 tool
- API/파일/XML/JSON 접근 경로 판별 tool
- 최근 등록/수정 데이터셋 조회 tool
- 거래상대방 검증을 위한 공공데이터 source route 추천 tool
사용자는 “MCP를 만들려는 사람”이 아닙니다. 사용자는 이미 배포된 이 MCP 서버를 자신의 MCP 클라이언트에 연결해서 공공데이터포털 카탈로그를 조회하는 사람입니다.
- 공공데이터 카탈로그 CSV/JSON을 로드합니다.
- 자연어 질문으로 관련 데이터셋을 조회합니다.
- 후보별 접근 방식을 알려줍니다.
- OpenAPI
- 파일 다운로드
- 표준데이터
- XML
- JSON
- CSV
- 데이터 상세 페이지 링크를 반환합니다.
- agent/자동화 호출에 적합한 접근 방식인지 점수화합니다.
- 최근 등록/수정된 데이터셋을 조회합니다.
- 계약, 구매, 정산, 세일즈, 입찰, 감사 workflow에서 거래상대방 확인에 필요한 공공데이터 source route와 risk flag를 반환합니다.
- 로컬 stdio MCP와 외부 공개용 HTTP MCP를 모두 지원합니다.
- 공공데이터포털 API 키를 대신 발급하지 않습니다.
- 각 기관의 모든 하위 API를 직접 호출하지 않습니다.
- 국세청/FSC/DART API를 실시간 호출해 거래상대방의 active/inactive 상태를 확정하지 않습니다.
- 활용신청, 심의승인, 트래픽 제한을 우회하지 않습니다.
- 영구 watchlist / Slack / Telegram 알림은 아직 없습니다.
현재 MVP는 공공데이터 접근 경로를 제공하는 MCP 서버입니다. 범용 정부 API 게이트웨이가 아닙니다.
현재 MCP 서버가 로드한 카탈로그 출처, 로드 시각, 데이터셋 수를 반환합니다.
“이런 데이터 있어?”라는 질문에 답합니다.
예시 질문:
공공데이터에 나라장터 입찰공고 가져올 수 있는 데이터 있어?
agent에서 호출 가능한 방식이면 링크도 줘.
반환 내용:
- 후보 데이터셋
- OpenAPI / 파일 / 표준데이터 여부
- JSON / XML / CSV 포맷
- 활용신청 필요 가능성
- 상세 페이지 URL
- 문서 확인 힌트
- 공공데이터포털 fallback 검색 URL
구조화된 검색 도구입니다.
필터:
keywordservice_type:openapi,file,standard,anyagencycategoryupdated_afterlimit
데이터셋 ID 또는 data.go.kr URL을 넣으면 정규화된 메타데이터와 접근 방식을 반환합니다.
프로젝트 또는 업무 설명을 입력하면 관련 공공데이터 후보를 반환합니다.
예시:
나라장터 입찰공고를 모니터링해서 회계법인 입찰 기회를 알려주는 agent
로드된 카탈로그 안에서 최근 등록/수정된 데이터셋을 조회합니다.
특정 데이터셋이 agent / 자동화 호출에 적합한지 점수화합니다.
평가 신호:
- OpenAPI 여부
- JSON/XML 지원 여부
- 갱신주기
- 자동승인 여부
- 무료 여부
- 상세 URL 존재 여부
- 프로젝트 설명과의 키워드 겹침
계약, 구매, 정산, 세일즈, 입찰, 감사 agent가 한국 거래상대방을 승인하기 전에 확인해야 할 공공데이터 source route, risk flag, evidence, next action을 반환합니다.
예시 입력:
{
"business_no": "123-45-67890",
"company_name": "테스트상사",
"representative_name": "홍길동",
"context": "purchase"
}v1은 catalog-backed입니다. live agency API를 호출하지 않으며, 거래상대방이 실제 active 상태라는 최종 증거로 취급하면 안 됩니다. needs_review 응답은 관련 공공데이터 경로를 찾고 identity를 정규화했지만, 승인 전 국세청/FSC/DART live check가 아직 필요하다는 뜻입니다.
기본 실행 시에는 샘플 카탈로그를 사용합니다.
실제 운영에서는 공공데이터포털 목록개방현황 CSV를 그대로 런타임에 읽지 말고, 배포용 compact catalog로 변환해서 연결하는 것을 권장합니다.
권장 원천:
변환 명령:
npm run catalog:prepare -- \
/absolute/path/to/공공데이터포털_목록개방현황.csv \
data/catalog.compact.jsonl.gz현재 확인한 실제 파일 기준 결과:
원본 CSV: 127MB
compact JSONL gzip: 약 25MB
row 수: 95,623
서비스 유형: FILE 83,220 / API 12,103 / STD 300
서버 로드: 약 0.7초
검색: 약 0.08초
메모리 RSS: 약 330~360MB
로컬 파일로 연결:
export DATA_GO_KR_CATALOG_PATH=/absolute/path/to/catalog.compact.jsonl.gz외부 배포 서버에서는 compact gzip 파일을 object storage에 올리고 URL로 연결하는 방식을 권장합니다.
export DATA_GO_KR_CATALOG_URL=https://your-storage.example.com/catalog.compact.jsonl.gz관련 공식 API:
npm install
npm run buildstdio MCP:
npm run start:stdioHTTP MCP:
npm start기본 HTTP 엔드포인트:
GET /health
GET /
GET /catalog/status
POST /mcp
이 서버는 두 가지 방식으로 MCP 클라이언트에 연결할 수 있습니다.
- Remote HTTP MCP: 공개 HTTPS URL의
/mcp엔드포인트에 연결합니다. - stdio MCP: 로컬 컴퓨터에서 서버 프로세스를 직접 실행합니다.
공개 서버에 연결하는 일반적인 endpoint 형식:
https://your-domain.example.com/mcp
서버가 Bearer token을 요구하는 경우 MCP 클라이언트에서 다음 인증 헤더를 함께 설정해야 합니다.
Authorization: Bearer <token>Codex CLI 예시:
codex mcp add public-data-opportunity --url https://your-domain.example.com/mcp등록 확인:
codex mcp get public-data-opportunity로컬에서 직접 실행할 때 사용합니다.
{
"mcpServers": {
"public-data-opportunity": {
"command": "node",
"args": [
"/absolute/path/to/public-data-opportunity-mcp/dist/src/server.js"
],
"env": {
"DATA_GO_KR_CATALOG_PATH": "/absolute/path/to/catalog.compact.jsonl.gz"
}
}
}
}HTTP MCP 서버는 Node.js가 실행되는 PaaS, VPS, 컨테이너 호스팅, Docker 기반 플랫폼에 배포할 수 있습니다.
배포 환경의 필수 조건:
- 외부에서 접근 가능한 HTTPS URL
POST /mcp요청 전달- 헬스체크용
GET /health - 실제 운영 시 인증 토큰 또는 네트워크 접근 제한
기본값:
HOST=0.0.0.0
PORT=3000권장값:
PUBLIC_BASE_URL=https://your-domain.example.com
MCP_BEARER_TOKEN=change-this-token실제 카탈로그 연결:
DATA_GO_KR_CATALOG_PATH=/app/data/catalog.compact.jsonl.gz또는:
DATA_GO_KR_CATALOG_URL=https://your-storage.example.com/catalog.compact.jsonl.gzMCP_BEARER_TOKEN을 설정하면 /mcp 호출 시 Bearer 인증이 필요합니다.
npm ci
npm run build
npm startnpm start는 HTTP MCP 서버를 실행합니다.
GET /
GET /health
GET /catalog/status
POST /mcp
docker build -t public-data-opportunity-mcp .
docker run \
-p 3000:3000 \
-e HOST=0.0.0.0 \
-e PORT=3000 \
-e MCP_BEARER_TOKEN=change-this-token \
-e DATA_GO_KR_CATALOG_URL=https://your-storage.example.com/catalog.compact.jsonl.gz \
public-data-opportunity-mcp헬스체크:
curl https://your-domain.example.com/health예상 응답:
{
"status": "ok",
"datasetCount": 95623,
"catalogSource": "https://your-storage.example.com/catalog.compact.jsonl.gz",
"catalogLoadedAt": "2026-05-16T14:00:00.000Z"
}카탈로그 상태:
curl https://your-domain.example.com/catalog/statusMCP endpoint:
https://your-domain.example.com/mcp
PaaS에서 GitHub 저장소를 연결하는 경우 핵심 설정은 다음과 같습니다.
Build command: npm ci && npm run build
Start command: npm start
Health check path: /health
Environment:
HOST=0.0.0.0
PUBLIC_BASE_URL=https://your-service-domain
MCP_BEARER_TOKEN=<원하는 토큰>
DATA_GO_KR_CATALOG_URL=https://your-storage.example.com/catalog.compact.jsonl.gz
공공데이터에 폐업 사업자 상태 조회할 수 있는 API 있어?
XML이나 JSON으로 호출 가능한 링크까지 줘.
부동산 임대차 리스크를 모니터링하는 agent를 만들고 싶어.
관련 공공데이터 후보와 접근 링크를 찾아줘.
최근 수정된 조달/입찰 관련 OpenAPI를 찾아줘.
이 데이터셋이 자동화 서비스로 수익화하기 좋은지 평가해줘:
https://www.data.go.kr/data/15129394/openapi.do
npm test
npm run typecheck
npm run buildsrc/
catalog/
load.ts # CSV/JSON 로딩
normalize.ts # 한글 카탈로그 컬럼 정규화
search.ts # 검색, 필터, 최근 업데이트 조회
types.ts # 도메인 타입
scoring/
opportunity.ts # agent/자동화 접근 적합도 점수화
tools/
format.ts # 응답 포맷
register.ts # MCP tool 등록
http.ts # 외부 공개용 Streamable HTTP 서버
server.ts # 로컬 stdio MCP 서버
- 공공데이터포털 최신 목록개방현황 자동 수집 명령 추가
DATA_GO_KR_SERVICE_KEY기반 공식 검색/목록 API 연동- 신규/수정 데이터셋 diff snapshot
- 프로젝트별 watchlist
- Slack / Telegram 알림
- 상세 페이지 enrich: Swagger, 참고문서, 샘플 요청 URL 추출
- 도메인팩: 조달/입찰, 부동산, 정책지원사업, 상권, 회계/감사
MIT