Données Québec MCP
Enables AI agents to search, explore, and analyze Québec open data (Données Québec, Ville de Montréal, IGO) via natural language, including SQL queries, geocoding, and spatial operations.
README
Données Québec MCP
Serveur Model Context Protocol (MCP) qui permet aux agents IA (Claude, ChatGPT, Gemini, etc.) de rechercher, explorer et analyser les jeux de données de Données Québec, de la Ville de Montréal et des services géospatiaux du gouvernement du Québec (IGO), directement par conversation.
Au lieu de naviguer manuellement sur les portails, posez simplement vos questions : « Quels jeux de données existent sur la criminalité à Montréal ? » ou « Combien d'actes criminels par arrondissement en 2025 ? » et obtenez des réponses instantanées, incluant des analyses SQL.
Fonctionnalités clés : Requêtes SQL sur le DataStore | Téléchargement de ressources non-DataStore (CSV, JSON, GeoJSON) | Recherche + interrogation en un appel | Géocodage québécois | Conversion EPSG:32198 ↔ 4326 | Intersection spatiale | Couches géospatiales OGC | 3 sources de données | 28 outils
Exemples de requêtes
Voici ce que vous pouvez demander directement à votre agent IA :
1. Analyse SQL — criminalité par quartier
« Quels sont les 10 postes de quartier avec le plus d'actes criminels à Montréal ? »
| Rang | PDQ | Total actes |
|---|---|---|
| 1 | 38 (Centre-Sud) | 24 942 |
| 2 | 21 (Plateau-Mont-Royal) | 23 041 |
| 3 | 20 (Ville-Marie Est) | 20 135 |
| 4 | 48 (Saint-Laurent) | 16 163 |
| 5 | 26 (Côte-des-Neiges) | 15 955 |
L'agent exécute automatiquement une requête SQL GROUP BY sur le DataStore montréalais.
2. Exploration multi-outils — arbres publics
« Trouve les données sur les arbres publics de Montréal, explore la structure, puis dis-moi combien d'arbres par arrondissement. »
L'agent enchaîne 3 outils : search_montreal_datasets pour trouver le jeu, query_montreal_data pour explorer les colonnes, puis query_montreal_sql pour l'agrégation. Résultat : 333 556 arbres répartis dans 13 arrondissements, Mercier-Hochelaga-Maisonneuve en tête (37 871).
3. Statistiques du catalogue
« Combien d'organisations publient des données sur Données Québec ? »
139 organisations, 1 584 jeux de données. La Ville de Montréal domine avec 383 jeux (24 % du catalogue), suivie de Laval (133) et du MELCCFP (119).
4. Tendance temporelle
« Quelle est la tendance mensuelle des actes criminels à Montréal ? »
L'agent identifie un pic au printemps/été (~2 700/mois) et une baisse en hiver (~1 700-2 000/mois) via une requête SQL avec GROUP BY sur les dates.
5. Données géospatiales — patrimoine culturel
« Quelles couches géospatiales sont disponibles pour le patrimoine culturel du Québec ? »
L'agent interroge le WFS IGO et trouve 7 couches du Ministère de la Culture : sites patrimoniaux nationaux, déclarés, cités, terrains protégés — avec schéma complet (nom, adresse, période de construction, statut juridique).
Voir tous les exemples avec réponses complètes
Connecter votre agent IA au serveur MCP
Utilisez le endpoint hébergé (bientôt disponible) ou lancez localement. La configuration dépend de votre client :
Claude Code | Claude Desktop | ChatGPT | Cursor | VS Code | Gemini CLI | Le Chat (Mistral) | Windsurf
Claude Code
claude mcp add --transport http donneesqc http://localhost:8000/mcp
Note : Si Claude Code bloque les appels réseau vers les API externes, ajoutez les domaines à la whitelist dans votre
.claude/settings.json:{ "permissions": { "allow": [ "WebFetch(domain:registreentreprises.gouv.qc.ca)", "WebFetch(domain:www.donneesquebec.ca)" ] } }
Claude Desktop
Ajoutez dans votre fichier de configuration Claude Desktop :
{
"mcpServers": {
"donneesqc": {
"command": "npx",
"args": ["mcp-remote", "http://localhost:8000/mcp"]
}
}
}
ChatGPT
Forfaits payants seulement. Allez dans Settings > Apps and connectors > activez le Developer mode > Add new connector avec l'URL http://localhost:8000/mcp.
Cursor
{
"mcpServers": {
"donneesqc": {
"url": "http://localhost:8000/mcp",
"transport": "http"
}
}
}
VS Code
Ajoutez dans mcp.json (lancez MCP: Open User Configuration depuis la palette de commandes) :
{
"servers": {
"donneesqc": {
"url": "http://localhost:8000/mcp",
"type": "http"
}
}
}
Gemini CLI
Ajoutez dans ~/.gemini/settings.json :
{
"mcpServers": {
"donneesqc": {
"httpUrl": "http://localhost:8000/mcp"
}
}
}
Le Chat (Mistral)
Intelligence > Connectors > Add connector > Custom MCP Connector > URL : http://localhost:8000/mcp.
Windsurf
Ajoutez dans ~/.codeium/windsurf/mcp_config.json :
{
"mcpServers": {
"donneesqc": {
"command": "npx",
"args": ["-y", "mcp-remote", "http://localhost:8000/mcp"]
}
}
}
Lancer localement
Avec Docker (recommandé)
git clone https://github.com/Stefen-Taime/donneesqc-mcp.git
cd donneesqc-mcp
docker compose up -d
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
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). |
DQ_API_URL |
https://www.donneesquebec.ca/recherche/api/3/action |
API CKAN de Données Québec. |
MTL_API_URL |
https://donnees.montreal.ca/api/3/action |
API CKAN de Montréal. |
GEO_WFS_URL |
https://geoegl.msp.gouv.qc.ca/ws/igo_gouvouvert.fcgi |
Endpoint WFS IGO. |
GEO_WMS_URL |
https://geoegl.msp.gouv.qc.ca/ws/igo_gouvouvert.fcgi |
Endpoint WMS IGO. |
GEOCODER_URL |
https://geoegl.msp.gouv.qc.ca/apis/icherche |
API de géocodage Adresses Québec (ICherche). |
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. |
Transport
Construit avec le SDK Python MCP officiel. Streamable HTTP uniquement — STDIO et SSE ne sont pas supportés.
Endpoints :
POST /mcp— Messages JSON-RPCGET /health— Sonde de santé
Outils disponibles (28)
Données Québec — jeux de données (9 outils)
| Outil | Description |
|---|---|
search_datasets |
Recherche par mots-clés, organisation, tags |
get_dataset_info |
Métadonnées complètes d'un jeu de données |
list_dataset_resources |
Liste les fichiers/ressources d'un jeu |
get_resource_info |
Détail d'une ressource spécifique |
query_resource_data |
Interroge le DataStore avec filtres et pagination |
query_resource_sql |
SQL direct — agrégations, jointures, sous-requêtes |
list_organizations |
Ministères, villes, organismes |
get_organization_info |
Détail d'une organisation |
get_catalog_stats |
Statistiques globales du catalogue |
Ville de Montréal (3 outils)
| Outil | Description |
|---|---|
search_montreal_datasets |
Recherche sur donnees.montreal.ca |
query_montreal_data |
Interroge le DataStore montréalais |
query_montreal_sql |
SQL sur les données montréalaises |
Data access (2 outils)
| Outil | Description |
|---|---|
download_resource |
Télécharge et lit des ressources non-DataStore (CSV, JSON, GeoJSON, XLSX) |
preview_resource |
Aperçu intelligent — schéma (colonnes + types) et 5 premières lignes |
Intelligence & UX (4 outils)
| Outil | Description |
|---|---|
find_and_query |
Composite — enchaîne search → resources → query en un seul appel |
suggest_sql |
Génère des squelettes SQL à partir du schéma d'une ressource |
compare_datasets |
Diff entre 2 jeux (colonnes, volumes, tags, organisations) |
auto_detect_resource |
Trouve automatiquement le meilleur resource_id à partir d'un nom |
Géospatial (8 outils)
| Outil | Description |
|---|---|
list_geospatial_layers |
Couches WFS/WMS depuis IGO |
get_geospatial_features |
Entités GeoJSON depuis le WFS |
describe_geospatial_layer |
Schéma d'une couche (champs, types) |
get_map_url |
URL d'image cartographique WMS |
geocode |
Adresse québécoise → coordonnées lat/lng (via Adresses Québec) |
reverse_geocode |
Coordonnées lat/lng → adresse québécoise |
convert_coordinates |
Conversion EPSG:32198 (Lambert MTQ) ↔ EPSG:4326 (WGS84) |
spatial_intersection |
Quelle région / MRC / municipalité / arrondissement contient un point |
Système (2 outils)
| Outil | Description |
|---|---|
get_version |
Version du serveur, Python, capacités disponibles |
list_tools_with_examples |
Meta-introspection — liste tous les outils avec exemples d'utilisation |
Tests
# Lancer tous les tests
uv run pytest
# Mode verbeux
uv run pytest -v
# Test interactif avec MCP Inspector
npx @modelcontextprotocol/inspector --http-url "http://127.0.0.1:8000/mcp"
Contribuer
- 1 fonctionnalité = 1 PR
- Tout le code doit être révisé et testé par un humain avant soumission.
# Lint et formatage
uv run ruff check --fix && uv run ruff format
# Vérification de types
uv run ty check
# Installer les hooks pre-commit
uv run pre-commit install
Releases
./tag_version.sh 1.0.0 # Créer une release
./tag_version.sh 1.0.0 --dry-run # Aperçu
Sources de données
- Données Québec — Portail provincial (gouvernement + municipalités), basé sur CKAN
- donnees.montreal.ca — Portail municipal de Montréal, le plus riche au Québec
- IGO — Infrastructure Géomatique Ouverte, services OGC (WMS/WFS)
- Adresses Québec (ICherche) — Géocodage et géocodage inverse
Licence
MIT — voir LICENSE.
English
MCP server that lets AI agents (Claude, ChatGPT, Gemini, etc.) search, explore, and analyze open datasets from Données Québec, Ville de Montréal, and Quebec's geospatial services (IGO) through conversation.
Instead of manually browsing portals, simply ask questions like "What datasets exist about crime in Montreal?" or "How many criminal acts per borough in 2025?" and get instant answers — including SQL-powered analytics.
All setup instructions, tool descriptions, and environment variables are documented in the French section above. The configuration snippets (JSON, bash) are language-independent and apply as-is.
Quick start
git clone https://github.com/Stefen-Taime/donneesqc-mcp.git
cd donneesqc-mcp
docker compose up -d
Then connect your AI client to http://localhost:8000/mcp — see the connection section above for client-specific configs.
Available tools (28)
- Données Québec (9): dataset search, metadata, DataStore queries, direct SQL, organizations, catalog stats
- Ville de Montréal (3): dataset search, DataStore queries, SQL
- Data access (2): non-DataStore file download (CSV, JSON, GeoJSON, XLSX), smart preview (schema + 5 rows)
- Intelligence & UX (4): composite search+query, SQL suggestion, dataset comparison, auto resource detection
- Geospatial (8): WFS/WMS layers, GeoJSON features, geocoding, reverse geocoding, EPSG:32198↔4326 conversion, spatial intersection
- System (2): version info, tool listing with examples (meta-introspection)
Un projet mcsÉdition — Montréal, Québec
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。