Publicdata Kr

io.github.fieldcure由 GitHub 账号 fieldcure 发布v1.0.3更新于 Oct 24, 2026

Korean public data API gateway for discovering and calling data.go.kr APIs from MCP clients.

发布方自己的服务:publicdata.au

概览

AI 生成的概览

本地 MCP 服务器,让助手搜索、查看并调用 data.go.kr 上的韩国公共数据 API,并自动注入 API 密钥。

可以做什么
按关键词搜索 data.go.kr 上的 API,返回名称、提供方和端点,按服务去重,每页最多 50 条(discover_api)。按服务 ID 获取某个 API 的操作、请求参数和响应字段(describe_api)。调用白名单内的任意 data.go.kr 端点,查询参数以 JSON 字符串传入,服务密钥自动注入,XML 转为 JSON,响应长度受限,错误码翻译为韩文提示(call_api)。
适用场景
适合在助手会话中获取韩国公共数据,例如天气、空气质量、房地产、企业登记或交通信息,并希望助手自行找到合适的 API、了解其参数并完成查询,而无需直接处理密钥。
运行要求
以 .NET 工具形式在本地运行(dotnet tool install),需要 .NET 8.0 或更高版本的运行时。需要 data.go.kr 账号和 API 密钥,通过环境变量 DATA_GO_KR_API_KEY 提供,或在首次使用时经 MCP Elicitation 交互输入。账号需订阅 목록조회서비스 列表查询 API 才能发现接口,并需为每个要查询的 API 单独申请。需要访问获准的政府主机网络。
安装前请注意
服务器持有 data.go.kr API 密钥;密钥在会话期间缓存在进程内存中,并在错误输出中打码,但仍应按机密对待。调用会访问第三方政府主机并消耗账号的每日配额,可能返回超限错误。HTTP 401 既可能表示密钥无效,也可能表示尚未申请该 API,重新输入密钥无法解决未订阅的问题。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Publicdata Kr,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

FieldCure MCP PublicData.Kr

[NuGet] [License: MIT]

Korean public data API gateway. A Model Context Protocol (MCP) server that lets any MCP client discover, inspect, and call 80,000+ APIs on data.go.kr — weather, real estate, business registration, air quality, transit, and more. Built with C# and the official MCP C# SDK.

Features

  • 3 tools — search APIs by keyword, inspect parameters/response fields, call any data.go.kr API
  • Automatic serviceKey injection — the API key is added to every request; never leaked to the LLM
  • Lazy key resolution — env var → MCP Elicitation → soft-fail chain (no hard-fail on startup). Hosts that support MCP Elicitation can prompt the user for the key on first use; on upstream 401/403 or SERVICE_KEY_IS_NOT_REGISTERED the cached key is invalidated and a re-elicit is attempted (session cap: 2 re-elicits)
  • XML → JSON normalization — strips the response/header/body/items wrapper, returns clean JSON
  • Error code mapping — translates data.go.kr error codes into Korean guidance messages the LLM can relay directly
  • SSRF protection — domain whitelist limits calls to approved government hosts
  • EUC-KR support — legacy encoding from older government APIs is auto-detected and converted
  • Stateless — no cache, no database, no local files; every call is independent
  • Stdio transport — standard MCP subprocess model via JSON-RPC over stdin/stdout

Installation

dotnet tool (recommended)

bash
dotnet tool install -g FieldCure.Mcp.PublicData.Kr

After installation, the fieldcure-mcp-publicdata-kr command is available globally.

From source

bash
git clone https://github.com/fieldcure/fieldcure-mcp-publicdata.gitcd fieldcure-mcp-publicdatadotnet build

Prerequisites

  1. Sign up at data.go.kr and get your API key (data.go.kr 회원가입 후 인증키 발급)
  2. Subscribe to 목록조회서비스 (Required) — discover_api and describe_api depend on this API (discover_api, describe_api 도구가 이 API를 사용합니다)
  3. Subscribe to each individual API you want to query (조회하려는 개별 API도 각각 활용신청 필요)

Requirements

Authentication

This server requires a data.go.kr API key (공공데이터포털 인증키). Key resolution is lazy (on first tool call) and follows the FieldCure MCP Credential ADR:

  1. Environment variable — DATA_GO_KR_API_KEY (canonical) or PUBLICDATA_API_KEY (legacy alias)
  2. MCP Elicitation — if no env var is found, the server requests the key interactively on the first tool call (requires a client that supports MCP Elicitation — e.g. Claude Code ≥ 2.1.76, AssistStudio). The resolved key is cached in process memory for the session lifetime and is never written to disk by the server.
  3. Soft-fail — if both paths fail, tools/list still works and tool calls return a structured error message asking the user to set the env var.

