在 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)
-
search_datasets: 关键词搜索数据集。
- 参数:
query(必填,字符串,如 “prix immobilier”)、page(可选,默认 1)、page_size(可选,默认 20,最大 100)。 - 落地建议:起始 page_size=20 快速扫描;热门主题如 “immobilier” 或 “population” 可直接命中组织 / 标签过滤结果。
- 参数:
-
get_dataset_info: 获取数据集详情(元数据、组织、标签、许可)。
- 参数:
dataset_id(必填,从 search_datasets 获取)。 - 实践:用于验证许可(多为 ODbL/etalab),检查更新日期。
- 参数:
-
list_dataset_resources: 列出资源文件(格式、大小、URL)。
- 参数:
dataset_id(必填)。 - 建议:优先 CSV/JSON 资源,支持 Tabular API 的优先级更高。
- 参数:
-
query_resource_data: 通过自然语言问题查询资源数据(Tabular API)。
- 参数:
question(必填,如 “巴黎 2023 年人口?”)、resource_id(必填)、page(默认 1)、page_size(默认 20,最大 200)。 - 限制:CSV ≤100MB、XLSX ≤12.5MB。实践:小数据集全量 page_size=200;大表分页预览结构。
- 参数:
-
download_and_parse_resource: 下载解析不支持 Tabular 的资源。
- 参数:
resource_id(必填)、max_rows(默认 20)、max_size_mb(默认 500)。 - 适用:大文件 / 压缩 / JSONL。起始 max_rows=20 预览,避免 OOM。
- 参数:
数据服务工具(Dataservices)
-
search_dataservices: 搜索注册 API。
- 参数同 search_datasets。
- 示例:query=“adresse” 发现 Adresse API。
-
get_dataservice_openapi_spec: 获取 OpenAPI 规范摘要。
- 参数:
dataservice_id(必填)。 - 实践:理解端点 / 参数后,手动调用 base_api_url。
- 参数:
指标工具
- get_metrics: 下载 / 访问统计。
- 参数:
dataset_id或resource_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 代理真正 “对话” 公共数据,推动数据民主化。
资料来源: