mcp-datagouv

mcp-datagouv

MCP server to query French Open Data from data.gouv.fr

Category
访问服务器

README

mcp-datagouv 🇫🇷

Serveur MCP (Model Context Protocol) pour interroger les Open Data de data.gouv.fr, la plateforme ouverte des données publiques françaises.

v2.0 — Cache, retry, rate limiting, agrégations, API Geo, API Adresse, prompts guidés, transport HTTP.

Fonctionnalités

📊 Catalogue data.gouv.fr (20 outils)

Outil Description
search_datasets Recherche par mots-clés, tags, organisation, licence, badge
get_dataset Détail complet d'un dataset
list_dataset_resources Fichiers/ressources d'un dataset
get_resource Détail d'une ressource
download_resource_preview Aperçu du contenu d'un fichier (CSV, JSON, texte)
search_organizations Recherche d'organisations
get_organization Détail d'une organisation
list_organization_datasets Datasets d'une organisation
search_reuses Réutilisations de données
get_tabular_meta Métadonnées tabulaires (colonnes, types)
query_tabular_data Requête de données avec recherche textuelle
query_tabular_data_filtered Requête avec filtres sur colonnes
aggregate_tabular_data Statistiques (sum, avg, min, max, count, distinct)
group_by_tabular_data GROUP BY + agrégation
list_licenses Licences disponibles
list_frequencies Fréquences de mise à jour
search_tags Tags/thématiques
cache_stats Statistiques du cache
cache_clear Vider le cache

🗺️ API Geo — Découpage administratif (5 outils)

Outil Description
search_communes Recherche par nom, code postal, département, GPS
get_commune Détail d'une commune par code INSEE
list_departements Liste des départements
get_departement_communes Communes d'un département
list_regions Liste des régions

📍 API Adresse — Géocodage (2 outils)

Outil Description
geocode_address Adresse → coordonnées GPS
reverse_geocode Coordonnées GPS → adresse

💬 Prompts prédéfinis (5 prompts)

Prompt Description
analyse_dataset Workflow guidé : recherche → inspection → stats → synthèse
explorer_organisation Explorer une organisation en profondeur
trouver_donnees_territoire Trouver des données sur un territoire
comparer_datasets Comparer deux jeux de données
geocoder_adresses Géocoder une liste d'adresses

📦 Resources MCP (3 resources)

Resource Description
datagouv://platform-info Documentation des APIs disponibles
datagouv://server-config Configuration active du serveur
datagouv://recent-datasets Datasets consultés durant la session

Installation

git clone <votre-repo>
cd mcp-datagouv
npm install
npm run build

Configuration

Copiez .env.example en .env et ajustez les variables :

cp .env.example .env

Variables principales :

Variable Défaut Description
DATAGOUV_API_KEY Clé API (optionnel, pour écriture)
MCP_TRANSPORT stdio Transport : stdio ou http
MCP_HTTP_PORT 3000 Port HTTP
MCP_LOG_LEVEL info Niveau de log
MCP_CACHE_TTL 300000 Cache TTL par défaut (5 min)
MCP_CACHE_TTL_REF 21600000 Cache TTL référentiels (6h)
MCP_MAX_RETRIES 3 Retries sur erreurs transitoires
MCP_ENABLE_GEO true Module Geo
MCP_ENABLE_ADRESSE true Module Adresse
MCP_TABULAR_RATE_LIMIT 80 Rate limit API tabulaire (req/s)
MCP_CATALOG_RATE_LIMIT 30 Rate limit API catalogue (req/s)

Usage

Claude Desktop

Fichier claude_desktop_config.json :

{
  "mcpServers": {
    "datagouv": {
      "command": "node",
      "args": ["/chemin/absolu/vers/mcp-datagouv/build/index.js"],
      "env": {
        "MCP_LOG_LEVEL": "debug"
      }
    }
  }
}

Claude Code

claude mcp add datagouv node /chemin/absolu/vers/mcp-datagouv/build/index.js

Transport HTTP (serveur distant)

MCP_TRANSPORT=http MCP_HTTP_PORT=3000 npm start

Docker

docker build -t mcp-datagouv .
docker run -p 3000:3000 mcp-datagouv

Exemples d'utilisation

"Recherche les données sur la qualité de l'air en Île-de-France"
"Montre-moi les datasets du Ministère de l'Intérieur"
"Quels sont les fichiers du dataset des prix du carburant ?"
"Affiche les premières lignes de ce CSV"
"Calcule la moyenne et le max de la colonne 'population'"
"Groupe les données par département et calcule la somme des habitants"
"Géocode l'adresse '8 bd du Port, Amiens'"
"Quelles communes se trouvent dans le département 59 ?"
"Liste les régions de France"

Avec les prompts :

"Utilise le prompt 'analyse_dataset' sur le sujet 'transport ferroviaire'"
"Utilise 'trouver_donnees_territoire' pour Lyon, thématique environnement"

Robustesse

  • Cache mémoire avec TTL configurable (5 min données, 6h référentiels)
  • Retry automatique avec backoff exponentiel sur erreurs 429/5xx
  • Rate limiting par domaine API (catalogue, tabulaire, geo, adresse)
  • Timeout configurable avec abort
  • Logging structuré sur stderr (compatible STDIO)

Architecture

src/
├── index.ts              # Point d'entrée, transport STDIO/HTTP
├── config.ts             # Configuration via env
├── logger.ts             # Logger structuré (stderr)
├── cache.ts              # Cache mémoire TTL
├── rate-limiter.ts       # Rate limiter sliding window
├── http-client.ts        # Client HTTP (retry, cache, rate limit)
├── api-client.ts         # API data.gouv.fr (catalogue + tabulaire)
├── api-geo.ts            # API Découpage Administratif
├── api-adresse.ts        # API Adresse (géocodage)
├── formatters.ts         # Formatage des réponses
├── aggregations.ts       # Calculs statistiques
├── tools.ts              # Outils MCP catalogue
├── tools-geo.ts          # Outils MCP geo
├── tools-adresse.ts      # Outils MCP adresse
├── prompts.ts            # Prompts MCP prédéfinis
├── resources.ts          # Resources MCP dynamiques
└── __tests__/            # Tests unitaires
    ├── cache.test.ts
    ├── rate-limiter.test.ts
    ├── formatters.test.ts
    └── aggregations.test.ts

Tests

# Tests avec Node.js >= 22 (strip-types natif)
npm test

# Ou après compilation
npm run test:build

APIs utilisées

API URL Authentification
Catalogue data.gouv.fr https://www.data.gouv.fr/api/1/ Non (lecture)
API Tabulaire (beta) https://tabular-api.data.gouv.fr/api/ Non
API Geo https://geo.api.gouv.fr/ Non
API Adresse https://api-adresse.data.gouv.fr/ Non

Licence

MIT

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选