--api-key <value> is also accepted as a CLI arg but is intended for manual testing only, not as a supported configuration path.

Setup by host

Claude Code / Claude Desktop — add the key to your MCP config:

json
{  "mcpServers": {    "publicdata-kr": {      "command": "fieldcure-mcp-publicdata-kr",      "env": {        "DATA_GO_KR_API_KEY": "<your-key>"      }    }  }}

On Claude Code (≥ 2.1.76), if the env var is omitted the server prompts for the key via Elicitation on first use.

AssistStudio — the key is requested via Elicitation on first use and stored in Windows PasswordVault for subsequent launches; the host then injects it as an env var when starting the server.

Docker / CI — pass the key as a standard environment variable:

bash
docker run -e DATA_GO_KR_API_KEY=<your-key> ...

Key validation and re-elicitation

If the server receives an HTTP 401/403 or a resultCode=22 / SERVICE_KEY_IS_NOT_REGISTERED_ERROR body from data.go.kr, it invalidates the cached key and re-requests via Elicitation (session cap: 2 re-elicits per ApiKeyResolver lifetime). After exhausting retries, the tool returns a soft-fail error message.

Note: On data.go.kr an HTTP 401 can mean either an invalid key or an API that you have not applied for (활용신청). If a re-elicitation prompt appears right after calling an API you haven't subscribed to, entering the same key will produce the final error envelope with details — at that point visit the API's data.go.kr page and apply for access.

Configuration

Claude Desktop

Add to claude_desktop_config.json:

json
{  "mcpServers": {    "publicdata-kr": {      "command": "fieldcure-mcp-publicdata-kr",      "env": {        "DATA_GO_KR_API_KEY": "YOUR_DATA_GO_KR_API_KEY"      }    }  }}

Claude Code (v2.1.76+)

bash
claude mcp add publicdata-kr -- fieldcure-mcp-publicdata-kr

Claude Code supports MCP Elicitation, so DATA_GO_KR_API_KEY may be omitted — the server will prompt for the key on first tool use.

VS Code (Copilot)

Add to .vscode/mcp.json:

json
{  "servers": {    "publicdata-kr": {      "command": "fieldcure-mcp-publicdata-kr",      "env": {        "DATA_GO_KR_API_KEY": "YOUR_DATA_GO_KR_API_KEY"      }    }  }}

From source (without dotnet tool)

json
{  "mcpServers": {    "publicdata-kr": {      "command": "dotnet",      "args": [        "run",        "--project", "C:\\path\\to\\fieldcure-mcp-publicdata\\src\\FieldCure.Mcp.PublicData.Kr"      ],      "env": {        "DATA_GO_KR_API_KEY": "YOUR_DATA_GO_KR_API_KEY"      }    }  }}

AssistStudio

Install the dotnet tool first. AssistStudio does not auto-install external MCP servers (only built-in ones are managed via the AssistStudio auto-update path). The fieldcure-mcp-publicdata-kr command must be on PATH before you add the server, otherwise the connection fails with a generic "server shut down unexpectedly" message.

bash
dotnet tool install -g FieldCure.Mcp.PublicData.Kr# later, to upgrade:dotnet tool update -g FieldCure.Mcp.PublicData.Kr

Then: Settings > MCP Servers > Add Server:

FieldValue
NamePublicData.Kr
Commandfieldcure-mcp-publicdata-kr
Arguments(empty)
EnvironmentDATA_GO_KR_API_KEY = your data.go.kr API key (optional — AssistStudio can prompt via Elicitation if unset)
Description(auto-filled on first connection)

Tools

ToolDescription
discover_apiSearch data.go.kr APIs by keyword — returns names, providers, endpoint URLs
describe_apiGet operations, request parameters, and response fields for a specific API
call_apiCall any data.go.kr API with automatic serviceKey injection and response normalization

Workflow

1. discover_api("미세먼지")   → { serviceId: "15073861", serviceName: "한국환경공단_에어코리아_대기오염정보", ... }
2. describe_api("15073861")   → { operations: [{ name: "getMsrstnAcctoRltmMesureDnsty", url: "...", requestParameters: [...] }] }
3. call_api(url: "http://apis.data.go.kr/B552584/ArpltnInforInqireSvc/getMsrstnAcctoRltmMesureDnsty",            params: '{"stationName": "종로구", "dataTerm": "DAILY", "returnType": "json"}')   → { totalCount: 24, items: [{ stationName: "종로구", pm10Value: "45", ... }] }

