Serveur MCP pour PermisAPI : 18 outils pour consulter 1,2 M+ permis de construire de France (2014-2026) depuis Claude Desktop, Cursor, Windsurf et tout client MCP. Accès aux données publiques Sitadel, transactions DVF, cadastre DGFiP, zonage PLU, risques BRGM.
Solid tool definitions overall with excellent naming conventions and comprehensive parameter documentation. All 18 tools follow verb_noun patterns (search_, get_, find_, bulk_). Input schemas are present and well-structured with types, descriptions, and constraints. However, output schemas are entirely undocumented, the code shows only input validation. Tool descriptions are detailed and domain-specific (French permitting context is clear), but several descriptions exceed recommended length (194 char baseline). Error handling is minimal; no guidance on retries, user-fixable vs. fatal errors, or recovery steps. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all tools being read-only. Security is well-handled via server-side API key injection, not exposed as parameters.
Croise une liste client (adresses, num_pa, etc.) avec la BDD PermisAPI pour enrichir chaque ligne avec permit details, score MDB, risks, zonage, etc. Utile pour l'analyse de portefeuille ou due diligence massif. Plan Business+. Coût quota = 1 unité par ligne soumise.
Récupère les 12 dernières années de transactions DVF (Demandes de Valeurs Foncières) sur la même parcelle cadastrale que le permis. Permet d'analyser l'historique des prix de vente, mutations, usage foncier. Plan Pro+. Coût quota = 1 unité.
Recherche fuzzy d'adresses via pg_trgm (PostgreSQL trigram full-text search). Tolerant aux typos, paronymies, ordre des mots. Retourne adresses matchantes avec code commune INSEE + coordonnées WGS84. Plan Free OK. Coût quota = nombre d'adresses retournées.
Statistiques agrégées par commune : densité de permis (nombre/km²), nombre de permis, surface moyenne, tendances annuelles. BI (Business Intelligence) pour évaluer l'activité constructive locale. Plan Business+. Coût quota = 1 unité.
Entreprises BTP locales qualifiées (sprint 16) : lookup SIRENE NAF 41/42/43 (1.087M actifs en BDD, 76% géolocalisés) par rayon + métier + effectif. Pont natif avec breakdown_by_lot de get_economics pour identifier les entreprises qualifiées par lot. Plan Pro+. Coût quota = 1 unité.
Output schemas are entirely missing. No tool documents what fields/structure it returns. LLMs cannot plan downstream tool calls or extract relevant data from responses.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All 18 tools are read-only; marking them explicitly helps LLMs optimize planning and avoid unnecessary caution.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | B | 72 | <=2025-11-25 | v2 |
Estimation budgétaire du chantier (sprint 15) : coût travaux estimé, SHON, ratios €/m², breakdown par lot de travaux (gros œuvre, VRD, fluides, etc.), comparables locaux. Plan Pro+. Coût quota = 1 unité.
Bâtiments existants sur la parcelle (géométries, hauteurs, années de construction, usage déclaré) détectés par analyse d'imagerie satellite et cadastre. Permet de distinguer terrain nu vs bâti. Plan Pro+. Coût quota = 1 unité.
Score MDB (Market Due Diligence) : notation 0-100 synthétique d'un permis basée sur 11 signaux (localisation, risques BRGM, densité commissions, historique DVF, zonage, timing, etc.). Permet une évaluation rapide du profil de risque et d'opportunité. Plan Pro+. Coût quota = 1 unité.
Parcelles voisines (cadastrales) autour du permis : localisation, superficie, historique mutations DVF. Pattern MDB (Market Due Diligence) local pour évaluer le voisinage. Plan Pro+. Coût quota = 1 unité.
Lookup direct de parcelle cadastrale par son identifiant DGFiP (id_parcelle = section+numéro). Retourne géométrie, superficie, historique mutations DVF (12 ans). Plan Pro+. Coût quota = 1 unité.
Géométrie cadastrale de la parcelle : GeoJSON (MultiPolygon), superficie, référence cadastrale DGFiP officielle, coordonnées centroïde WGS84. Plan Pro+. Coût quota = 1 unité.
Récupère tous les détails d'un permis spécifique (num_pa). Retourne : identifiants (Sitadel, cadastre), coordonnées géographiques (WGS84), demandeur (nom, SIREN, adresse), maître d'ouvrage, architecte, surface terrain/SHON/travaux, type de permis, état, dates clés, lien Sitadel officiel. Plan Free OK. Coût quota = 1 unité.
Vue composite 360° d'un permis : détails complets + score MDB + risques + zonage PLU + parcelle geometry + bâtiments existants + transactions DVF. Agrège 6 outils en 1 call. Plan Pro+. Coût quota = 6 unités.
Zonage PLU (Plan Local d'Urbanisme) de la parcelle : zone d'urbanisme, règles d'implantation, hauteur max, CES/COS, destination autorisée, EBC (Espaces Boisés Classés), périmètres ZPPAUP/ABC. Plan Pro+. Coût quota = 1 unité.
Risques naturels et industriels BRGM (Bureau de Recherches Géologiques et Minières) : aléa retrait gonflement argiles, zones inondables, risques mouvements de terrain, cavités, installations SEVESO, périmètres de protection d'eau potable, etc. Plan Pro+. Coût quota = 1 unité.
Explication transparente du score MDB : détail des 11 signaux (valeurs brutes, interprétations en français, contribution au score final). Permet de comprendre pourquoi un permis a un score donné. Plan Pro+. Coût quota = 1 unité.
Recherche des permis de construire de France avec filtres combinables : département, commune, type de permis, état, dates, surface min, SIREN demandeur. Retourne une page de permits avec leurs infos de base. Plan Free OK. **Coût quota = nombre de permits retournés** (max `limit`, min 1). Exemple : limit=20 et 15 permits matchent => 15 unités décomptées. Anti-exfiltration depuis 2026-05-16 : si tu cherches a couvrir un département entier, prefere une page raisonnable (limit=10-20) et arrete-toi quand l'user a ce qu'il veut, plutôt que paginer agressivement.
Recherche tous les permis situés à l'intérieur d'un polygone custom (GeoJSON). Utile pour une ZAC, un quartier, une zone d'intérêt. Retourne page de permits avec infos de base. Plan Business+. Coût quota = nombre de permits retournés.
Error handling is minimal. Code shows PermisapiError class but no guidance in tool descriptions on what to do on errors (retry, user-fixable, fatal). No examples of recoverable vs. non-recoverable failures.
bulk_enrich_list schema is too permissive. Accepts 'Chaque item: {...}' with no validation of required fields (num_pa vs address). Should enforce strict structure: required one of {num_pa: string} OR {address: string}, with optional custom_ref.
search_permits_in_polygon schema accepts any object for polygon param. Should validate GeoJSON structure (type: Polygon, coordinates: [[[lon, lat], ...]]) to prevent malformed input.
Tool descriptions lack 'WHEN to use' guidance. Many describe WHAT they return but not WHEN an LLM should call them vs. similar tools (e.g., get_neighbor_parcels vs. search_permits_in_polygon, get_permit_full_view vs. individual tools). Ambiguous descriptions force LLM reasoning cycles and wrong tool selection.
get_contractors exposes NAF codes as free-form string array. Should provide an enum of common BTP NAF codes (4120Z, 4211Z, etc.) or link to SIREN classification. Free-form strings invite hallucinated codes and API errors.
Tool descriptions include implementation details (e.g., 'Sprint 15', 'Sprint 16', 'v0.3') that distract from functional purpose. These should be removed; only include what the LLM needs to decide whether to call the tool.