data.gov.fr MCP服务器
\[!提示\] 收到反馈了吗? 在这里告诉我们
 
模型上下文协议(MCP)服务器,允许AI聊天机器人(Claude、ChatGPT、Gemini等)搜索、探索和分析来自 data.gov.fr,法国国家开放数据平台,直接通过对话。
与手动浏览网站不同,您可以简单地问一些问题,如“有哪些房价数据集?”或“向我展示巴黎的最新人口数据”,并获得即时答案。
\[!提示\] 立即使用:每个人都可以在以下位置使用公共实例https://mcp.data.gouv.fr/mcp没有访问限制。 要连接您最喜欢的聊天机器人,只需按照以下步骤操作 下面的连接说明.
🌐 将您的聊天机器人连接到MCP服务器
使用托管端点 https://mcp.data.gouv.fr/mcp (推荐)。如果您是自主机,请交换您自己的URL。
MCP服务器配置取决于您的客户端。为您的客户端使用适当的配置格式:
万物皆可LLM | ChatGPT | 克劳德代码 | 克劳德桌面版 | 光标 | Gemini CLI | 拥抱聊天 | IBM Bob | Kiro命令行界面 | 开发 IDE | Le Chat(米斯特拉尔) | 米斯特拉尔·维贝 | OpenCode | VS Code | 帆板运动
万物皆可LLM
- 找到
anythingllm_mcp_servers.jsonAnythingLLM存储插件目录中的文件:
- Linux: ~/.config/anythingllm-desktop/storage/plugins/anythingllm_mcp_servers.json - MacOS: ~/Library/Application Support/anythingllm-desktop/storage/plugins/anythingllm_mcp_servers.json - 视窗: C:\Users\\AppData\Roaming\anythingllm-desktop\storage\plugins\anythingllm_mcp_servers.json
- 添加以下配置:
{
"mcpServers": {
"datagouv": {
"type": "streamable",
"url": "https://mcp.data.gouv.fr/mcp"
}
}
}有关更多详细信息,请参阅 LLM MCP文件.
ChatGPT
*仅适用于付费计划(Plus、Pro、Team和Enterprise)。*
- 访问设置:在浏览器中打开ChatGPT,转到
Settings那么Apps and connectors. - 启用开发模式:打开
Advanced settings并启用 开发者模式. - 添加连接器:返回
Settings>Connectors>Browse connectors然后单击 添加新连接器. - 配置连接器:将URL设置为
https://mcp.data.gouv.fr/mcp并保存以激活工具。
克劳德代码
使用 claude mcp 添加MCP服务器的命令:
claude mcp add --transport http datagouv https://mcp.data.gouv.fr/mcp克劳德桌面版
将以下内容添加到您的Claude Desktop配置文件中(通常 ~/.config/Claude/claude_desktop_config.json 在Linux上, ~/Library/Application Support/Claude/claude_desktop_config.json 在MacOS上,或 %APPDATA%\Claude\claude_desktop_config.json 在Windows上):
{
"mcpServers": {
"datagouv": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.data.gouv.fr/mcp"
]
}
}
}Windows上的克劳德桌面: 如果服务器出现在列表中但从未连接(没有握手,缺少工具),Claude可能正在使用其内置的Node.js运行时,该运行时看不到随系统安装的包 npm (包括全球 mcp-remote).集 isUsingBuiltInNodeForMcp 到 false 在 根 相同的配置文件,因此 npx 使用已安装的Node,然后重新启动Claude Desktop:
{
"isUsingBuiltInNodeForMcp": false,
"mcpServers": {
"datagouv": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.data.gouv.fr/mcp"
]
}
}
}看 问题#69 作为背景。
光标
Cursor通过其设置支持MCP服务器。要配置服务器,请执行以下操作:
- 打开光标设置
- 搜索“MCP”或“模型上下文协议”
- 添加具有以下配置的新MCP服务器:
{
"mcpServers": {
"datagouv": {
"url": "https://mcp.data.gouv.fr/mcp",
"transport": "http"
}
}
}Gemini CLI
将以下内容添加到您的 ~/.gemini/settings.json 文件(Linux: ~/.gemini/settings.json,MacOS: ~/.gemini/settings.json,Windows: %USERPROFILE%\.gemini\settings.json):
{
"mcpServers": {
"datagouv": {
"httpUrl": "https://mcp.data.gouv.fr/mcp"
}
}
}拥抱聊天
- 访问设置: 在聊天界面中,单击+图标,选择
MCP Servers,然后单击Manage MCP Servers. - 添加服务器: 点击+
Add Server服务器管理窗口中的按钮。 - 配置服务器: 输入a 服务器名称 (例如,“Data Gouv”)并设置 服务器URL 到
https://mcp.data.gouv.fr/mcp。单击Add Server为了拯救。 - 验证连接: 点击
Health Check新服务器卡上的按钮,确认其显示为 连接。确保已激活切换以使用聊天中的工具。
IBM Bob
IBM Bob通过其设置支持MCP服务器。要配置服务器,请执行以下操作:
- 单击Bob面板中的设置图标。
- 选择MCP选项卡。
- 单击相应的按钮:
- 编辑全局MCP:打开全局
mcp_settings.json文件 - 编辑项目MCP:打开特定于项目的
.bob/mcp.json文件(如果不存在,则由Bob创建)
这两个文件都使用JSON格式,其中mcpServers对象包含命名服务器配置。
{
"mcpServers": {
"datagouv": {
"url": "https://mcp.data.gouv.fr/mcp",
"type": "streamable-http"
}
}
}Kiro命令行界面
添加以下内容 ~/.kiro/settings/mcp.json (Linux: ~/.kiro/settings/mcp.json,MacOS: ~/.kiro/settings/mcp.json,Windows: %USERPROFILE%\.kiro\settings\mcp.json):
{
"mcpServers": {
"datagouv": {
"url": "https://mcp.data.gouv.fr/mcp"
}
}
}开发 IDE
将以下内容添加到Kiro MCP配置文件中(.kiro/settings/mcp.json 在您的工作区中,或者对于全局配置:Linux: ~/.kiro/settings/mcp.json,MacOS: ~/.kiro/settings/mcp.json,Windows: %USERPROFILE%\.kiro\settings\mcp.json):
{
"mcpServers": {
"datagouv": {
"url": "https://mcp.data.gouv.fr/mcp"
}
}
}Le Chat(米斯特拉尔)
*适用于所有计划,包括免费。*
- 转到连接器:在浏览器中打开Mistral,然后转到
Intelligence>Connectors. - 添加自定义连接器:单击
Add connector>Custom MCP Connector,给它起个名字(例如DataGouv),并将服务器URL设置为https://mcp.data.gouv.fr/mcp. - 无身份验证:禁用身份验证。
- 创建:单击 创建.
Mistral Vibe命令行界面
编辑您的Vibe配置(默认:Linux: ~/.vibe/config.toml,MacOS: ~/.vibe/config.toml,Windows: %USERPROFILE%\.vibe\config.toml)并添加MCP服务器:
[[mcp_servers]]
name = "datagouv"
transport = "streamable-http"
url = "https://mcp.data.gouv.fr/mcp"请参阅官方文档中的完整Vibe MCP选项: MCP服务器配置.
OpenCode
增添 opencode.json (例如。 ~/.config/opencode/opencode.json 或您的项目根)。远程服务器使用顶级 mcp 对象与 type: "remote"。参见 OpenCode MCP服务器.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"datagouv": {
"type": "remote",
"url": "https://mcp.data.gouv.fr/mcp",
"enabled": true
}
}
}VS Code
将以下内容添加到您的VS代码中 mcp.json 文件(Linux: ~/.config/Code/User/mcp.json,MacOS: ~/Library/Application Support/Code/User/mcp.json,Windows: %APPDATA%\Code\User\mcp.json).跑 MCP:打开用户配置 从命令选项板打开它。
{
"servers": {
"datagouv": {
"url": "https://mcp.data.gouv.fr/mcp",
"type": "http"
}
}
}帆板运动
将以下内容添加到您的 ~/.codeium/windsurf/mcp_config.json (Linux: ~/.codeium/windsurf/mcp_config.json,MacOS: ~/.codeium/windsurf/mcp_config.json,Windows: %USERPROFILE%\.codeium\windsurf\mcp_config.json):
{
"mcpServers": {
"datagouv": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://mcp.data.gouv.fr/mcp"
]
}
}
}注:
- 托管端点为
https://mcp.data.gouv.fr/mcp。如果您自己运行服务器,请将其替换为您自己的URL(有关默认的本地终结点,请参阅下面的“本地运行”)。 - 此MCP服务器目前仅公开只读工具,因此不需要API密钥。
🖥️ 在本地运行
1.运行MCP服务器
开始之前,克隆此存储库并浏览其中:
git clone git@github.com:datagouv/datagouv-mcp.git
cd datagouv-mcp推荐的设置需要Docker。通过安装 或任何兼容的Docker引擎。
🐳 使用Docker(推荐)
# With default settings (port 8000, prod environment)
docker compose up -d
# With custom environment variables
MCP_PORT=8007 DATAGOUV_API_ENV=demo LOG_LEVEL=DEBUG docker compose up -d
# Stop
docker compose down环境变量:
MCP_HOST:要绑定的主机(默认为0.0.0.0).吃起来127.0.0.1本地开发遵循MCP安全最佳实践。MCP_PORT:MCP HTTP服务器的端口(默认为8000未设置时)。MCP_ENV:向Sentry报告的环境名称(默认为local未设置时)。明确设置为prod,preprod,或demo在您的部署中。DATAGOUV_API_ENV:prod(默认)或demo。这控制了它使用来自哪个data.gov.fr环境的数据(https://www.data.gouv.fr或https://demo.data.gouv.fr).默认情况下,MCP服务器与生产数据.gouv.fr.Set进行通信DATAGOUV_API_ENV=demo如果你特别需要演示环境。LOG_LEVEL:应用程序的Python日志级别(默认为INFO).常见值:DEBUG,INFO,WARNING,ERROR,CRITICAL.SENTRY_DSN:启用错误和性能监视的哨兵DSN。未设置时禁用监视。SENTRY_SAMPLE_RATE:哨兵痕迹和轮廓的采样率(浮动0.0–1.0,默认为1.0).
⚙️ 手动安装
你需要 紫外线 安装依赖项并运行服务器。
- 安装依赖项
uv sync- 准备环境文件
复制 示例环境文件 创建自己的 .env 文件:
cp .env.example .env然后可选择编辑 .env 并设置对您的跑步很重要的变量:
MCP_HOST=127.0.0.1 # (defaults to 0.0.0.0, use 127.0.0.1 for local dev)
MCP_PORT=8007 # (defaults to 8000 when unset)
MCP_ENV=local # environment name sent to Sentry (defaults to local when unset)
DATAGOUV_API_ENV=prod # Allowed values: demo | prod (defaults to prod when unset)
LOG_LEVEL=INFO # Python log level (default: INFO)使用您喜欢的方法加载变量,例如:
set -a && source .env && set +a- 启动HTTP MCP服务器
uv run main.py2.将您的聊天机器人连接到本地MCP服务器
按照中的步骤进行操作 将您的聊天机器人连接到MCP服务器 只需将托管URL替换为本地端点(默认值: http://127.0.0.1:${MCP_PORT:-8000}/mcp).
🚚 运输支持
MCP服务器是使用 MCP服务器和客户端的官方Python SDK 并使用 仅支持流式HTTP传输.
不支持STDIO和SSE.
📋 可用端点
可流式HTTP传输(符合标准):
POST /mcp-JSON-RPC消息(客户端→ 服务器)GET /health-健康检查端点:运行完整的MCP握手和工具调用。退货{"status":"ok",...}如果健康,则使用HTTP 200,或{"status":"mcp_unavailable"}如果MCP栈没有正确响应,则使用HTTP 503。
🛠️ 可用工具
MCP服务器提供了与平台上编目的data.gov.fr数据集和第三方API进行交互的工具。
注: data.gouv.fr通过HTTP在 dataservices 资源路径;它与data.gouv.fr自己的内部API(主/表格/度量)是分开的,这些API为这个MCP服务器提供动力。
数据集(静态数据文件)
search_datasets-按关键字搜索数据集。返回包含元数据(标题、描述、组织、标签、资源计数)的数据集。
参数: query (必填), page (可选,默认值:1), page_size (可选,默认值:20,最大值:100)
search_organizations-在data.gov.fr上列出或搜索发布组织。返回修剪后的行(id、name、slug、首字母缩略词、徽章、指标、URL)。
参数: query (可选;AND风格关键字搜索;省略或留空浏览), page (可选,默认值:1), page_size (可选,默认值:20,最大值:100), sort (可选;例如。 datasets, -datasets), badge (可选;例如。 public-service, certified, association, company, local-authority), name (可选的精确名称过滤器), business_number_id (可选)。
get_dataset_info-获取特定数据集的详细信息(元数据、组织、标签、日期、许可证等)。
参数: dataset_id (必填)
list_dataset_resources-列出数据集中的所有资源(文件)及其元数据(格式、大小、类型、URL)。
参数: dataset_id (必填)
get_resource_info-获取有关特定资源的详细信息(格式、大小、MIME类型、URL、数据集关联、表格API可用性)。
参数: resource_id (必填)
query_resource_data-通过表格API查询特定资源中的数据。从资源中获取行以回答问题。
参数: resource_id (必填), page (可选,默认值:1), page_size (可选,默认值:20,最大值:200)
注:推荐工作流程:1)使用 search_datasets 要查找数据集,2)使用 list_dataset_resources 要查看可用资源,3)使用 query_resource_data 默认情况下 page_size (20) 预览数据结构。对于小数据集(\1000行),继续分页或使用 get_resource_info 检索原始文件URL并直接获取。适用于API表格大小限制(CSV≤100 MB,XLSX≤12.5 MB)内的CSV/XLS资源。
第三方API
这些工具使用data.gouv.fr下的HTTP路径 dataservices;工具和参数名称与API匹配(search_dataservices, dataservice_id).
search_dataservices-按关键字搜索data.gov.fr上编目的第三方API。返回包含元数据的条目(标题、说明、组织、基本API URL、标记)。
参数: query (必填), page (可选,默认值:1), page_size (可选,默认值:20,最大值:100)
get_dataservice_info-获取第三方API的详细元数据(标题、说明、组织、基础API URL、OpenAPI规范URL、许可证、日期、相关数据集)。
参数: dataservice_id (必需)-与data.gouv.fr API和 id 从搜索结果中。
get_dataservice_openapi_spec-获取并总结第三方API的OpenAPI/Swagger规范。返回可用端点及其参数的简明概述。
参数: dataservice_id (必填)
注:推荐工作流程:1)使用 search_dataservices 查找API,2)使用 get_dataservice_info 对于元数据和文档URL,3)使用 get_dataservice_openapi_spec 对于端点和参数,4)使用 base_api_url 根据规范。
指标
get_metrics-获取数据集和/或资源的指标(访问量、下载量)。
参数: dataset_id (可选), resource_id (可选), limit (可选,默认值:12,最大值:100)
返回每月的统计数据,包括访问量和下载量,按月份降序排列(最近的先到)。至少一个 dataset_id 或 resource_id 必须提供。 注: 此工具仅适用于生产环境(DATAGOUV_API_ENV=prod).度量API没有演示/预编写环境。
🧪 测试
✅ 使用pytest进行自动化测试
使用pytest运行测试(这些包括辅助模块;MCP服务器接线最好通过MCP检查器进行):
# Run all tests
uv run pytest
# Run with verbose output
uv run pytest -v
# Run specific test file
uv run pytest tests/test_tabular_api.py
# Run with custom resource ID
RESOURCE_ID=3b6b2281-b9d9-4959-ae9d-c2c166dff118 uv run pytest tests/test_tabular_api.py
# Run with prod environment
DATAGOUV_API_ENV=prod uv run pytest🔥 压力测试
压力测试向正在运行的MCP服务器发送许多并发请求。它们需要一个正在运行的服务器并发出真正的HTTP请求,因此它们被排除在默认设置之外 pytest 跑。
# Start the server first, then in another terminal:
uv run pytest -m stress目前包括一个测试,该测试将正常请求与突然的客户端TCP断开连接混合在一起,验证服务器在中断的情况下保持健康并继续服务。它使用 MCP_PORT (默认值: 8000)连接到本地服务器。
🩺 从CLI运行运行状况检查
运行完整的MCP握手和呼叫 search_datasets 验证端到端堆栈健康状况。需要一个正在运行的服务器,并且被排除在默认设置之外 pytest 跑。
# Start the server first, then in another terminal:
uv run pytest -m health_check🛠️ 本地工具测试脚本
scripts/call_tool.py 允许您直接调用任何MCP工具,而无需手动管理curl握手。需要正在运行的服务器。
# Start the server first, then in another terminal:
python scripts/call_tool.py search_datasets '{"query": "IRVE"}'
python scripts/call_tool.py get_resource_info '{"resource_id": ""}'🔍 使用MCP检查器进行交互式测试
使用官方 MCP检查员 以交互方式测试服务器工具和资源。
先决条件:
- Node.js与
npx可用的
步骤:
- 启动MCP服务器(见上文)
- 在另一个终端中,启动检查器:
npx @modelcontextprotocol/inspector --http-url "http://127.0.0.1:${MCP_PORT}/mcp"如果您在另一个主机/端口上暴露了服务器,请调整URL。
🤝 贡献
我们欢迎捐款!为了保持项目的稳定和审查的可管理性,请在提交前遵守以下规则:
- 人工审查和问责制: 问题和拉取请求 不得是未经审查的原始AI输出。您必须已经阅读、完全理解并(对于代码)测试了您提交的内容。 通过打开问题或拉取请求,您可以证明您可以在审查中解释和辩护,而无需依赖人工智能助手。
- 保持小: 我们严格遵守 1个特征=1个PR 工作流程。
- 常规提交: 使用 约定式提交 格式为 git提交消息 和 PR标题 (例如。
feat: add dataset search,fix: handle empty API response).有关允许的类型、范围和中断更改标记,请参阅规范。
我们使用标准的审查和部署流程:
- 提交PR: 通过Pull Request提出您的更改
main支。 - 持续集成: CI在拉取请求上自动运行。 所有必需的检查必须通过 在合并PR之前(测试、linting、格式化和类型检查)。在本地运行相同的检查——按 测试,和lint/格式/类型通过 代码过滤和格式化 或 预提交挂钩--以避免意外的CI失败。
- 评审: 所有PR在合并之前必须经过维护人员的审查和批准。
- 部署过程: 一旦合并到
main,维护人员定期部署更改 生产前的 在更广泛的发布之前进行更多的测试和验证。
🧹 代码抓取和格式化
本项目遵循PEP 8风格指南,使用 拉夫 用于修剪和格式化,以及 吨年 用于类型检查。
手动运行这些命令或 安装预提交挂钩 在提交捐款之前需要。
# Lint (including import sorting) and format code
uv run ruff check --fix && uv run ruff format
# Type check (ty)
uv run ty check🔗 预提交钩子
此存储库使用 预承诺 在每次提交之前勾选哪个lint和格式化代码。强烈建议安装预提交挂钩,以便检查自动运行。
安装预提交挂钩:
uv run pre-commit install预提交钩子会自动执行以下操作:
- 检查YAML语法
- 修复文件结尾问题
- 删除尾随空格
- 检查大文件
- 运行Ruff linting和格式化
🏷️ 发布和版本控制
先决条件: 必须安装并验证,并且您必须在主分支上拥有干净的工作目录。
# Create a new release
./tag_version.sh
# Example
./tag_version.sh 2.5.0
# Dry run to see what would happen
./tag_version.sh 2.5.0 --dry-run脚本会自动执行以下操作:
- 提取自上次标记以来的提交,并将其格式化为CHANGELOG.md
- 识别突破性更改(提交
!:在主题中) - 创建一个git标签并将其推送到远程存储库
- 创建包含变更日志内容的GitHub版本
📄 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
