mcpField
G
Govdata Mcp

Govdata Mcp

本地服务
github.com/Chester-2026开发工具2145 周前更新

关于 Govdata Mcp

GovData MCP 是面向 AI Agent 的政府开放数据 MCP 服务,可搜索、查看并获取美国、英国、加拿大和澳大利亚官方门户的数据集。它以统一工具流程处理各门户差异,并支持行预览与资源下载。

主要功能

  1. 01搜索四国政府开放数据集
  2. 02查看数据集元数据与资源
  3. 03预览 CSV/TSV 数据行
  4. 04获取资源内容或下载链接
  5. 05stdio 与 HTTP 双传输

适用场景

  1. 01查找特定主题的政府数据
  2. 02检查数据集文件和元数据
  3. 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搜索探索行预览备注
usdata.govdata.gov v4 (DCAT)✅✅CSV 回退需要免费的 api.data.gov 密钥
ukdata.gov.ukCKAN✅✅CSV 回退查询资源需要上级 dataset_id
caopen.canada.caCKAN✅✅CSV 回退双语标题会规范化为英文
audata.gov.auCKAN + 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、au
      • query (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 的资源 ID
      • rows (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 的资源 ID
      • max_kb (number, optional):内嵌内容的最大千字节数(默认 256,上限 512)
      • dataset_id (string, optional):父数据集 ID — 建议提供;在 uk 上为必需
    • 只读:true
  • get_download_link

    • 描述:返回资源的直接下载 URL、格式和大小,供 Agent 自行处理。适用于任何格式,包括大型/二进制文件。
    • 参数:
      • portal (string):门户代码
      • resource_id (string):来自 get_dataset 的资源 ID
      • dataset_id (string, optional):父数据集 ID — 建议提供;在 uk 上为必需
    • 只读:true
配置

所有设置均为环境变量(或本地 .env 文件):

变量默认值描述
MCP_TRANSPORTstdiostdio(本地客户端)或 http(streamable-http 服务)
PORT8080HTTP 传输的监听端口(在 Cloud Run 上自动注入)
DATAGOV_API_KEY—美国门户的 api.data.gov 密钥;未设置时回退到 DEMO_KEY(约 30 次请求/小时)
LOG_LEVELINFO日志详细程度(始终写入 stderr)
HTTP_TIMEOUT_SECONDS30对外门户请求的超时时间
HTTP_MAX_RETRIES2门户发生暂时性错误(5xx/传输错误)时的重试次数,采用指数退避
SEARCH_DEFAULT_LIMIT10默认搜索结果数
NOTES_TRUNCATE_CHARS200搜索摘要中的描述截断长度
FETCH_MAX_BYTES524288内嵌资源内容的硬性上限
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

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。