Serveur MCP (Model Context Protocol) qui expose les configurations mviewer à un agent IA. Il permet d'explorer les données géographiques, de résoudre leurs métadonnées et d'interroger les données spatiales via WFS, en langage naturel.
Agent IA
│
▼ MCP (streamable-http)
mcp-mviewer-python
├── Charge le config.xml mviewer
├── Indexe thèmes et données
├── Résout les métadonnées CSW
└── Exécute des requêtes WFS
│
├── Services WFS (données géographiques)
└── Services CSW (métadonnées)
| Outil |
Description |
check_mviewer |
Valide qu'une URL pointe bien vers un config.xml mviewer avant de le charger |
load_xml |
Charge un config.xml et indexe ses données et thèmes en mémoire |
list_themes |
Liste les thèmes disponibles dans la config chargée |
list_layers_by_theme |
Liste les données d'un thème donné |
list_all_layers |
Liste toutes les données, tous thèmes confondus |
get_metadata |
Récupère les métadonnées CSW d'une donnée et résout son URL WFS |
get_bbox |
Calcule une emprise rectangulaire autour d'une commune française |
spatial_analysis |
Scanne toutes les couches du contexte sur une bbox et retourne les layer_id ayant des données dans la zone |
spatial_query |
Interroge une ou plusieurs données WFS sur une emprise géographique |
bbox_to_mviewer_url |
Génère un lien mviewer permalink à partir de données et d'une config xml |
check_mviewer(url)
→ load_xml(url)
→ list_themes()
→ list_layers_by_theme(theme)
→ get_bbox(commune) ← optionnel, si zone nommée
→ spatial_analysis(bbox) ← identifie les couches pertinentes
→ get_metadata(layer_id) ← obligatoire avant spatial_query
→ spatial_query(layers, bbox)
→ bbox_to_mviewer_url(bbox, layers)
pip install -r requirements.txt
python main.py
docker compose up --build
| Variable |
Défaut |
Description |
DEFAULT_CONFIG_URL |
https://geobretagne.fr/apps/viz/config.xml |
URL de la config mviewer chargée au démarrage. |
| URL |
Description |
http://localhost:8000/mcp/mviewer |
Endpoint MCP (streamable-http) |
http://localhost:8000/mcp/mviewer/playground |
Interface web de test interactif |
| Package |
Rôle |
mcp[cli] |
Framework MCP (FastMCP) |
httpx |
Requêtes HTTP async (WFS, CSW, geo.api.gouv.fr) |
xmltodict |
Parsing des configs XML mviewer |
mcp-mviewer-python/
├── main.py # Point d'entrée du serveur
├── shared.py # Config globale et contexte en mémoire
├── playground.py # Interface web de test
├── tools/
│ ├── check_mviewer.py
│ ├── load_xml.py
│ ├── list_themes.py
│ ├── list_layers_by_theme.py
│ ├── list_all_layers.py
│ ├── get_metadata.py
│ ├── get_bbox.py
│ ├── spatial_analysis.py
│ ├── spatial_query.py
│ └── bbox_to_mviewer_url.py
├── requirements.txt
├── Dockerfile
└── docker-compose.yml