{
  "markdown": "# france-data-mcp\n\n> MCP TypeScript qui **croise et réconcilie** 13 référentiels publics français (INSEE SIRENE, IRIS & Melodi, FINESS DREES, RPPS / Annuaire Santé ANS, Annuaire Santé Ameli, Centres de Santé CNAM, DVF / DGFiP, Sit@del / SDES, PLU via apicarto, IGN Géoplateforme, geo.api.gouv.fr & Recherche Entreprises DINUM). Détecte les SIRET fermés invisibles côté DREES, distingue site vs groupe, croise l'offre de soins avec la démographie au quartier, **évalue le potentiel immobilier d'un site** (prix DVF €/m², permis de construire, zones AU du PLU), expose la fraîcheur de chaque source.\n\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)\n[![CI](https://github.com/cturkieh/france-data-mcp/actions/workflows/ci.yml/badge.svg)](https://github.com/cturkieh/france-data-mcp/actions)\n[![MCP](https://img.shields.io/badge/MCP-live-success)](https://france-data-mcp.vercel.app/mcp)\n[![npm](https://img.shields.io/npm/v/france-data-mcp.svg)](https://www.npmjs.com/package/france-data-mcp)\n[![smithery badge](https://smithery.ai/badge/cturkieh/france-data)](https://smithery.ai/servers/cturkieh/france-data)\n\n🇫🇷 Documentation principale en français. [English version →](README.en.md)\n\n---\n\n## Installation\n\n### Option 1 — URL distante (claude.ai, Claude Code, Cursor)\n\n`https://france-data-mcp.vercel.app/mcp`\n\n| Client | Config |\n|---|---|\n| **claude.ai** | Settings → Connectors → Add custom connector → URL ci-dessus |\n| **Claude Code** | `~/.claude.json` → `mcpServers` → `{ \"type\": \"http\", \"url\": \"...\" }` |\n| **Cursor** | `~/.cursor/mcp.json` → même configuration |\n\n### Option 2 — Wrapper npm stdio (Claude Desktop natif, autres clients)\n\n```json\n{\n  \"mcpServers\": {\n    \"france-data\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"france-data-mcp\"]\n    }\n  }\n}\n```\n\nLe wrapper forwarde stdio → endpoint HTTPS distant. Aucune DB locale à provisionner. Override possible : `FRANCE_DATA_MCP_URL=https://mon-miroir.example/mcp`.\n\nDétails par client + self-hosting : [docs/installation-claude.md](docs/installation-claude.md).\n\n---\n\n## Pourquoi ce projet\n\nLes APIs officielles (INSEE, FINESS DREES, RPPS ANS, Annuaire Ameli, Centres de Santé CNAM, IGN, DINUM) existent mais sont **éclatées, sous-documentées et pleines de pièges** : rate limits, formats CSV propriétaires, latence DREES de 1-2 mois, diffusion partielle INSEE, mappings inconsistants Ameli ↔ RPPS.\n\n`france-data-mcp` est **le premier MCP qui croise factuellement ces sources** pour répondre à des questions concrètes — cartographie d'offre de soins, étude de marché territoriale, journalisme local, civic-tech.\n\n---\n\n## Périmètre — 13 sources publiques croisées\n\n- 🗺️ **Territoire** (2) : geo.api.gouv.fr (DINUM, communes), IGN Géoplateforme (géocodage)\n- 🏥 **Santé** (3) : FINESS / ANS (~105 K établissements en service, DOM inclus — flux JSON quotidien qui remplace le CSV DREES arrêté en juillet 2026), Annuaire Santé Ameli (~466 K libéraux), RPPS / ANS (~2,28 M PS actifs)\n- 🩺 **Centres de Santé** (1) : Annuaire santé CNAM (~3 K structures L.6323-1 CSP, sync hebdomadaire)\n- 📊 **Démographie infracommunale** (2) : INSEE IRIS (~48,6 K quartiers — RP 2022, FILOSOFI 2021 revenu, contours IGN) + INSEE Melodi (population de référence)\n- 🏢 **Entreprises** (2) : DINUM Recherche Entreprises + INSEE SIRENE V3.11\n- 🏗️ **Immobilier** (3) : ventes foncières DVF / DGFiP (€/m², cache paresseux PostGIS), permis de construire Sit@del via API DiDo / SDES (live), zones AU du PLU via apicarto / IGN (live)\n\n**Cross-source** : réconciliation FINESS ↔ RPPS ↔ SIRENE pour détecter SIRET fermés, rebrandings, raisons sociales périmées.\n\n---\n\n## Outils MCP (36 tools)\n\n### 🗺️ Territoire (4)\n`autocomplete_commune` · `get_commune_by_code` · `geocode_adresse` · `reverse_geocode`\n\n### 🏢 Entreprises (3)\n`entreprises_in_radius` · `entreprise_by_siren` (+ fallback INSEE SIRENE V3.11) · `etablissement_by_siret`\n\n### 🏥 Établissements santé FINESS (3)\n`etablissements_finess_in_radius` · `etablissements_finess_by_categorie` · `etablissement_by_finess`\n\n> 24 familles couvrant ~92 % du volume. Source ANS publiée quotidiennement, ingérée le 1ᵉʳ et le 15 du mois.\n\n### 👨‍⚕️ Professionnels libéraux Ameli (2)\n`professionnels_in_radius` · `professionnels_par_specialite_dept`\n\n> Libéraux **conventionnés uniquement** (~462 K). Découverte des codes spécialité/type_ps : `lister_nomenclature` (voir ci-dessous).\n\n### 🩺 Tous les PS — RPPS / Annuaire Santé ANS (5)\n`professionnels_rpps_in_radius` · `professionnels_rpps_par_dept` · `rpps_dans_etablissement` · `rpps_search_by_name` (fuzzy) · `professionnel_by_rpps` (+ fallback FHIR ANS)\n\n> ~2,2 M PS actifs (libéraux + salariés privés + hospitaliers contractuels + agents publics). Par défaut : Civils uniquement.\n\n### 🩺 Centres de Santé — Annuaire CNAM (2)\n`centres_sante_in_radius` · `centres_sante_by_finess`\n\n> Structures de soins ambulatoires non lucratives (L.6323-1 CSP, ~3 K). Différenciateur vs FINESS famille=124 : expose **carte Vitale**, **APCV** et **spécialités exercées sur place** (Annexe A CNAM, ~70 codes). Coords = centroïde commune. Sync hebdomadaire.\n\n### 📊 Démographie & densités — INSEE Melodi + IRIS (3)\nPopulation de référence INSEE croisée avec RPPS / FINESS — méthodologie DREES (ratios pour 100 k hab.). Maille **IRIS** (quartier, ~48,6K zones) pour la DEMANDE, à croiser avec l'offre de soins.\n\n`population` (IRIS 9 car., commune 5 car. **ou** département 2-3 car. — granularité auto-détectée par la longueur du code) · `densite_sante` (`cible: professionnels` RPPS **ou** `etablissements` FINESS — labos, pharmacies, EHPAD, hôpitaux ; + comparaison nationale matview <50 ms) · `profil_iris` (`point` **ou** `code_iris`, `rayon_km?`) — profil démo d'un îlot ou d'un bassin (âge, CSP, familles, revenu) au RP 2022 + FILOSOFI 2021\n\n### 🔎 Découverte des nomenclatures (1)\n`lister_nomenclature` (`referentiel: ameli_specialites | ameli_types_ps | rpps_savoir_faire`) — codes spécialité/type_ps Ameli **et** savoir_faire RPPS dans un seul tool (remplace les 3 anciens `lister_*`).\n\n### 🧭 Agrégateurs & études composites (4)\n- `panorama_sante_territoire` (V0.9) — 1 call : population + densités médecins/infirmiers/pharmaciens vs national + count FINESS par famille (labo, pharmacie, EHPAD, MCO, MSP/CPTS) + **bloc demande IRIS** (profil démo commune : âge, CSP, familles, revenu). Granularité explicite (`niveau: commune`, `niveauEtablissements: departement | indisponible`).\n- `inspect_site` (V0.10) — vue 360 d'un établissement en 1 call : identification FINESS + statut administratif SIRENE (resolver SIRET) + PS rattachés + historique INSEE.\n- `panorama_implantation_complet` (V0.23) — étude d'implantation labo en 1 call : 7 sections (territoire, demande IRIS du bassin, concurrents, pourvoyeurs MCO/EHPAD/SSR, prescripteurs RPPS+IDEL, centres de santé, qualité référentiels). Résumés, jamais de listes brutes ; dégradation par section.\n- `enrichir_concurrents` (V0.23) — enquête sur le top concurrents (statut actif + équipe + signal M&A + groupe parent), cap dur `max=3`.\n\n### 🏗️ Immobilier — potentiel d'un site (2)\n`dynamique_immobiliere` (V0.26) — composite en 1 call : permis de construire (Sit@del / DiDo SDES, live) + zones AU du PLU (apicarto / IGN, live) + ventes de terrains DVF. Sortie 2 registres : `note` (volume → scoring) / `info` (quartiers AU + prix → contexte) ; `geojson` = polygones des zones AU. · `cout_foncier` (V0.26) — prix médian €/m² DVF (P25/P75, n_ventes, période), info seule.\n\n> Source DVF / DGFiP (cache paresseux PostGIS, anon lit / service écrit). Permis et zones AU = **live** (pas d'ingestion). Pensé pour les rapports d'implantation.\n\n### 🔀 Croisement multi-source (7)\nRéconciliation FINESS ↔ RPPS ↔ SIRENE ↔ CNAM — faits bruts sans interprétation métier.\n\n`data_freshness` · `verifier_site_actif` · `compare_raison_sociale_finess_vs_rpps` · `compare_adresse_cnam_vs_finess` · `historique_etablissement` · `reconcilier_finess_sirene` · `finess_sirene_coverage_in_radius`\n\n---\n\n## Garde-fous publics\n\n- **Rate limit** : 60 req/min par IP sur `tools/call` (les méthodes meta restent libres). Au-delà : erreur `-32000` avec `data.retryAfterSeconds`.\n- **Logs JSON structurés** par requête : `ts`, `method`, `tool`, `ip_hash` (SHA-256 salé), `duration_ms`, `outcome`. Aucune IP en clair, aucun argument tool persisté.\n- **Sentry error monitoring** sur les 500 internes (tags `mcp.method`, `mcp.tool`, `mcp.outcome`).\n- **RGPD** : rétention 30j sur Axiom, hash IP salé, droits d'accès / effacement. Politique complète dans [PRIVACY.md](./PRIVACY.md).\n\nUsage intensif : throttler côté client ou self-héberger.\n\n---\n\n## État du projet\n\n✅ **V0.30.0 — en production.** Sur le [registry MCP officiel](https://registry.modelcontextprotocol.io/v0.1/servers?search=france-data-mcp). Détail : [CHANGELOG](CHANGELOG.md).\n\n> Dernière version (V0.30.0) : FINESS alimenté par le flux ANS quotidien, 97,6 % des établissements géolocalisés avec `geo_precision` par résultat et le SIRET déclaré par l'ANS, vigie post-cron qui ouvre une issue et envoie un email quand un run vert sert une donnée malade. Surface inchangée (13 référentiels / 36 outils).\n\n---\n\n## Contribuer\n\nOuvrir une issue pour discuter avant d'envoyer une PR.\n\n---\n\n## Licence\n\nMIT — voir [LICENSE](LICENSE). Les **données** restent sous leurs licences respectives :\n\n| Source | Licence | Mention obligatoire |\n|---|---|---|\n| FINESS | Licence Ouverte (Etalab) | « Source : FINESS, ANS/DREES » |\n| Annuaire Santé Ameli | Art. L.1461-2 CSP | « Source : Annuaire santé Ameli, Assurance Maladie » |\n| DINUM Recherche Entreprises | Licence Ouverte | « Source : Annuaire des Entreprises, DINUM » |\n| INSEE | Licence Ouverte | « Source : Insee » |\n| IGN Géoplateforme / apicarto | Licence Ouverte | « © IGN/Géoplateforme », « GPU — apicarto IGN » |\n| geo.api.gouv.fr | Licence Ouverte | « Source : geo.api.gouv.fr (Etalab) » |\n| DVF (Demandes de Valeurs Foncières) | Licence Ouverte | « Source : DVF, DGFiP / Etalab » |\n| Sit@del (permis de construire) | Licence Ouverte | « Source : Sit@del, SDES (API DiDo) » |\n\n---\n\n## Remerciements\n\nDINUM, Etalab, Atlasanté, ANS, INSEE, IGN pour la qualité de leurs APIs. data.gouv.fr pour l'animation civic-tech. Anthropic pour le protocole MCP.\n",
  "bytes": 10242,
  "sha": "620068e4cda423830b81a32624452cfb9c1fe71ef0ae7b27cf98edf8b96fe3bc",
  "repo_slug": "cturkieh/france-data-mcp",
  "fonte": "repo",
  "truncated": false,
  "api": "https://agentalog.com/api/listings/mcp_io_github_cturkieh_france_data_mcp_cf2a575f/readme"
}