Aller au contenu

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.

Application et services Fork Docker
  • Mis à jour
  • Python · 98.28%
  • MIT
Crédit amont
Langages du dépôtPython 98.28%3

Parts calculées à partir des octets GitHub Linguist.

Langage%Octets
Python98.28%157 778
Shell1.36%2 183
Dockerfile0.36%574

GitHub · README · Statistiques de langages

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.

README.md · Installation manuelle
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.py
README.md · Quick start
git clone https://github.com/Stefen-Taime/donneesqc-mcp.git
cd donneesqc-mcp
docker compose up -d

Ré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 :

VariableDéfautDescription
MCP_HOST0.0.0.0Adresse d’écoute. Utilisez 127.0.0.1 en développement local.
MCP_PORT8000Port du serveur HTTP.
MCP_ENVlocalNom de l’environnement (Sentry).
HTTP_TIMEOUT30.0Timeout HTTP en secondes.
HTTP_MAX_RETRIES3Nombre de tentatives en cas d’erreur réseau ou 5xx.
DOWNLOAD_MAX_BYTES52428800 (50 Mo)Taille maximale pour le téléchargement de fichiers.
LOG_LEVELINFONiveau de journalisation Python.
SENTRY_DSN(non défini)DSN Sentry pour le monitoring.
Lire les instructions complètes ↗
Configuration et utilisation

Gemini CLI

README.md

Ajoutez dans ~/.gemini/settings.json :
Lire les instructions complètes ↗
Documentation source

1 documents lus parmi 1 candidats.

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.

Contexte système Contexte
  1. Client MCP
  2. Outils HTTP enregistrés
  3. Recherche au catalogue
  4. Table ou fichier
  5. 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.

Vue statique de l’architecture de donneesqc-mcp
Aperçu statique. Le diagramme interactif le remplace après le chargement de Mermaid.
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 &amp; 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 toneIndigo

Un 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:8

    Mé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

Fichiers à lire 3

Références