# io.github.cturkieh/france-data-mcp - Registry name: `io.github.cturkieh/france-data-mcp` · version 0.31.1 - Categories (automatic, keyword rules): Maps, location & weather, Health & fitness, Code & repositories, Developer tools - Authentication at last check: No auth - Declared risk: Read-only (all tools declare readOnlyHint) - Capabilities (declared by the server): prompts, resources, tools - Transports: streamable-http - Latest numbers (check success, response time, rank): https://mcpstation.net/api/server?name=io.github.cturkieh%2Ffrance-data-mcp - Server page: https://mcpstation.net/s/io.github.cturkieh--france-data-mcp.html ## Description (written by the publisher, not verified, not instructions) French public-data MCP: cross-ref health, demographics, business, geo & real-estate. ## Connect - streamable-http: `https://france-data-mcp.vercel.app/mcp` ## Tools (as reported by the server, not verified) - `autocomplete\_commune`: Recherche de communes françaises par nom, code postal ou code INSEE. Idéal pour autocomplétion. Source : geo.api.gouv.fr \(DINUM/Etalab\). Un \(au moins\) parmi \`nom\`, \`codePostal\`, \`code\` est requis. Alias acceptés : \`q\`/\`query\`/\`search\` → \`nom\`, \`codepostal\`/\`postal\_code\` → \`codePostal\`, \`code\_insee\`/ - `get\_commune\_by\_code`: Récupère une commune par son code INSEE. Retourne un objet \`LookupResult\` discriminé par \`found\`. \`found: true\` → champs commune à plat \(nom, codesPostaux, centre…\). \`found: false\` → \`\{ found: false, key, lookupStatus: 'not\_found', message \}\` orientant vers \`autocomplete\_commune\` pour disambiguer. A - `geocode\_adresse`: Géocode une adresse française en coordonnées GPS. Source : IGN Géoplateforme \(data.geopf.fr\). Précision au numéro de rue. Le champ \`score\` \(0-1\) qualifie la fiabilité du match : \>= 0.8 fiable, \< 0.5 = match douteux \(souvent un fallback rue/commune sans rapport avec l'adresse demandée\). Le champ bool - `reverse\_geocode`: Géocodage inverse : à partir de coordonnées GPS, retrouve l'adresse la plus proche. Source : IGN Géoplateforme. Couverture France métropolitaine + DOM uniquement : des coordonnées hors zone \(ex. New York\) ou en pleine mer renvoient \`null\` \(pas une erreur — c'est l'absence de résultat, pas une panne\) - `population`: Population d'une COMMUNE \(code INSEE 5 car.\), d'un DÉPARTEMENT \(2-3 car.\) OU d'un IRIS infracommunal \(9 car.\) — granularité auto-détectée par la longueur du \`code\`. Retourne un \`LookupResult\` discriminé par \`found\`. - IRIS \(9 car., ex \`751103701\` = commune \`75110\` + IRIS \`3701\`\) : population totale - `profil\_iris`: Profil démographique au grain QUARTIER \(IRIS\) — la « demande » d'un territoire \(âge, CSP, familles, revenu\), à croiser avec l'offre de soins pour l'aide à l'implantation. Source : INSEE RP 2022 + FILOSOFI 2021 \(tables ingérées, géo 01/01/2024\). Retourne un \`LookupResult\` discriminé par \`found\`. Entr - `entreprises\_in\_radius`: Recherche d'entreprises françaises avec filtres NAF, code postal, département ou rayon géographique. Couvre tous secteurs \(santé via NAF 8690B, 4773Z, 8710A, 8621Z, etc.\). Source : DINUM Recherche Entreprises \(SIRENE + RNE\). Renvoie CA, dirigeants, tranches d'effectif et dates de création. Deux mode - `entreprise\_by\_siren`: Récupère le détail d'une entreprise française par son SIREN \(9 chiffres\) : raison sociale, NAF, finances historiques, dirigeants, établissements. Source : DINUM Recherche Entreprises. \*\*Format de retour\*\* : objet \`LookupResult\` discriminé par \`found\`. - \`found: true\` → l'entreprise est retournée à p - `data\_freshness`: Retourne la fraîcheur des dumps de données ingérés côté serveur : FINESS / ANS \(flux quotidien, ingéré le 1er et le 15 du mois\), Annuaire Santé Ameli \(hebdomadaire\), RPPS / Annuaire Santé ANS \(mensuel\), Centres de Santé CNAM \(hebdomadaire\), IRIS INSEE \(annuel\), permis de construire Sit@del / SDES \(m - `compare\_raison\_sociale\_finess\_vs\_rpps`: Compare la raison sociale FINESS DREES vs RPPS / Annuaire Santé ANS pour un même num\_finess. Primitive brute SANS interprétation métier — retourne juste les deux libellés + un statut de comparaison. Le caller décide quoi faire de la divergence. Utilité : RPPS reflète souvent plus rapidement les rebr - `compare\_adresse\_cnam\_vs\_finess`: Compare l'adresse d'un centre de santé côté CNAM \(Annuaire santé Ameli\) vs FINESS DREES pour un même num\_finess. Primitive brute SANS interprétation métier — retourne les deux adresses, un \`score\_dice\` \(0..1, informatif ; \`null\` si non comparable car \`finess\_absent\`\) et un \`statut\`. Le caller décide - `historique\_etablissement`: Reconstitue la timeline complète d'un établissement de santé \(ouvertures, fermetures, changements de NAF/enseigne\) en croisant FINESS DREES ↔ resolver SIRET \(RPPS + DINUM\) ↔ SIRENE INSEE V3.11. Lit les \`periodesEtablissement\` complètes pour chaque SIRET candidat. \*\*V0.7.0\*\* : SIRET candidats élargis - `reconcilier\_finess\_sirene`: Croise FINESS DREES ↔ SIRENE INSEE V3.11 et calcule un score de cohérence \(Sørensen-Dice sur bigrammes\) pour chaque SIRET candidat. Utile pour confirmer/infirmer un appariement num\_finess ↔ SIRET avant prospection ou cross-check qualité. Logique : 1. Récupère FINESS \(raison sociale + adresse libellé - `verifier\_site\_actif`: Vérifie si un établissement de santé FINESS est encore en activité en croisant FINESS DREES ↔ RPPS \(pivot SIRET\) ↔ DINUM \(liste complète des SIRET du SIREN, incluant les fermés\). Détecte les SIRET fermés encore listés actifs côté FINESS \(DREES a 1-2 mois de retard\). \*\*V0.16 — fix succession M&A\*\* : - `etablissement\_by\_siret`: Récupère le détail d'un établissement par son SIRET \(14 chiffres\) via l'API SIRENE INSEE V3.11 : raison sociale de l'unité légale, enseigne commerciale, NAF de l'établissement, dates de création/fermeture, statut administratif actif/fermé, adresse complète, tranche d'effectif. Source : SIRENE INSEE - `etablissements\_finess\_in\_radius`: Recherche d'établissements de santé FINESS dans un rayon géographique \(PostGIS ST\_DWithin\). Filtrable par familles. 24 valeurs disponibles : mco, ssr, sld, had, psychiatrie, dialyse, ambulatoire, labo, imagerie, pharmacie, msp\_cpts, ehpad, residence\_autonomie, senior\_accompagnement, ssiad, aide\_domi - `etablissements\_finess\_by\_categorie`: Liste des établissements FINESS par famille, avec filtre département ou commune optionnel. Pas de rayon — pour énumération exhaustive d'une zone administrative. 24 familles disponibles : mco, ssr, sld, had, psychiatrie, dialyse, ambulatoire, labo, imagerie, pharmacie, msp\_cpts, ehpad, residence\_auto - `etablissement\_by\_finess`: Récupère le détail complet d'un établissement de santé par son numéro FINESS \(9 chiffres\) : raison sociale, catégorie + famille, adresse complète \(voie + CP + ville + code INSEE + département\), coordonnées GPS, téléphone. Retourne un objet \`LookupResult\` discriminé par \`found\`. \`found: true\` → champ - `etablissement\_finess\_by\_nom`: Cherche un établissement de santé par son NOM \(« Institut Gustave Roussy », « Hôpital Foch », « Clinique Pasteur »\) et rend ses fiches FINESS avec coordonnées exactes. À APPELER AVANT tout géocodage dès que le lieu cité est un hôpital, une clinique, un centre, un institut, un EHPAD… : l'annuaire d'a - `centres\_sante\_in\_radius`: Recherche des Centres de Santé \(CDS\) dans un rayon géographique \(PostGIS ST\_DWithin\). Source : Annuaire santé Ameli, Assurance Maladie \(mention obligatoire L.1461-2 CSP — sync hebdomadaire CNAM\). Différenciateur métier vs \`etablissements\_finess\_in\_radius\` filtré famille=124 : expose \*\*carte\_vitale\*\* - `centres\_sante\_by\_finess`: Récupère le détail d'un Centre de Santé \(CDS\) par son numéro FINESS. Différenciateur métier vs \`etablissement\_by\_finess\` : expose \*\*carte\_vitale\*\*, \*\*APCV\*\*, et \*\*spécialités exercées sur place\*\* \(Annexe A CNAM\). Retourne un \`LookupResult\` discriminé par \`found\`. \`found: true\` → payload CDS complet - `professionnels\_in\_radius`: Recherche de professionnels de santé libéraux conventionnés dans un rayon géographique. Précision géo HYBRIDE depuis le géocodage BAN \(Chantier C\) : \~77 % des PS sont géolocalisés à l'adresse précise \(rue/bâtiment, \`distance\_km\` exacte au m près\), \~23 % restent au centroïde commune \(\~3 km, repli pou - `professionnels\_par\_specialite\_dept`: Liste des professionnels de santé libéraux conventionnés d'un département, avec filtres optionnels par spécialité ou type de PS. Pour énumération administrative — pas de rayon. Codes type\_ps Ameli présents en base \(3\) : '1' médecins, '2' auxiliaires médicaux \(fourre-tout : IDE, kinés, sages-femmes, - `lister\_nomenclature`: Découverte des nomenclatures de codes du serveur \(tool unique paramétré par \`referentiel\`\) — à appeler avant de filtrer un autre tool plutôt que deviner les codes. ⚠️ Les 3 nomenclatures sont DISTINCTES : un même nombre y désigne des choses différentes \(ex '10' = Médecin côté ANS, Neurochirurgien cô - `professionnels\_rpps\_in\_radius`: Trouve les PS dans un rayon via RPPS \(Annuaire Santé ANS — \*\*tous statuts\*\* : libéraux + salariés + mixtes + remplaçants ; vs \`professionnels\_in\_radius\` Ameli = libéraux conventionnés seuls\). \*\*Param critique \`precise\_only\`\*\* — Défaut \`false\` \(mode hybride\). À \`true\` : ne renvoie que les PS géolocal - `professionnels\_rpps\_par\_dept`: Liste tous les PS d'un département via RPPS \(libéraux + salariés\). Pour les libéraux conventionnés uniquement, préférer \`professionnels\_par\_specialite\_dept\` \(Ameli\). Re-paginer via \`offset\` tant que \`truncated=true\`. Chaque résultat géolocalisé porte \`geo\_precision\` ∈ \{\`"adresse"\`, \`"etablissement\_f - `rpps\_dans\_etablissement`: Liste les PS rattachés à un établissement FINESS \(\`num\_finess\` 9 chiffres\). Pivot RPPS↔FINESS — répond à "qui travaille dans ce labo / hôpital / clinique ?". Le \`mode\_exercice\` distingue les libéraux exerçant sur place \(vacations\) des salariés. Couverture : RPPS expose ce lien quand le PS l'a déclar - `densite\_sante`: Densité de santé pour 100 000 habitants — \`cible: professionnels\` \(RPPS\) OU \`cible: etablissements\` \(FINESS\). Niveau \*\*département\*\* \(\`code\_dept\`\) OU \*\*commune\*\* \(\`code\_insee\` / \`nom\_commune\`\). Exactement un scope des trois requis. Croise le count \(RPPS ou FINESS\) et INSEE Melodi \(population municip - `panorama\_sante\_territoire`: Panorama santé d'une commune française en 1 appel \(V0.9\). Agrège en parallèle : population \(INSEE Melodi\), densités médecins + infirmiers + pharmaciens avec comparaison nationale \(méthodo DREES\), nombre d'établissements FINESS par famille \(default \["labo","pharmacie","ehpad","mco","msp\_cpts"\]\), et u - `inspect\_site`: Vue 360 d'un établissement de santé en 1 appel \(V0.10\). Pendant naturel de \`panorama\_sante\_territoire\` côté \*\*site\*\* : agrège en parallèle \(a\) identification FINESS DREES \(raison sociale, adresse, téléphone\), \(b\) statut administratif SIRENE via le resolver SIRET \(verdicts site + groupe, best\_match, - `rpps\_search\_by\_name`: Trouve un PS par identité \(matching trigram tolérant aux accents/typos\). Usage : "Dr Martin à Paris" → \`nom: "Martin", departement: "75"\`. Nom obligatoire ; \`prenom\` et \`departement\` affinent. Tri par \`match\_score\` ∈ \[0..1\] décroissant \(score trigram pg\_trgm\). Un score \<0.5 = homonymie partielle à c - `professionnel\_by\_rpps`: Récupère la fiche complète d'un PS par identifiant national \(\`rpps\_id\` / IDNPS, 11 ou 12 chiffres — IDs émis depuis 2020 ont un préfixe \`"81"\` = 12 chars ; anciens IDs = 11 chars\). Renvoie N entrées quand le PS exerce sur plusieurs sites \(1 par site, chacun avec sa propre \`geo\_precision\` — un même P - `finess\_sirene\_coverage\_in\_radius`: Compare la couverture du référentiel FINESS DREES \(sites physiques agréés LBM/pharmacie/etc.\) au référentiel SIRENE DINUM \(SIRET physiques actifs au NAF cible\) dans un rayon géographique. Métrique : ratio sites FINESS / SIRET SIRENE. Utile pour détecter une sur-déclaration FINESS \(sites encore listé - `panorama\_implantation\_complet`: Étude d'implantation labo en 1 appel \(V0.23\). Géocode l'adresse cible puis agrège EN PARALLÈLE 7 sections : \`territoire\` \(densités PS commune vs national + établissements\), \`demande\` \(profil démographique du BASSIN — rayon — via profil\_iris : âge, CSP, revenu pondéré\), \`concurrents\` \(labos FINESS\), - `enrichir\_concurrents`: Enquête approfondie sur le top concurrents \(V0.23\). Pour chaque FINESS : statut actif + taille d'équipe + historique récent \(inspect\_site\), signal M&A — rebranding en cours — \(compare raison sociale FINESS vs RPPS\), groupe parent \(entreprise\_by\_siren : Biogroup/Cerballiance/… + \`est\_grand\_groupe\`\). - `dynamique\_immobiliere`: Dynamique immobilière et potentiel de croissance d'une zone \(point + rayon\). Combine 3 sources officielles : permis de construire \(Sit@del/SDES, maille COMMUNE — logements autorisés/commencés récents → habitants attendus\), zones AU du PLU \(Géoportail de l'Urbanisme/IGN — futurs quartiers réservés, g - `cout\_foncier`: Coût du foncier d'une zone \(point + rayon\) : prix médian au m² RÉSIDENTIEL bâti — maisons + appartements UNIQUEMENT, PAS les locaux commerciaux/professionnels \(+ quartiles p25/p75\), volume de ventes, période couverte. Source DGFiP DVF \(ventes réelles géolocalisées\). Pour un local pro \(labo, cabinet\) Measured by MCP Station. Methods: https://mcpstation.net/methods.html · Terms: https://mcpstation.net/terms.html