mcp-datagouv

mcp-datagouv

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

Category
Visit Server

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

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured