donneesqc-mcp : Une passerelle MCP vers les données ouvertes
donneesqc-mcp est un fork qui expose des opérations de données ouvertes du Québec et de Montréal par MCP. Le point d’entrée enregistre les outils et démarre le transport HTTP; les accès aux données et outils géographiques restent séparés.
Langages du dépôtPython 98.28%3
Parts calculées à partir des octets GitHub Linguist.
| Langage | % | Octets |
|---|---|---|
| Python | 157 778 | |
| Shell | 2 183 | |
| Dockerfile | 574 |
Aperçu
Pourquoi il existe
Serveur MCP robuste reliant les assistants IA aux données ouvertes du Québec et de Montréal avec validation stricte.
Cas d’usage
Interrogation en langage naturel des jeux de données municipaux et provinciaux ouverts.
Démarrage
Ces commandes viennent de la documentation du dépôt. Elles n’ont pas été exécutées pendant cette revue.
git clone https://github.com/Stefen-Taime/donneesqc-mcp.git
cd donneesqc-mcp
uv sync
cp .env.example .env
set -a && source .env && set +a
uv run python main.pygit clone https://github.com/Stefen-Taime/donneesqc-mcp.git
cd donneesqc-mcp
docker compose up -dRéférences du dépôt
Extraits des guides du dépôt, dans leur langue d’origine. Les liens ouvrent la version du code consultée.
Prérequis et premier essai
Installation manuelle
README.md
Variables d’environnement :
| Variable | Défaut | Description |
|---|---|---|
| MCP_HOST | 0.0.0.0 | Adresse d’écoute. Utilisez 127.0.0.1 en développement local. |
| MCP_PORT | 8000 | Port du serveur HTTP. |
| MCP_ENV | local | Nom de l’environnement (Sentry). |
| HTTP_TIMEOUT | 30.0 | Timeout HTTP en secondes. |
| HTTP_MAX_RETRIES | 3 | Nombre de tentatives en cas d’erreur réseau ou 5xx. |
| DOWNLOAD_MAX_BYTES | 52428800 (50 Mo) | Taille maximale pour le téléchargement de fichiers. |
| LOG_LEVEL | INFO | Niveau de journalisation Python. |
| SENTRY_DSN | (non défini) | DSN Sentry pour le monitoring. |
Configuration et utilisation
Gemini CLI
README.md
Fonctions et composants 2
- Démarrage du serveur
- main.py configure les logs, initialise Sentry si demandé, appelle register_all_tools et lance MCP en streamable-http. La surveillance est optionnelle et ne sert pas elle-même les requêtes de données.
- Frontière des services de données
- Les groupes d’outils couvrent découverte du catalogue, accès CKAN DataStore, téléchargement et enrichissement géographique. Un résultat de catalogue décrit une ressource; le tableau ou fichier demande un accès distinct, parfois dans un autre format.
Architecture
Les composants et leurs liens restent lisibles en texte. Le diagramme ajoute une vue interactive.
- Client MCP
- Outils HTTP enregistrés
- Recherche au catalogue
- Table ou fichier
- Résultat structuré
Liens vérifiés dans le dépôt.
Mermaid Diagramme interactif (chargement à l’ouverture)
Vue générale des composants et des échanges vérifiés dans le dépôt.

