关于 Govdata Mcp
GovData MCP 是面向 AI Agent 的政府开放数据 MCP 服务,可搜索、查看并获取美国、英国、加拿大和澳大利亚官方门户的数据集。它以统一工具流程处理各门户差异,并支持行预览与资源下载。
主要功能
- 01搜索四国政府开放数据集
- 02查看数据集元数据与资源
- 03预览 CSV/TSV 数据行
- 04获取资源内容或下载链接
- 05stdio 与 HTTP 双传输
适用场景
- 01查找特定主题的政府数据
- 02检查数据集文件和元数据
- 03预览表格数据后决定是否下载
MCP 相关
向 MCP 客户端提供门户列表、数据集搜索与查看、资源预览和获取等只读工具。支持本地 stdio 和无状态 streamable-http 传输。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
GovData MCP
一个模型上下文协议(MCP)服务,让 AI Agent 可以从各国官方政府数据门户中搜索、探索和获取开放数据集。通过统一的工具接口,覆盖美国、英国、加拿大和澳大利亚,同时由通用适配器层处理各门户的特有情况(API 迁移、身份验证限制、双语元数据、过时的 DataStore 标记)。
专为典型的 Agent 工作流打造:“有没有关于 X 的政府数据集?” → 查找候选数据集 → 查看文件 → 预览行或获取下载链接,然后继续下一步。
主要功能
- 四个国家级门户,一个接口。 美国(data.gov v4 / DCAT)、英国(data.gov.uk / CKAN)、加拿大(open.canada.ca / CKAN)、澳大利亚(data.gov.au / CKAN + DataStore)。
- 从设计上减少令牌消耗。 描述会去除 HTML 并截断,搜索结果采用精简摘要,大型文件不会意外以内联方式返回。
- 行级预览。 在可用时使用 CKAN DataStore(澳大利亚),其他情况下则透明地回退到读取 CSV/TSV 文件的开头部分。
- 适合 Agent 的错误处理方式。 错误会以可操作的文本返回(“改用
get_download_link”、“使用dataset_id重试”、“可用门户:…”),而不会返回原始回溯信息。 - 可扩展注册表。 添加另一个基于 CKAN 的门户只需添加一个配置项;非 CKAN 门户则通过一个小型适配器类接入。
- 双传输方式。 为本地客户端(如 Claude Desktop)提供
stdio,为无服务器部署(Google Cloud Run)提供无状态的streamable-http。
支持的门户
| 代码 | 门户 | API | 搜索 | 探索 | 行预览 | 备注 |
|---|---|---|---|---|---|---|
us | data.gov | data.gov v4 (DCAT) | ✅ | ✅ | CSV 回退 | 需要免费的 api.data.gov 密钥 |
uk | data.gov.uk | CKAN | ✅ | ✅ | CSV 回退 | 查询资源需要上级 dataset_id |
ca | open.canada.ca | CKAN | ✅ | ✅ | CSV 回退 | 双语标题会规范化为英文 |
au | data.gov.au | CKAN + DataStore | ✅ | ✅ | ✅ DataStore | 支持带文本筛选的完整行查询 |
要求
- Python 3.11+
- 美国门户需要 api.data.gov API 密钥(免费;其他门户无需凭据)
安装
git clone https://github.com/YOUR_ORG/Gov-Stat-MCP-Server.git
cd Gov-Stat-MCP-Server
# pip
pip install -e ".[dev]"
# or conda
conda env create -f environment.yml
conda activate opendata-mcp
将 .env.example 复制为 .env 并设置密钥:
DATAGOV_API_KEY=your-api-data-gov-key
入门
适用于大多数 MCP 客户端的标准配置(stdio 传输):
{
"mcpServers": {
"govdata": {
"command": "govdata-mcp",
"env": {
"DATAGOV_API_KEY": "your-api-data-gov-key"
}
}
}
}
Claude Code
claude mcp add govdata -e DATAGOV_API_KEY=your-key -- govdata-mcp
Claude Desktop
按照 MCP 安装指南操作,并使用上面的标准配置。注意:govdata-mcp 必须位于 Claude Desktop 使用的 PATH 中——如有需要,请提供虚拟环境或 conda 环境中可执行文件的绝对路径,例如 /path/to/envs/mcp-env/bin/govdata-mcp。
Cursor / Windsurf / 其他 JSON 配置客户端
在客户端的 MCP 设置文件中使用上面的标准配置。
HTTP 传输(远程 / 长时间运行的服务)
以 HTTP 模式运行服务:
MCP_TRANSPORT=http govdata-mcp
然后将客户端指向该端点:
{
"mcpServers": {
"govdata": {
"url": "http://localhost:8080/mcp"
}
}
}
预期的 Agent 工作流:list_portals → search_datasets → get_dataset → preview_resource / fetch_resource / get_download_link。
发现
-
list_portals
- 描述:列出可用的政府开放数据门户及其功能。
- 参数:无
- 只读:true
-
search_datasets
- 描述:在门户上全文搜索数据集。返回包含数据集 ID 的简要摘要。
- 参数:
portal(string):门户代码 —us、uk、ca、auquery(string):搜索词,例如"air quality monitoring"limit(number, optional):最大结果数(默认 10,最大 50)org(string, optional):发布者/组织 slug 筛选条件(CKAN 门户)format(string, optional):资源格式筛选条件,例如"CSV"(CKAN 门户)
- 只读:true
探索
-
get_dataset
- 描述:完整的数据集元数据,包括组织、许可证、标签、描述,以及包含资源 ID、格式和大小的可下载资源列表。
- 参数:
portal(string):门户代码dataset_id(string):来自search_datasets的数据集 ID/slug
- 只读:true
-
preview_resource
- 描述:预览表格资源中的行。优先尝试门户的 DataStore(行数统计和文本筛选);如果不可用,则读取 CSV/TSV 文件开头的内容。无法预览非表格格式。
- 参数:
portal(string):门户代码resource_id(string):来自get_dataset的资源 IDrows(number, optional):要返回的行数(默认 20,最大 100)query(string, optional):全文行筛选条件(仅适用于由 DataStore 提供的资源)dataset_id(string, optional):父数据集 ID — 建议提供;在uk上为必需
- 只读:true
获取
-
fetch_resource
- 描述:下载小型文本资源(CSV/JSON/XML/…),并以内嵌形式返回其内容;达到大小上限时,会在完整行边界处截断。拒绝返回二进制内容,并提供下载 URL。
- 参数:
portal(string):门户代码resource_id(string):来自get_dataset的资源 IDmax_kb(number, optional):内嵌内容的最大千字节数(默认 256,上限 512)dataset_id(string, optional):父数据集 ID — 建议提供;在uk上为必需
- 只读:true
-
get_download_link
- 描述:返回资源的直接下载 URL、格式和大小,供 Agent 自行处理。适用于任何格式,包括大型/二进制文件。
- 参数:
portal(string):门户代码resource_id(string):来自get_dataset的资源 IDdataset_id(string, optional):父数据集 ID — 建议提供;在uk上为必需
- 只读:true
配置
所有设置均为环境变量(或本地 .env 文件):
| 变量 | 默认值 | 描述 |
|---|---|---|
MCP_TRANSPORT | stdio | stdio(本地客户端)或 http(streamable-http 服务) |
PORT | 8080 | HTTP 传输的监听端口(在 Cloud Run 上自动注入) |
DATAGOV_API_KEY | — | 美国门户的 api.data.gov 密钥;未设置时回退到 DEMO_KEY(约 30 次请求/小时) |
LOG_LEVEL | INFO | 日志详细程度(始终写入 stderr) |
HTTP_TIMEOUT_SECONDS | 30 | 对外门户请求的超时时间 |
HTTP_MAX_RETRIES | 2 | 门户发生暂时性错误(5xx/传输错误)时的重试次数,采用指数退避 |
SEARCH_DEFAULT_LIMIT | 10 | 默认搜索结果数 |
NOTES_TRUNCATE_CHARS | 200 | 搜索摘要中的描述截断长度 |
FETCH_MAX_BYTES | 524288 | 内嵌资源内容的硬性上限 |
Docker
make docker-build # build image
make docker-run # run on :8080, exactly as Cloud Run would
此镜像以无状态模式运行 HTTP 传输,已准备好部署到无服务器平台(deploy/ 下附带 Google Cloud Run 部署脚本)。
开发
make run # stdio mode
make run-http # HTTP mode on :8080
make inspect # MCP Inspector interactive UI (requires Node.js)
make test # offline unit tests
make test-live # live end-to-end tests against all four real portals
make lint # ruff check + format check
实时测试套件(pytest -m live)会针对每个国家/地区验证完整的搜索 → 探索 → 预览 → 获取流程,以及特定门户的行为(加拿大的双语规范化、英国按数据集范围查找资源、澳大利亚的 DataStore 路径)。部署前请运行测试——政府门户可能会在不另行通知的情况下发生变更。
架构
src/govdata_mcp/
├── server.py # FastMCP instance + tool registration
├── config.py # env-driven settings
├── ckan/ # generic async CKAN client, models, typed errors
├── portals/
│ ├── registry.py # portal registry — single source of truth
│ ├── base.py # Portal config + default (vanilla CKAN) adapter
│ ├── us.py # data.gov v4 DCAT adapter (auth, cursor paging)
│ ├── uk.py # dataset-scoped resource lookup
│ └── ca.py # bilingual metadata normalization
├── tools/ # MCP tools: search, explore, fetch
└── utils/ # formatting (token economy), CSV-head preview
添加门户: 对于标准 CKAN 门户,只需在 portals/registry.py 中添加一条 Portal(...) 条目即可。对于有特殊情况的门户,可继承 PortalAdapter 并重写范围较小的钩子(normalize_dataset、build_search_params),或者对于非 CKAN API,重写操作方法本身(完整的自定义适配器示例见 us.py)。
TODO / 路线图
- 🇨🇳 中国门户支持——目前没有统一的国家级开放数据 API;计划开发自定义适配器,通过现有的统计软件包访问国家统计局数据,并支持优雅降级。
- 🇯🇵 日本门户支持——e-Gov Data Portal (data.e-gov.go.jp) 兼容 CKAN,应可接入现有注册表;功能更丰富的 e-Stat 统计 API(需要 app-ID 身份验证,元数据为日语)计划通过专用适配器支持。
- 使用已记录的门户测试数据(respx)构建离线单元测试套件,以供 CI 使用
- Google Cloud Run 部署指南(服务已可通过容器部署;脚本位于
deploy/) - US v4 发布者/格式搜索筛选器(等待 API 文档)
- 更多 CKAN 门户(新西兰 data.govt.nz 几乎可以零成本添加)
- 内容类型嗅探,以处理格式标签错误的资源
安全说明
- 此服务对门户采用只读访问——没有任何工具可以创建、修改或删除内容。
fetch_resource和preview_resource会从门户元数据中包含的 URL 下载内容;返回给模型前会限制内容大小并检查是否为二进制内容,但请将获取的内容视为不可信输入。- 服务本身没有身份验证。远程部署时,请将其置于身份验证代理或平台级身份验证之后(例如,在 Cloud Run 中使用
--no-allow-unauthenticated)。 - 请将
DATAGOV_API_KEY保存在.env/ Secret Manager 中——切勿提交。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。