discover_api

Search Korean public data APIs on data.go.kr by keyword. Results are deduplicated by service — each API appears once even if it has multiple operations.

ParameterTypeRequiredDescription
querystringYesSearch keyword (e.g., 미세먼지, 부동산, 사업자)
pageint—Page number (default: 1)
pageSizeint—Results per page (default: 10, max: 50)

describe_api

Get the request parameters and response fields of a specific API. Use the serviceId from discover_api results.

ParameterTypeRequiredDescription
serviceIdstringYesService ID (list_id) from discover_api

call_api

Call a Korean public data API. The serviceKey is automatically injected — never pass it yourself. If the call fails with ACCESS_DENIED, the user needs to apply for access to that specific API at data.go.kr.

ParameterTypeRequiredDescription
urlstringYesFull endpoint URL from describe_api results
paramsstring—Query parameters as a JSON string (not a raw object), e.g. '{"stationName":"종로구","dataTerm":"DAILY"}'. Parameter names must come from describe_api's request_parameters — do not guess.
maxResultsint—Max items to return (default: 20, prevents context overflow)

Error Code Mapping

When a data.go.kr API returns an error, the server translates it into a Korean guidance message the LLM can relay directly:

CodeMeaningLLM receives
12NO_OPENAPI_SERVICE이 API가 존재하지 않습니다. discover_api로 다시 검색해보세요.
20ACCESS_DENIED이 API에 대한 활용신청이 필요합니다. (포털 링크 포함)
22KEY_NOT_REGISTEREDAPI 키가 등록되지 않았습니다.
30TRAFFIC_EXCEEDED일일 호출 한도를 초과했습니다.
31UNREGISTERED_IP이 IP가 등록되지 않았습니다.

Environment Variables

VariableRequiredDefaultDescription
DATA_GO_KR_API_KEY——data.go.kr API key (인증키). If unset, the server requests it via MCP Elicitation on first tool call.
PUBLICDATA_API_KEY——Legacy alias for DATA_GO_KR_API_KEY. Still accepted; prefer the canonical name for new setups.
PUBLICDATA_TIMEOUT_SECONDS—30Per-request timeout
PUBLICDATA_MAX_RESPONSE_LENGTH—50000Maximum response body length in characters

CLI args (--api-key, --timeout, --max-response-length) override environment variables and are intended for manual testing only — DATA_GO_KR_API_KEY and Elicitation are the supported paths.

Naming note: the API key follows the external service naming convention (DATA_GO_KR_API_KEY), while server-local configuration uses the PUBLICDATA_ prefix. This keeps the key aligned with data.go.kr's own documentation so users don't have to configure it twice, while local tunables stay grouped under a single package namespace.

Security

  • API key masking — the serviceKey is replaced with *** in any error output visible to the LLM
  • Domain whitelist — call_api only allows requests to approved hosts: api.odcloud.kr, apis.data.go.kr, api.data.go.kr, openapi.data.go.kr, www.law.go.kr, open.neis.go.kr
  • Response size limit — configurable via PUBLICDATA_MAX_RESPONSE_LENGTH (default: 50,000 chars)
  • No log leaks — the API key is never printed to stdout or stderr

Project Structure

src/FieldCure.Mcp.PublicData.Kr/├── Program.cs                       # MCP server entry point (stdio); no startup hard-fail├── Services/│   ├── ApiKeyResolver.cs            # env var → MCP Elicitation → soft-fail chain + cache + retry cap│   ├── InvalidApiKeyException.cs    # Signals upstream auth rejection (HTTP 401/403 or body error)│   ├── KeyedCall.cs                 # Tool-side resolve → run → invalidate → retry helper│   ├── PublicDataHttpClient.cs      # HTTP proxy with serviceKey injection + auth-error detection│   ├── DomainWhitelist.cs           # SSRF prevention via host whitelist│   ├── ResponseNormalizer.cs        # XML→JSON conversion, wrapper removal│   └── ErrorCodeMapper.cs           # Error code → Korean guidance messages└── Tools/    ├── DiscoverApiTool.cs           # discover_api    ├── DescribeApiTool.cs           # describe_api    └── CallApiTool.cs               # call_api

Development

bash
# Builddotnet build
# Testdotnet test
# Pack as dotnet tooldotnet pack src/FieldCure.Mcp.PublicData.Kr -c Release

See Also

Part of the AssistStudio ecosystem.

License

MIT

来源:README.md,提交 33b5448

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v1.0.3最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

其他 Publicdata 集成