flowchart LR
subgraph group_server["MCP Server"]
node_entry["MCP Entry<br/>[main.py]"]
node_registry["Tool Registry<br/>[__init__.py]"]
end
subgraph group_catalog["Catalog & Data"]
node_dqtools["DQ Catalog Tools"]
node_mtltools["Montréal Tools"]
node_intelligence["Data Intelligence"]
node_downloads["Resource Access"]
end
subgraph group_geo["Geospatial"]
node_geo_tools["OGC Tools"]
node_geocoding["Geocoding Tools"]
node_coordinates["Coordinate Tools"]
end
subgraph group_shared["Shared Services"]
node_ckan["CKAN API<br/>[ckan_api.py]"]
node_geoapi["OGC API<br/>[geo_api.py]"]
node_coords["Coordinate Conversion<br/>[coords.py]"]
node_http["HTTP Client<br/>[http_client.py]"]
node_config["Configuration<br/>[config.py]"]
end
node_agent(("AI Agent"))
node_dqportal["Données Québec"]
node_mtlportal["Montréal CKAN"]
node_geoservice["IGO Services"]
node_geocoder["Address Geocoder"]
node_agent -->|"connects MCP"| node_entry
node_entry -->|"registers tools"| node_registry
node_registry -->|"registers"| node_dqtools
node_registry -->|"registers"| node_mtltools
node_registry -->|"registers"| node_intelligence
node_registry -->|"registers"| node_downloads
node_registry -->|"registers"| node_geo_tools
node_registry -->|"registers"| node_geocoding
node_registry -->|"registers"| node_coordinates
node_dqtools -->|"calls"| node_ckan
node_mtltools -->|"calls"| node_ckan
node_intelligence -->|"searches and queries"| node_ckan
node_downloads -->|"gets resource metadata"| node_ckan
node_ckan -->|"fetches JSON"| node_http
node_dqtools -->|"queries catalogue"| node_dqportal
node_mtltools -->|"queries catalogue"| node_mtlportal
node_geo_tools -->|"calls"| node_geoapi
node_geoapi -->|"fetches OGC data"| node_http
node_geoapi -->|"requests WFS/WMS"| node_geoservice
node_geocoding -.->|"geocodes addresses"| node_geocoder
node_coordinates -->|"converts coordinates"| node_coords
node_http -->|"uses settings"| node_config
node_geoapi -->|"uses endpoints"| node_config
node_entry -->|"loads server settings"| node_config
class node_entry,node_registry toneBlue
class node_dqtools,node_mtltools,node_intelligence,node_downloads toneAmber
class node_geo_tools,node_geocoding,node_coordinates toneMint
class node_ckan,node_geoapi,node_coords,node_http,node_config toneRose
class node_agent,node_dqportal,node_mtlportal,node_geoservice,node_geocoder toneIndigoUn serveur MCP qui donne aux agents accès aux catalogues de données ouvertes du Québec, aux requêtes DataStore, aux services géospatiaux, au géocodage et à la conversion de coordonnées par des outils enregistrés et des clients HTTP communs.
- Composants
- 19
- Connexions
- 24
- Liens appuyés par le code ou le README
- 23/24
Version texte du diagramme
- Client MCP → Outils HTTP enregistrés
- Outils HTTP enregistrés → Recherche au catalogue
- Recherche au catalogue → Table ou fichier
- Table ou fichier → Résultat structuré
- Résultat structuré → Client MCP
Suivre un parcours dans le code
Suivez main vers register_all_tools, puis l’outil d’accès derrière le résultat du catalogue. Les identifiants, formats et systèmes de coordonnées comptent davantage que le seul titre.
Déploiement et exploitation
Les ports, le stockage et les relations de démarrage ci-dessous viennent de la configuration du dépôt. depends_on indique l’ordre de démarrage, pas la disponibilité du service.
Types et structure des fichiers
1 types déclarés, dont 1 dans l’aperçu des relations de base.
Diagramme des types
classDiagram
direction TB
class t5a13289447b1["TestValidateSQL"] {
test_select_simple()
test_select_with_where()
test_select_with_semicolon()
test_select_with_whitespace()
}
Les bases non résolues restent identifiées; les signatures complètes ne sont pas reconstruites.
Index des types
TestValidateSQL(class) ·tests/test_sql_validation.py:8Méthodes dans l’aperçu :
test_select_simple, test_select_with_where, test_select_with_semicolon, test_select_with_whitespace.
Référence
50 / 50 fichiers admissibles lus (59 dans l’arbre); 0 trop volumineux, 0 échec de lecture et 0 diagnostic de syntaxe.
Ce que couvre l’analyse
Les dossiers connus de dépendances et de compilation, les fichiers d’identifiants et les binaires sont exclus. La collecte couvre les README, les manifestes reconnus et les fichiers source pris en charge.
Les statistiques Linguist couvrent l’ensemble du dépôt et peuvent inclure d’autres langages.
Carte des fichiers
flowchart TD
root["donneesqc-mcp"]
f0["README.md"]
root --> f0
f1["main.py"]
root --> f1
f2["tools/__init__.py"]
root --> f2
f3["docker-compose.yml"]
root --> f3
f4["pyproject.toml"]
root --> f4
f5["tag_version.sh"]
root --> f5
f6["helpers/__init__.py"]
root --> f6
f7["helpers/ckan_api.py"]
root --> f7
f8["helpers/config.py"]
root --> f8
f9["helpers/coords.py"]
root --> f9
f10["helpers/geo_api.py"]
root --> f10
f11["helpers/http_client.py"]
root --> f11
f12["tests/__init__.py"]
root --> f12
f13["tests/conftest.py"]
root --> f13
f14["tests/test_ckan_api.py"]
root --> f14
f15["tests/test_http_client.py"]
root --> f15