Government of Canada Open Data MCP Servers
Provides access to 250,000+ Canadian government datasets and specialized querying of transportation infrastructure including bridges, airports, cycling networks, transit systems, railways, and tunnels across multiple provinces.
README
Government of Canada Open Data MCP Servers
Python-based Model Context Protocol (MCP) servers for accessing Canada's Open Government data. This project includes two complementary MCP servers:
- GOV CA DATASET MCP - Universal dataset discovery, search, and metadata retrieval across all Canadian government open data
- GOV CA TRANSPORTATION MCP - Specialized infrastructure querying for bridges, tunnels, airports, ports, and railways with Statistics Canada cost data
Features
Dataset Discovery (gov_mcp)
- Search across 250,000+ datasets from Open Government Canada
- Browse by topic, organization, or jurisdiction (federal/provincial/municipal)
- Get detailed dataset schemas and download URLs
- Track recent dataset updates
Transportation Infrastructure (gov_ca_transportation)
- Query bridge conditions using Statistics Canada national data for all provinces
- Get infrastructure replacement costs from Statistics Canada surveys
- Search airports and ports across Canada
- Query railway infrastructure
- Search tunnels by province and type
- Unified data approach: Uses Statistics Canada Core Public Infrastructure Survey for consistent national coverage
Quick Start
Installation
# Clone and install
cd gov_mcp
pip install -e .
# Or install dependencies directly
pip install -r requirements.txt
Running the Servers
# Dataset Discovery MCP
python -m gov_mcp.server
# Transportation Infrastructure MCP
python -m gov_ca_transportation.server
Architecture
gov_mcp/ # Dataset Discovery MCP
├── server.py # MCP server with 7 tools
├── api_client.py # Open Government Canada API wrapper
├── http_client.py # HTTP client with retry logic
└── types.py # Type definitions
gov_ca_transportation/ # Transportation Infrastructure MCP
├── server.py # MCP server with 7 tools
├── api_client.py # Statistics Canada + provincial data fetching
├── http_client.py # HTTP client
└── types.py # Type definitions
Data Sources
The Transportation MCP uses Statistics Canada as the primary data source for national coverage:
| Data Type | Primary Source | Coverage |
|---|---|---|
| Bridge Conditions | Statistics Canada Table 34-10-0288-01 | All provinces/territories |
| Infrastructure Costs | Statistics Canada Table 34-10-0284-01 | All provinces/territories |
| Detailed Bridge Records | Provincial Open Data | Ontario, Quebec, Nova Scotia |
| Airports | Quebec Open Data, BC OpenMaps | Quebec, British Columbia |
| Railways | National Railway Network | National |
Available Tools
Dataset Discovery MCP (gov_mcp) - 7 Tools
| Tool | Description |
|---|---|
search_datasets |
Search across all 250,000+ Canadian government datasets |
get_dataset_schema |
Get complete schema with field definitions and download URLs |
list_organizations |
Browse by department/organization |
browse_by_topic |
Explore datasets by subject area |
check_available_mcps |
Check which specialized MCPs are available |
get_activity_stream |
See recently updated datasets |
query_datastore |
Query data directly (fallback mode) |
Transportation Infrastructure MCP (gov_ca_transportation) - 7 Tools
| Tool | Description |
|---|---|
query_bridges |
Search bridge infrastructure by province with StatCan condition data |
analyze_bridge_conditions |
Aggregate condition analysis using Statistics Canada data |
get_infrastructure_costs |
Get replacement costs by condition from Statistics Canada |
query_ports_airports |
Search airports, ports, marinas, heliports |
query_railways |
Search railway lines and stations |
query_tunnels |
Search tunnel infrastructure |
compare_across_regions |
Compare infrastructure across provinces |
Example Usage
Search for Datasets
# Search for water datasets in Saskatchewan
result = search_datasets(query="water Saskatchewan", limit=20)
# Returns 103 datasets including water quality monitoring data
Analyze Bridge Conditions
# Get bridge conditions for any province using Statistics Canada data
result = analyze_bridge_conditions(region="Saskatchewan")
# Returns: Very Poor: 2.4%, Poor: 16.4%, Fair: 23.7%, Good: 32.4%, Very Good: 10.1%
Get Infrastructure Costs
# Get bridge replacement costs for Ontario
result = get_infrastructure_costs(infrastructure_type="bridge", location="Ontario")
# Returns: Total $81.4B, Priority investment needed: $2.65B (Poor + Very Poor)
Query Bridges
# Get bridge data with StatCan condition distribution
result = query_bridges(province="Ontario", limit=100)
# Returns condition summary + detailed records from provincial sources
Project Structure
gov_mcp/
├── gov_mcp/ # Dataset Discovery MCP
│ ├── __init__.py
│ ├── server.py # MCP server
│ ├── api_client.py # API wrapper
│ ├── http_client.py # HTTP client
│ └── types.py # Type definitions
├── gov_ca_transportation/ # Transportation MCP
│ ├── __init__.py
│ ├── server.py # MCP server
│ ├── api_client.py # StatCan + provincial data fetcher
│ ├── http_client.py # HTTP client
│ └── types.py # Type definitions
├── tests/ # Test files
├── documentation/ # Additional docs
├── pyproject.toml # Project config
├── requirements.txt # Dependencies
└── README.md # This file
Configuration
VS Code MCP Settings
Add to your VS Code settings.json or MCP config:
{
"mcpServers": {
"gov-ca-dataset": {
"command": "python",
"args": ["-m", "gov_mcp.server"],
"cwd": "/path/to/gov_mcp"
},
"gov-ca-transportation": {
"command": "python",
"args": ["-m", "gov_ca_transportation.server"],
"cwd": "/path/to/gov_mcp"
}
}
}
Development
Running Tests
pytest tests/
Running Validation
python validate.py
Key Capabilities
- 250,000+ datasets searchable from Open Government Canada
- Statistics Canada integration for authoritative national infrastructure data
- All provinces covered for bridge conditions and infrastructure costs
- Real infrastructure data from provincial/municipal open data portals
- Multiple data formats: GeoJSON, CSV, ZIP (StatCan)
- Condition analysis: Bridge condition percentages, replacement costs by condition
- Geographic filtering: By province or national aggregate
API Sources
| Source | Data Types |
|---|---|
| Statistics Canada | Infrastructure costs, bridge conditions (national) |
| open.canada.ca | Federal datasets |
| donnees.montreal.ca | Montreal bridge records |
| data.ontario.ca | Ontario bridge records |
| openmaps.gov.bc.ca | BC airports, railways |
| data.novascotia.ca | Nova Scotia structures |
| donneesquebec.ca | Quebec airports |
License
MIT License - See LICENSE file for details
Contributing
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Add tests for new functionality
- Submit a pull request
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
E2B
Using MCP to run code via e2b.