Skip to main content

permisapi-mcp

Serveur MCP (Model Context Protocol) pour PermisAPI.

Il permet à Claude, ChatGPT, Claude Desktop, Cursor, Windsurf ou tout client compatible MCP d'interroger en langage naturel 1,3 million de permis de construire en France (base Sitadel, permis autorisés depuis 2013, 101 départements, logements et locaux).

18 outils en lecture seule : recherche par critères ou par adresse, score d'opportunité marchand de biens v0.3 et son explication (les 11 signaux pondérés, commentés en français), ventes immobilières voisines (DVF, ventes de 2021 à 2025) et prix au m², zonage PLU, risques Géorisques (inondation, séisme, sites Seveso proches…), parcelle cadastrale DGFiP, bâtiments existants (terrain nu ou déjà bâti), parcelles voisines, recherche dans un polygone GeoJSON (ZAC, périmètre d'opération), statistiques de densité par commune, budget de chantier estimé et entreprises du bâtiment proches (base SIRENE, codes NAF 41, 42 et 43), enrichissement d'une liste.

Deux façons de l'utiliser

1. Serveur hébergé (recommandé, rien à installer)

Adresse : https://mcp.permisapi.fr/mcp/

  • Claude et ChatGPT : ajoutez un connecteur personnalisé à cette adresse. Une page PermisAPI s'ouvre ; collez-y votre clé et cliquez sur Autoriser (OAuth 2.0 avec PKCE : l'assistant reçoit un jeton, jamais votre clé). Les intitulés des menus changent d'une version à l'autre : le pas à pas à jour est sur permisapi.fr/mcp.
  • Cursor, Windsurf et autres clients acceptant un en-tête (~/.cursor/mcp.json) :
{
  "mcpServers": {
    "permisapi-hosted": {
      "url": "https://mcp.permisapi.fr/mcp/",
      "headers": { "Authorization": "Bearer pk_live_VOTRE_CLE" }
    }
  }
}

Transports : Streamable HTTP (spécification MCP actuelle) sur /mcp et /mcp/, et SSE historique sur /sse + /messages/. Le serveur ne conserve ni vos questions ni les résultats : il relaie vos appels vers api.permisapi.fr. Quand la mesure d'audience est activée sur le serveur (PostHog, hébergement UE), chaque appel d'outil y est compté (nom de l'outil, durée, statut, formule).

2. En local (Claude Desktop, mode stdio)

Pour Claude Desktop, ou si vous préférez tout faire tourner sur votre machine, installez le paquet permisapi-mcp.

Prérequis

  • Python 3.10 ou plus récent (exigé par le SDK MCP)
  • Une clé PermisAPI : permisapi.fr/#pricing (formule Gratuit, sans carte bancaire)

Installation

Vérifiez d'abord la version de Python :

python --version       # macOS / Linux / Windows

Si elle est >= 3.10 :

pip install permisapi-mcp

Sinon, voir Dépannage plus bas (solution uvx en une commande, sans changer le Python du système).

Configuration de Claude Desktop

Modifiez ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) ou %APPDATA%\Claude\claude_desktop_config.json (Windows) :

{
  "mcpServers": {
    "permisapi": {
      "command": "permisapi-mcp",
      "env": {
        "PERMISAPI_KEY": "pk_live_VOTRE_CLE"
      }
    }
  }
}

Redémarrez Claude Desktop. Vous pouvez alors demander :

« Liste les permis de logement autorisés à Paris ce mois-ci »

« Trouve des permis autour de la rue de Passy à Paris »

« Quel est le zonage PLU du permis 07510125V0025 ? » (formule Régional et plus)

Périmètre géographique selon la formule (src/services/plan_gating.py) :

  • Gratuit : 1 département, les nouveaux permis des 2 dernières publications Sitadel (environ 2 mois), 500 requêtes par mois.
  • Découverte : 1 département, 6 mois d'historique, 2 000 requêtes par mois.
  • Explorateur : 5 départements, 12 mois d'historique, 5 000 requêtes par mois.
  • Régional : 5 départements, historique complet et données avancées (ventes DVF, score, PLU, risques, cadastre, budget, entreprises).
  • Pro : les mêmes données avancées sur la France entière.
  • Business et Entreprise : France entière, plus la recherche par polygone, la densité par commune et l'enrichissement de liste.

Pour les formules à départements (Gratuit, Découverte, Explorateur, Régional), chaque nouveau département interrogé s'ajoute à votre périmètre jusqu'à la limite de la formule ; le choix est ensuite définitif pour cette formule. Les exemples ci-dessus portent sur Paris (75).

Configuration de Cursor, Windsurf et autres clients

Guide complet : permisapi.fr/mcp

Outils disponibles (18)

