Mcp Datagouv — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Mcp Datagouv (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
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.
| 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 |
| 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 |
| Outil | Description |
|---|---|
geocode_address | Adresse → coordonnées GPS |
reverse_geocode | Coordonnées GPS → adresse |
| 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 |
| 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 |
git clone <votre-repo>
cd mcp-datagouv
npm install
npm run buildCopiez .env.example en .env et ajustez les variables :
cp .env.example .envVariables 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) |
Fichier claude_desktop_config.json :
{
"mcpServers": {
"datagouv": {
"command": "node",
"args": ["/chemin/absolu/vers/mcp-datagouv/build/index.js"],
"env": {
"MCP_LOG_LEVEL": "debug"
}
}
}
}claude mcp add datagouv node /chemin/absolu/vers/mcp-datagouv/build/index.jsMCP_TRANSPORT=http MCP_HTTP_PORT=3000 npm startdocker build -t mcp-datagouv .
docker run -p 3000:3000 mcp-datagouv"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"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 avec Node.js >= 22 (strip-types natif)
npm test
# Ou après compilation
npm run test:build| 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 |
MIT
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.