Skip to content

ignfab/geocontext

Repository files navigation

logo du projet geocontext

Geocontext

npm version prototype

Geocontext est un serveur MCP qui permet aux assistants IA d’interroger les données géographiques françaises de référence publiées sur la Géoplateforme de l'IGN.

Fiche MCP Geocontext

Pourquoi Geocontext ?

  • Pas de téléchargement — Geocontext interroge directement les services de la Géoplateforme IGN, sans copie locale ni synchronisation à maintenir.
  • Données de référence à jour — les réponses s’appuient sur les référentiels géographiques publiés en continu par l’IGN et ses partenaires.
  • Réponses optimisées pour les LLM — les traitements et filtrages sont faits côté serveur pour limiter les tokens transmis au modèle.
  • Moins d’hallucinations — les descriptions et schémas enrichis aident l’assistant à identifier les bonnes données et les bons champs (implémentation anticipée de OGC API Feature - schema dans ignfab/gpf-schema-store).
  • Compatible MCP — utilisable avec des clients compatibles MCP comme Claude Desktop, Cursor ou MCPJam, mais aussi directement dans certaines interfaces de chat en ligne compatibles, comme Claude, Le Chat de Mistral ou ChatGPT, via leurs connecteurs MCP.

Démo en 30 secondes

Question

Combien y a-t-il de bâtiments de plus de 20 mètres à Vincennes ?

Réponse

À Vincennes (94300, Val-de-Marne), il y a 509 bâtiments de plus de 20 mètres de hauteur, selon les données de la BD TOPO® de l'IGN.
La hauteur prise en compte est celle mesurée entre le sol et le point haut de la gouttière du bâtiment.

Trace complète

Voir la trace complète
💬 Je vais d'abord rechercher les informations nécessaires :
   les coordonnées de Vincennes et le type WFS pour les bâtiments.
🔧 Appel outil: geocode({'text': 'Vincennes'})
🔧 Appel outil: gpf_wfs_search_types({'query': 'bâtiment hauteur'})

💬 Parfait ! J'ai trouvé le type WFS BDTOPO_V3:batiment.
   Je vais maintenant récupérer le schéma de ce type pour connaître
   les propriétés exactes, notamment la hauteur et le code INSEE de Vincennes.
🔧 Appel outil: gpf_wfs_describe_type({'typename': 'BDTOPO_V3:batiment'})
🔧 Appel outil: adminexpress({'lon': 2.437785,'lat': 48.847279})

💬 J'ai toutes les informations nécessaires.
   La commune de Vincennes a le feature_id commune.33667.
   Je vais maintenant compter les bâtiments de plus de 20 mètres
   de hauteur sur cette commune.
🔧 Appel outil: gpf_wfs_get_features({
  'typename': 'BDTOPO_V3:batiment',
  'result_type': 'hits',
  'where': [
    {
      'property': 'hauteur',
      'operator': 'gt',
      'value': '20'
    }
  ],
  'spatial_operator': 'intersects_feature',
  'intersects_feature_typename': 'ADMINEXPRESS-COG.LATEST:commune',
  'intersects_feature_id': 'commune.33667'
   })

💬 À Vincennes (`94300`, Val-de-Marne), il y a **509 bâtiments**
   de plus de **20 mètres de hauteur**, selon les données
   de la **BD TOPO®** de l'IGN.
   La hauteur prise en compte est celle mesurée entre le sol
   et le point haut de la gouttière du bâtiment.

Démarrage rapide

☁️ Instance HTTP prête à l'emploi

Geocontext est disponible comme serveur MCP distant en HTTP : https://geollm.beta.ign.fr/geocontext/mcp

Exemple de configuration pour un client compatible MCP acceptant les serveurs HTTP distants :

{
  "mcpServers": {
    "geocontext": {
      "type": "http",
      "url": "https://geollm.beta.ign.fr/geocontext/mcp"
    }
  }
}

Selon le client utilisé, la syntaxe exacte peut varier. Certaines interfaces de chat compatibles MCP demandent simplement l’URL du serveur distant dans leurs paramètres de connecteurs.

💻 Utilisation en local

Prérequis : Node.js (>=22.21.0, >=24.5.0 recommandé, à contrôler avec node --version) avec npx.

Vous pouvez lancer Geocontext vous-même en local avec la commande npx -y @ignfab/geocontext qui démarrera la dernière version publiée de @ignfab/geocontext ou laisser un client MCP comme Cursor le démarrer pour vous via sa configuration.

Par exemple, dans Cursor ("Settings" > "MCP" > "Add server"):

{
  "mcpServers": {
    "geocontext": {
      "command": "npx",
      "args": ["-y", "@ignfab/geocontext"]
    }
  }
}

Exemples d’utilisation

