About
MCP server to query French Open Data from data.gouv.fr
README
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
Install Datagouv in Claude Desktop, Claude Code & Cursor
unyly install mcp-datagouvInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add mcp-datagouv -- npx -y github:franckh-stack/mcp-datagouvFAQ
Is Datagouv MCP free?
Yes, Datagouv MCP is free — one-click install via Unyly at no cost.
Does Datagouv need an API key?
No, Datagouv runs without API keys or environment variables.
Is Datagouv hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Datagouv in Claude Desktop, Claude Code or Cursor?
Open Datagouv on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectCompare Datagouv with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