Outil Route Formules
search_permits GET /v1/permits (12 filtres et un tri) Toutes
get_permit_details GET /v1/permits/{num_pa} Toutes
fuzzy_search_addresses GET /v1/search?q=texte (recherche approchée) Toutes
find_dvf_neighbors GET /v1/permits/{num_pa}/dvf (ventes DVF 2021-2025, prix médian au m²) Régional et plus
get_mdb_score GET /v1/permits/{num_pa}/score (score v0.3, 11 signaux) Régional et plus
get_score_explanation GET /v1/permits/{num_pa}/score/explain (11 signaux commentés, principaux leviers) Régional et plus
get_plu_zoning GET /v1/permits/{num_pa}/plu Régional et plus
get_risks GET /v1/permits/{num_pa}/risks (Géorisques) Régional et plus
get_parcelle_geometry GET /v1/permits/{num_pa}/parcelle (cadastre DGFiP) Régional et plus
get_existing_buildings GET /v1/permits/{num_pa}/batiments-existants (terrain nu ou bâti) Régional et plus
get_parcelle_by_id GET /v1/parcelles/{id_parcelle} (identifiant cadastral de 14 caractères) Régional et plus
get_neighbor_parcels GET /v1/permits/{num_pa}/parcelles-voisines (rayon de 10 à 2 000 m) Régional et plus
get_permit_full_view GET /v1/permits/{num_pa}/360 (vue complète en un appel) Régional et plus (détail seul en Gratuit, Découverte et Explorateur)
get_economics GET /v1/permits/{num_pa}/economics (budget de chantier : fourchette, scénario, lots) Régional et plus
get_contractors GET /v1/permits/{num_pa}/contractors (entreprises du bâtiment proches, par métier) Régional et plus
search_permits_in_polygon POST /v1/permits/inside-polygon (polygone GeoJSON) Business et Entreprise
get_commune_density_stats GET /v1/stats/commune/{code}/density (parcelles, bâtiments, permis) Business et Entreprise
bulk_enrich_list POST /v1/permits/bulk-enrich (liste de 1 000 lignes au plus) Business et Entreprise

« Régional et plus » = Régional, Pro, Business et Entreprise. Les autres formules reçoivent une erreur 402.

Sécurité

  • En mode local, la clé reste sur votre machine (variable d'environnement) ; en mode hébergé, l'assistant ne reçoit qu'un jeton. Dans les deux cas, le modèle ne voit jamais la clé, seulement les arguments des outils.
  • Validation stricte des entrées (num_pa, identifiants cadastraux, codes INSEE, bornes numériques).
  • 16 outils en consultation (GET) et 2 en POST (bulk_enrich_list, qui croise une liste que vous fournissez, et search_permits_in_polygon, qui reçoit un polygone). Tous sont en lecture seule : ils ne modifient ni votre compte ni les données.

Dépannage

pip install permisapi-mcp répond « package introuvable » ou « no matching distribution »

Cause la plus fréquente : votre Python est antérieur à 3.10, minimum exigé par le SDK MCP.

Vérifiez :

python --version       # ou python3 --version

Si elle est < 3.10, deux solutions au choix.

Solution A (recommandée, 30 secondes) : uvx avec une version de Python imposée

uvx installe et lance le serveur dans un Python isolé, à la version voulue, sans toucher à votre installation.

# 1. Installer uv (une seule fois)
curl -LsSf https://astral.sh/uv/install.sh | sh         # macOS / Linux
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"  # Windows PowerShell

# 2. Lancer le serveur
uvx --python 3.11 permisapi-mcp

Puis, dans la configuration de Claude Desktop, remplacez "command": "permisapi-mcp" par :

{
  "mcpServers": {
    "permisapi": {
      "command": "uvx",
      "args": ["--python", "3.11", "permisapi-mcp"],
      "env": { "PERMISAPI_KEY": "pk_live_VOTRE_CLE" }
    }
  }
}

Solution B : mettre à jour le Python du système

  • macOS : brew install python@3.11
  • Windows : télécharger https://www.python.org/downloads/ et cocher « Add to PATH »
  • Linux : sudo apt install python3.11 (ou l'équivalent de votre distribution)

Puis pip3.11 install permisapi-mcp.

Guide complet et autres questions : permisapi.fr/mcp

Licence

MIT pour le code. Données publiques : SDES (Sitadel), DGFiP (DVF, cadastre), Géorisques, IGN (Géoportail de l'Urbanisme), INSEE (SIRENE).

Support

evan@permisapi.fr

Code source

github.com/Evan-Crx/permisapi-mcp

Metadata

Release files for permisapi-mcp 0.5.10

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for permisapi-mcp 0.5.10
File Size Uploaded Provenance
permisapi_mcp-0.5.10.tar.gz 58.3 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for permisapi-mcp 0.5.10
File Interpreter ABI Platform
permisapi_mcp-0.5.10-py3-none-any.whl Python 3 none any Details

Total release size: 106.3 kB

Release files / permisapi_mcp-0.5.10.tar.gz

Download URL permisapi_mcp-0.5.10.tar.gz
Size 58.3 kB
Tags Source
SHA-256 checksum
How to use checksums
1432874b63ffed98e6a3d844e8cf672b96afa69ad86b48e94d4b6d8a0bf4a54e
BLAKE2b-256 checksum
How to use checksums
8e9349ac2730bea264e2f978643a43ebb865eaa5fb8686b69791dbe1167c98c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.17

Release files / permisapi_mcp-0.5.10-py3-none-any.whl

Download URL permisapi_mcp-0.5.10-py3-none-any.whl
Size 48.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
562d19da6e7fb536c0cadd77a40587bc6e4833447fac2d7d0c411a1a0a888e92
BLAKE2b-256 checksum
How to use checksums
bb7a716f74f93c8f93d4cd2571e1d5196fcf3f7d39b62e0e3b06387b86717e71
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.11.17

Security for permisapi-mcp 0.5.10

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page