Géocodage et altimétrie

Quelle est l'altitude de la mairie de Vincennes ?

demo-geocontext - altitude mairie de Vincennes

ADMIN-EXPRESS et CADASTRE

Quelles sont les informations administratives pour la tour Eiffel ?

Claude - info administrative tour Eiffel

BDTOPO

Combien y a-t-il de bâtiments de plus de 20 mètres à Vincennes ?

Claude - bâtiment de plus de 20 mètres à Vincennes

Quelles sont les 5 communes les plus peuplées du Doubs ?

demo-geocontext - 5 communes les plus peuplées du Doubs

Géoportail de l'Urbanisme

Quel est le document PLU en vigueur pour le port de Marseille ?

Claude - PLU port de Marseille

Quelles assiettes de SUP sont présentes autour de la mairie de Vincennes ?

Claude - SUP mairie de Vincennes

Fonctionnalités disponibles

Les fonctionnalités correspondent aux outils MCP documentés dans docs/mcp-tools.md.

Usage Outil MCP Source utilisée Exemple
Géocoder un lieu geocode Autocomplétion Géoplateforme Localiser une mairie
Obtenir une altitude altitude Calcul altimétrique Géoplateforme Altitude d'un point
Récupérer le contexte administratif adminexpress WFS + ADMIN-EXPRESS Commune, département, région
Récupérer le cadastre cadastre WFS + PARCELLAIRE-EXPRESS Parcelle cadastrale
Récupérer les documents d'urbanisme urbanisme WFS + données GPU PLU, POS, CC
Récupérer les servitudes assiette_sup WFS + données GPU SUP autour d'un lieu
Trouver une couche WFS gpf_wfs_search_types gpf-schema-store Trouver la table des bâtiments
Décrire une couche WFS gpf_wfs_describe_type gpf-schema-store Lister les champs disponibles
Interroger une couche WFS gpf_wfs_get_features WFS Extraire ou compter des objets
Récupérer un objet par identifiant gpf_wfs_get_feature_by_id WFS Charger une commune précise

Architecture en bref

Geocontext agit comme un intermédiaire entre un assistant compatible MCP et les services de la Géoplateforme IGN.

Il n’héberge pas les données : il expose des outils MCP, interroge les services IGN à la demande, puis retourne au LLM des réponses structurées, filtrées et adaptées à son contexte.

flowchart TB
    assistant["Assistant IA / client MCP"]
    geocontext["Geocontext<br/>serveur MCP"]
    geopf["Géoplateforme IGN<br/>géocodage · altimétrie · WFS · urbanisme · cadastre"]

    assistant -->|"appels d'outils MCP"| geocontext
    geocontext -->|"requêtes aux services IGN"| geopf
    geopf -->|"données de référence"| geocontext
    geocontext -->|"réponses structurées"| assistant
Loading

En pratique, Geocontext permet à l’assistant de passer d’une question en langage naturel à des appels aux données géographiques de référence, sans téléchargement préalable ni copie locale des référentiels.

Statut et limites

Documentation

La documentation détaillée est répartie par usage :

  • Installer Geocontext dans un client MCP

  • Configurer le serveur MCP

  • Comprendre les outils disponibles

    • Outils MCP : description technique des outils exposés par Geocontext, paramètres attendus et exemples d’appels.
  • Développer ou contribuer au code

    • Guide développeur : installation des dépendances, construction de l’application, exécution des tests et organisation du projet.

Contribution

🐛 Signaler un problème

N'hésitez pas à créer une issue si vous rencontrez un problème !

Merci de fournir :

  • Le client MCP (ex. : GitHub Copilot, Cursor, Claude Desktop) et le mode de transport (stdio ou http) utilisé.
  • Le modèle utilisé (ex. : Claude Sonnet 4.5)
  • La version de Geocontext (visible sur npmjs.com/@ignfab/geocontext ou avec npx @ignfab/geocontext --version)
  • La demande faite à l'assistant (ex. : "Combien y a-t-il de ponts franchissant la Seine ?")
  • Si possible, un export de la discussion au format Markdown.

✨ Demander une évolution

N'hésitez pas non plus à créer une issue pour demander une évolution.

Merci de fournir la question type pour laquelle vous souhaiteriez que le MCP aide à apporter une réponse. Par exemple :

  • "Combien y a-t-il de bâtiments à moins de 5 km à pied de la tour Eiffel ?" -> nous verrons comment exploiter les isochrones
  • "Quels sont les fonds de carte disponibles ?" -> nous verrons comment exploiter le service WMTS de la Géoplateforme.

Crédits

Voir également

Exemple : Qui est le maire de la commune de Vincennes ?

Licence

MIT

About

An experimental MCP server providing access to the services and data of the french Geoplateform

Topics

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors