mcp-service-public
Serveur MCP (Model Context Protocol) pour les donnees publiques francaises. Donne acces aux fiches pratiques service-public.fr, a la fiscalite locale, aux transactions immobilieres DVF, a la doctrine fiscale BOFiP, au zonage ABC, aux conventions collectives, a la recherche d'entreprises, a l'annuaire des etablissements scolaires, aux resultats des lycees (IVAL), aux evaluations nationales (6eme/CE2), aux formations Parcoursup, a l'acces aux soins (data.ameli.fr), a l'insertion professionnelle (InserJeunes), aux statistiques de securite/delinquance (SSMSI), aux risques naturels (Georisques), aux textes legaux Legifrance (lois, decrets, codes juridiques, jurisprudence), au Journal Officiel (JORF), aux statistiques d'aide sociale CAF (RSA/APL/AAH) et aux simulateurs (taxe fonciere, frais de notaire, impot sur le revenu).
Installation
Serveur heberge — aucune installation requise. Connectez l'URL suivante a votre client MCP :
https://mcp-service-public.nhaultcoeur.workers.dev/mcp
Claude.ai (web / mobile)
- Ouvrir Parametres (icone engrenage)
- Section Integrations > MCP
- Cliquer Ajouter une integration
- Coller l'URL ci-dessus
- Les 23 outils apparaissent automatiquement
Claude Desktop
Ajouter dans claude_desktop_config.json :
{
"mcpServers": {
"service-public": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp-service-public.nhaultcoeur.workers.dev/mcp"]
}
}
}
Emplacement du fichier :
- Windows :
%APPDATA%\Claude\claude_desktop_config.json - macOS :
~/Library/Application Support/Claude/claude_desktop_config.json
Redemarrer Claude Desktop apres modification.
VS Code / Cursor
Creer .vscode/mcp.json a la racine de votre projet :
{
"servers": {
"service-public": {
"type": "sse",
"url": "https://mcp-service-public.nhaultcoeur.workers.dev/mcp"
}
}
}
Autres clients MCP
Tout client compatible MCP Streamable HTTP peut se connecter avec l'URL ci-dessus. Consultez la documentation de votre client pour la configuration.
Verification
Apres connexion, testez avec une requete simple :
Recherche : renouveler passeport
Si les 38 outils sont charges, le serveur est pret.
Les 38 outils MCP (v1.14.8)
Exemples d'appels
Recherche unifiee (dispatch automatique)
{ "name": "rechercher", "arguments": { "query": "prix immobilier a Lyon" } }
{ "name": "rechercher", "arguments": { "query": "renouveler passeport" } }
{ "name": "rechercher", "arguments": { "query": "93140 taxe fonciere" } }
{ "name": "rechercher", "arguments": { "query": "SIRET 41816609600069" } }
Recherche d'entreprise
{ "name": "rechercher_entreprise", "arguments": { "siret": "41816609600069" } }
{ "name": "rechercher_entreprise", "arguments": { "nom": "OCTO Technology" } }
Simuler la taxe fonciere
{ "name": "simuler_taxe_fonciere", "arguments": { "commune": "Lyon", "surface": 75, "type_bien": "Appartement" } }
Simuler les frais de notaire
{ "name": "simuler_frais_notaire", "arguments": { "prix": 250000, "type": "ancien", "departement": "75" } }
Simuler l'impot sur le revenu
{ "name": "simuler_impot_revenu", "arguments": { "revenu_net_imposable": 42000 } }
{ "name": "simuler_impot_revenu", "arguments": { "revenu_net_imposable": 80000, "situation": "marie", "nb_enfants": 2 } }
{ "name": "simuler_impot_revenu", "arguments": { "revenu_net_imposable": 50000, "revenus_fonciers": 12000, "regime_foncier": "micro" } }
Conventions collectives
{ "name": "rechercher_convention_collective", "arguments": { "query": "boulangerie" } }
{ "name": "rechercher_convention_collective", "arguments": { "idcc": "3248" } }
Etablissements scolaires
{ "name": "rechercher_etablissement_scolaire", "arguments": { "commune": "Lyon", "type": "lycee" } }
{ "name": "rechercher_etablissement_scolaire", "arguments": { "code_postal": "93140", "statut": "public" } }
{ "name": "rechercher_etablissement_scolaire", "arguments": { "nom": "Lacassagne" } }
Resultats lycees (IVAL)
{ "name": "consulter_resultats_lycee", "arguments": { "commune": "Lyon" } }
{ "name": "consulter_resultats_lycee", "arguments": { "nom_lycee": "Lacassagne", "type": "gt" } }
Evaluations nationales (6eme / CE2)
{ "name": "consulter_evaluations_nationales", "arguments": { "code_departement": "93" } }
{ "name": "consulter_evaluations_nationales", "arguments": { "commune": "Lyon", "niveau": "6eme" } }
{ "name": "consulter_evaluations_nationales", "arguments": { "code_postal": "93140", "niveau": "CE2" } }
Formations Parcoursup
{ "name": "consulter_parcoursup", "arguments": { "recherche": "informatique", "ville": "Lyon" } }
{ "name": "consulter_parcoursup", "arguments": { "filiere": "BTS", "recherche": "comptabilite" } }
{ "name": "consulter_parcoursup", "arguments": { "departement": "93", "filiere": "Licence" } }
Statistiques selectivite Parcoursup
{ "name": "consulter_parcoursup_stats", "arguments": { "formation": "BTS comptabilite" } }
{ "name": "consulter_parcoursup_stats", "arguments": { "formation": "licence informatique", "ville": "Lyon" } }
{ "name": "consulter_parcoursup_stats", "arguments": { "formation": "CPGE scientifique", "filiere": "CPGE", "limit": 5 } }
Acces aux soins
{ "name": "consulter_acces_soins", "arguments": { "commune": "Bondy" } }
{ "name": "consulter_acces_soins", "arguments": { "code_departement": "93" } }
Insertion professionnelle (InserJeunes)
{ "name": "consulter_insertion_professionnelle", "arguments": { "ville": "Lyon", "limit": 5 } }
{ "name": "consulter_insertion_professionnelle", "arguments": { "uai": "0691723Y" } }
{ "name": "consulter_insertion_professionnelle", "arguments": { "recherche": "coiffure", "code_departement": "69" } }
Securite et delinquance
{ "name": "consulter_securite", "arguments": { "code_departement": "75" } }
{ "name": "consulter_securite", "arguments": { "commune": "Lyon" } }
Risques naturels
{ "name": "consulter_risques_naturels", "arguments": { "commune": "Nimes" } }
{ "name": "consulter_risques_naturels", "arguments": { "code_insee": "75056" } }
Textes legaux (Legifrance)
{ "name": "rechercher_texte_legal", "arguments": { "recherche": "protection donnees personnelles" } }
{ "name": "rechercher_texte_legal", "arguments": { "recherche": "teletravail", "champ": "TITLE" } }
Codes juridiques (Legifrance)
{ "name": "rechercher_code_juridique", "arguments": { "recherche": "contrat de travail", "code": "Code du travail" } }
{ "name": "rechercher_code_juridique", "arguments": { "recherche": "legitime defense", "code": "Code penal" } }
{ "name": "rechercher_code_juridique", "arguments": { "recherche": "1242", "code": "Code civil", "champ": "NUM_ARTICLE" } }
Jurisprudence (Legifrance)
{ "name": "rechercher_jurisprudence", "arguments": { "recherche": "licenciement abusif" } }
{ "name": "rechercher_jurisprudence", "arguments": { "recherche": "clause abusive", "juridiction": "Cour de cassation", "publie_bulletin": true } }
{ "name": "rechercher_jurisprudence", "arguments": { "recherche": "prejudice moral", "juridiction": "Cours d'appel" } }
Journal Officiel (JORF)
{ "name": "consulter_journal_officiel", "arguments": { "recherche": "teletravail" } }
{ "name": "consulter_journal_officiel", "arguments": { "recherche": "loi finances", "type_texte": "LOI", "date_debut": "2024-01-01", "date_fin": "2024-12-31" } }
{ "name": "consulter_journal_officiel", "arguments": { "recherche": "protection donnees", "type_texte": "DECRET", "limit": 10 } }
Aide sociale — statistiques CAF
{ "name": "consulter_aide_sociale", "arguments": { "commune": "Bondy" } }
{ "name": "consulter_aide_sociale", "arguments": { "code_departement": "93" } }
{ "name": "consulter_aide_sociale", "arguments": { "code_postal": "93140", "prestation": "RSA" } }
Marches publics (BOAMP)
{ "name": "rechercher_marche_public", "arguments": { "recherche": "travaux voirie", "departement": "35" } }
{ "name": "rechercher_marche_public", "arguments": { "type_avis": "AAC", "departement": "75" } }
{ "name": "rechercher_marche_public", "arguments": { "acheteur": "Departement du Rhone", "type_avis": "APC" } }
Annonces legales (BODACC)
{ "name": "rechercher_annonce_legale", "arguments": { "siren": "123456789" } }
{ "name": "rechercher_annonce_legale", "arguments": { "nom_entreprise": "SARL Martin" } }
{ "name": "rechercher_annonce_legale", "arguments": { "type_annonce": "procedure_collective", "departement": "69" } }
Consulter le zonage ABC
{ "name": "consulter_zonage_immobilier", "arguments": { "commune": "Bordeaux" } }
Comparer des communes
{ "name": "comparer_communes", "arguments": { "communes": ["Lyon", "Bordeaux", "Nantes"] } }
Fiscalite locale
{ "name": "consulter_fiscalite_locale", "arguments": { "code_postal": "93140" } }
{ "name": "consulter_fiscalite_locale", "arguments": { "communes": ["PARIS", "LYON", "MARSEILLE"] } }
Transactions immobilieres (DVF)
{ "name": "consulter_transactions_immobilieres", "arguments": { "commune": "Bondy", "type_local": "Appartement" } }
{ "name": "consulter_transactions_immobilieres", "arguments": { "commune": "Lyon", "evolution": true } }
Comment ca marche
Simulateur de taxe fonciere
VLC estimee = Surface ponderee x Tarif ajuste x Coef. entretien
Base imposable = VLC x 50 %
TF estimee = Base imposable x Taux global TFB (REI)
- Surface ponderee : surface habitable + equivalences confort
- Tarif ajuste : tarif VLC national x ratio prix local DVF / prix national
- Coef. entretien : selon l'anciennete du bien (0.90 a 1.15)
- Taux TFB : vrais taux votes par les collectivites (source REI DGFiP)
Simulateur de frais de notaire
Frais = DMTO + Emoluments TTC + CSI + Debours
- DMTO : 5,81 % (ancien, taux normal) ou 6,32 % (taux majore 2025) ; 0,71 % (neuf)
- Emoluments : bareme degressif reglemente (3,87 % -> 0,799 %) + TVA 20 %
- CSI : 0,10 % du prix (minimum 15 EUR)
- Debours : ~1 200 EUR (estimation)
Simulateur d'impot sur le revenu
Quotient familial = Revenu net imposable / Nombre de parts
IR brut = Bareme progressif applique au QF x Nombre de parts
IR net = IR brut - Decote (si applicable) + CEHR (si > 250k/500k)
Bareme 2025 (revenus 2024) : 0 % / 11 % / 30 % / 41 % / 45 %
Revenus complementaires supportes : fonciers (micro/reel), capitaux mobiliers (PFU/bareme), micro-BIC (50 %), micro-BNC (34 %).
Recherche d'entreprise
Recherche via l'API Recherche d'entreprises (DINUM) par SIRET, SIREN ou nom. Retourne forme juridique, NAF, effectif, dirigeants, adresse, et chaine vers KALI pour les conventions collectives applicables.
Etablissements scolaires
Proxy vers l'API Explore v2.1 de data.education.gouv.fr (Annuaire de l'education nationale, 68 000+ etablissements). Filtres : commune, code postal, type (ecole/college/lycee), statut (public/prive), nom. Retourne adresse, contact, voies d'enseignement, services (restauration, internat, ULIS, SEGPA), sections (europeenne, internationale, sport, arts).
Resultats lycees (IVAL)
Proxy vers les datasets IVAL GT et Pro de la DEPP (data.education.gouv.fr). Requetes paralleles GT + Pro, tri par valeur ajoutee decroissante. Indicateurs : taux de reussite au bac, valeur ajoutee, taux d'acces 2nde-bac, taux de mentions, effectifs par niveau. Sessions 2012-2024.
Architecture
Cloudflare Workers (plan payant)
+-- Transport : Streamable HTTP (POST /mcp)
+-- D1 SQLite (fiches DILA)
| +-- fiches (~5 500 fiches pratiques)
| +-- fiches_fts (index FTS5, tokenize unicode61)
| +-- themes (304 themes hierarchiques)
| +-- sync_log (historique des synchronisations)
| +-- tool_stats (statistiques d'usage)
+-- Proxy API (temps reel, cache + retry)
| +-- data.economie.gouv.fr -> REI fiscalite locale + BOFiP
| +-- data.gouv.fr -> DVF transactions + Zonage ABC + KALI conventions
| +-- data.education.gouv.fr -> Annuaire etablissements + IVAL lycees + Evaluations nationales + Parcoursup + InserJeunes
| +-- georisques.gouv.fr -> Risques naturels GASPAR + Arretes CatNat
| +-- data.ameli.fr -> Acces aux soins (effectifs, densite, patientele MT)
| +-- api.piste.gouv.fr -> Legifrance (textes legaux, codes juridiques, jurisprudence, JORF)
| +-- data.caf.fr -> Statistiques CAF allocataires (RSA, APL, AAH, AF, prime d'activite)
| +-- boamp-datadila.opendatasoft.com -> Marches publics BOAMP (appels d'offres, attributions, MAPA, DSP)
| +-- bodacc-datadila.opendatasoft.com -> Annonces legales BODACC (immatriculations, radiations, cessions, procedures collectives)
| +-- geo.api.gouv.fr -> Resolution communes
| +-- recherche-entreprises.api.gouv.fr -> Fiche entreprise
| +-- API Annuaire -> services publics locaux
+-- Cron (0 6 * * *) -> sync quotidienne DILA
Sources de donnees
Endpoints
Developpement
npm install
npm run dev # Serveur local
npx vitest run # Tests unitaires (~600 tests)
npm run typecheck # Verification TypeScript (0 erreurs)
npm run deploy # Deploiement Cloudflare
Stack technique
- TypeScript / Cloudflare Workers
- D1 SQLite + FTS5
- Vitest (tests unitaires)
- fflate (decompression ZIP)
- fast-xml-parser (parsing XML DILA)
- APIs : Annuaire, data.economie.gouv.fr, data.gouv.fr, geo.api.gouv.fr, recherche-entreprises.api.gouv.fr
Licence
MIT
Contribution
- Fork le repo
- Creer une branche (
git checkout -b feature/mon-outil) - Suivre le pattern : 1 fichier = 1 outil dans
src/tools/ - Ajouter l'import + definition + case dans
src/index.ts - Ecrire les tests dans
src/tools/__tests__/ - Push sur
main-> auto-deploy