Hotdry.
ai-systems

data.gouv.fr MCP 服务:AI 代理自然语言查询法国开放数据

详解 datagouv-mcp 项目,通过 MCP 协议实现 AI 聊天机器人对法国国家开放数据平台的语义搜索、数据集探索与分析,提供工具参数、部署清单与客户端集成指南。

在 AI 代理时代,将大型语言模型与真实世界数据源无缝集成已成为关键挑战。datagouv-mcp 项目提供了一个优雅解决方案:作为法国国家开放数据平台 data.gouv.fr 的官方 Model Context Protocol (MCP) 服务器,它允许 Claude、ChatGPT、Gemini 等 AI 聊天机器人通过自然语言对话,直接搜索、探索并分析海量公开数据集,而无需手动浏览网站或编写复杂查询。

这种设计的核心价值在于 “对话即工具调用”。传统开放数据访问依赖 API 或网页搜索,用户需熟悉数据目录结构;datagouv-mcp 通过 MCP 协议标准化工具接口,让 AI 代理在对话中动态调用后端工具,实现语义检索与数据分析。例如,用户只需问 “巴黎最近的人口数据有哪些?”,AI 即可自动搜索数据集、列出资源并提取关键洞见。这种集成不仅提升了数据可及性,还降低了 AI 应用的开发门槛,尤其适用于政策分析、研究原型和市民应用场景。

项目基于官方 Python MCP SDK,仅支持 Streamable HTTP 传输(不含 STDIO/SSE),确保高效流式响应。公共实例 https://mcp.data.gouv.fr/mcp 已开放,无需 API 密钥,支持读 - only 操作,避免数据泄露风险。“datagouv-mcp 是 data.gouv.fr 的官方 MCP 服务器,专为 AI 聊天机器人设计,用于搜索、探索和分析数据集。”

核心工具与调用参数

datagouv-mcp 暴露了两大类工具:数据集(静态文件)和数据服务(外部 API),辅以指标查询。以下是关键工具的参数清单与最佳实践,确保 AI 代理高效使用。

数据集工具(Datasets)

  1. search_datasets: 关键词搜索数据集。

    • 参数:query (必填,字符串,如 “prix immobilier”)、page (可选,默认 1)、page_size (可选,默认 20,最大 100)。
    • 落地建议:起始 page_size=20 快速扫描;热门主题如 “immobilier” 或 “population” 可直接命中组织 / 标签过滤结果。
  2. get_dataset_info: 获取数据集详情(元数据、组织、标签、许可)。

    • 参数:dataset_id (必填,从 search_datasets 获取)。
    • 实践:用于验证许可(多为 ODbL/etalab),检查更新日期。
  3. list_dataset_resources: 列出资源文件(格式、大小、URL)。

    • 参数:dataset_id (必填)。
    • 建议:优先 CSV/JSON 资源,支持 Tabular API 的优先级更高。
  4. query_resource_data: 通过自然语言问题查询资源数据(Tabular API)。

    • 参数:question (必填,如 “巴黎 2023 年人口?”)、resource_id (必填)、page (默认 1)、page_size (默认 20,最大 200)。
    • 限制:CSV ≤100MB、XLSX ≤12.5MB。实践:小数据集全量 page_size=200;大表分页预览结构。
  5. download_and_parse_resource: 下载解析不支持 Tabular 的资源。

    • 参数:resource_id (必填)、max_rows (默认 20)、max_size_mb (默认 500)。
    • 适用:大文件 / 压缩 / JSONL。起始 max_rows=20 预览,避免 OOM。

数据服务工具(Dataservices)

  1. search_dataservices: 搜索注册 API。

    • 参数同 search_datasets。
    • 示例:query=“adresse” 发现 Adresse API。
  2. get_dataservice_openapi_spec: 获取 OpenAPI 规范摘要。

    • 参数:dataservice_id (必填)。
    • 实践:理解端点 / 参数后,手动调用 base_api_url。

指标工具

  • get_metrics: 下载 / 访问统计。
    • 参数:dataset_idresource_id (至少一)、limit (默认 12,最大 100)。
    • 仅 prod 环境可用,按月降序。

典型工作流:1) search_datasets 发现;2) list_dataset_resources 选资源;3) query_resource_data 分析。参数阈值如 page_size=50 可平衡速度 / 精度;监控返回行数调整。

部署与自托管参数

本地运行推荐 Docker,零依赖:

git clone https://github.com/datagouv/datagouv-mcp.git
cd datagouv-mcp
docker compose up -d  # 默认 0.0.0.0:8000,prod 环境

关键环境变量:

  • MCP_HOST=127.0.0.1 (本地开发安全)。
  • MCP_PORT=8007 (自定义端口)。
  • DATAGOUV_ENV=demo (测试用 demo.data.gouv.fr)。

健康检查:GET /health 返回 {"status":"ok"}。日志监控 Docker compose logs -f。回滚:docker compose down,参数恢复默认。

手动安装需 uv:

uv sync
source .env
uv run mcp-server  # 默认启动

客户端集成清单

无需修改服务器,配置客户端 mcpServers:

  • ChatGPT (付费): Settings > Connectors > Add https://mcp.data.gouv.fr/mcp
  • Claude Desktop: claude_desktop_config.json 添加 {"mcpServers":{"datagouv":{"command":"npx","args":["mcp-remote","https://mcp.data.gouv.fr/mcp"]}}}
  • Cursor/VS Code: settings.json {"servers":{"datagouv":{"url":"https://mcp.data.gouv.fr/mcp","type":"http"}}}
  • Gemini CLI: ~/.gemini/settings.json {"mcpServers":{"datagouv":{"httpUrl":"https://mcp.data.gouv.fr/mcp"}}}

全列表见 repo,支持 10+ 工具如 AnythingLLM、Kiro、Mistral Vibe。测试用 MCP Inspector:npx @modelcontextprotocol/inspector --http-url http://127.0.0.1:8000/mcp

实际案例与优化

案例 1:房地产分析。

  • AI 提示:“Quels datasets sur prix immobilier à Paris?”
  • 工具链:search_datasets ("prix immobilier paris") → get_dataset_info → query_resource_data ("平均价格?")。

案例 2:API 集成。

  • search_dataservices ("sirene") → get_dataservice_openapi_spec → 调用企业注册端点。

优化参数:

  • 超时:客户端默认 30s,资源查询 max_size_mb=100 防滥用。
  • 缓存:重复 query 加 page=1 复用。
  • 监控:pytest 测试工具;CircleCI 持续集成。

风险控制:读 - only、无密钥;大资源用 max_rows 限流。未来扩展可加写工具,但当前聚焦查询。

此方案适用于任何国家开放数据镜像,参数通用:page_size 20-50、max_rows 100 为起点。通过 datagouv-mcp,AI 代理真正 “对话” 公共数据,推动数据民主化。

资料来源

  1. GitHub - datagouv/datagouv-mcp
  2. 公共 MCP 实例
查看归档