MCPcopy Index your code
hub / github.com/ReyemTech/mcp-canada

github.com/ReyemTech/mcp-canada @v1.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release v1.0 ↗ · + Follow
1,423 symbols 3,979 edges 168 files 1,171 documented · 82% updated 21d agov0.10.0 · 2026-06-17★ 521 open issues
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

🍁 mcp-canada

<strong>MCP server giving AI agents structured access to Canadian federal government data</strong>






<a href="https://pypi.org/project/mcp-canada/"><img src="https://img.shields.io/pypi/v/mcp-canada?color=blue&label=PyPI" alt="PyPI"></a>
<a href="https://github.com/ReyemTech/mcp-canada/actions/workflows/ci.yml"><img src="https://github.com/ReyemTech/mcp-canada/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
<a href="https://github.com/ReyemTech/mcp-canada/actions/workflows/integration.yml"><img src="https://github.com/ReyemTech/mcp-canada/actions/workflows/integration.yml/badge.svg" alt="Integration Tests"></a>
<a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/python-3.12+-blue" alt="Python 3.12+"></a>
<a href="https://github.com/reyemtech/mcp-canada/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="License: MIT"></a>
<a href="https://modelcontextprotocol.io"><img src="https://img.shields.io/badge/MCP-compatible-purple" alt="MCP Compatible"></a>
<a href="https://github.com/jlowin/fastmcp"><img src="https://img.shields.io/badge/built%20with-FastMCP-orange" alt="Built with FastMCP"></a>

83 tools across 7 no-auth federal APIs — exchange rates, parliamentary data, product recalls, drug information, 80K+ open datasets, food nutrition data, and real-time weather. All bilingual (English/French).

Complementary to mcp-statcan — which covers Statistics Canada. Together they form a complete Canadian government data toolkit.

Quick Start

uvx mcp-canada

Claude Desktop

Add to your MCP config (~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "mcp-canada": {
      "command": "uvx",
      "args": ["mcp-canada"]
    }
  }
}

Claude Code

claude mcp add mcp-canada -- uvx mcp-canada

From Source

git clone https://github.com/reyemtech/mcp-canada.git
cd mcp-canada
uv run mcp-canada

Options

Flag Description Example
--transport Transport protocol --transport sse
--port Port for SSE/HTTP --port 8000
--modules Load only specific modules --modules bank_of_canada,recalls
--verbose INFO-level logging --verbose
--debug DEBUG-level logging --debug

Environment variable: MCP_CANADA_MODULES=bank_of_canada,recalls

How Discovery Works

With 81 tools, listing all of them would consume half an agent's context window. Instead, BM25 search lets agents find exactly what they need:

Agent: "What tools do you have for exchange rates?"

→ discover_tools("exchange rate CAD")
→ Returns: boc_get_exchange_rates, boc_get_observations

→ call_tool("boc_get_exchange_rates", {"currency": "USD", "recent": 3})
→ Returns: {"_meta": {...}, "data": [{"date": "2026-04-02", "value": 1.3918, ...}]}

Agents see 5 always-visible tools:

Tool Purpose
discover_tools BM25 natural language search across all tools
call_tool Execute any discovered tool by name
list_modules List available API modules with tool counts
plan_query Plan a multi-step query across Canadian government data APIs
execute_batch Run multiple tool calls in parallel with per-step error isolation

Tool Catalog

All tools accept lang: "en" | "fr" for bilingual support. Responses include a _meta envelope with source attribution and cache status.

🔍 Meta / Discovery — 5 tools (always visible)

Orchestration tools always available to agents — no discovery required.

Tool Description Key Parameters
execute_batch Execute multiple tool calls in parallel and return aggregated results. calls
list_modules List all registered API modules with tool counts and descriptions.
plan_query Plan a multi-step query across Canadian government data APIs. query, top_k

🏦 Bank of Canada — 8 tools

Exchange rates, interest rates, commodity prices, and inflation data from the Valet API.

Tool Description Key Parameters
boc_get_exchange_rates Get daily CAD exchange rates for one or all foreign currencies. currency, start_date, end_date, recent
boc_get_interest_rates Get Bank of Canada interest rates including policy rate, CORRA, and bond yields. rate_type, start_date, end_date, recent
boc_get_commodity_prices Get Bank of Canada Commodity Price Index (BCPI) data by commodity category. commodity_type, start_date, end_date, recent
boc_get_inflation_data Get Consumer Price Index (CPI) inflation data from the Bank of Canada. indicator, start_date, end_date, recent
boc_search_series Search available Bank of Canada Valet API data series by keyword. keyword
boc_get_series_metadata Get metadata (label, description, link) for a specific Valet API series. series_name
boc_get_observations Get raw time-series observations for any Bank of Canada Valet API series. series_names, start_date, end_date, recent
boc_list_groups List all available data group collections in the Bank of Canada Valet API.

Example: Get USD/CAD exchange rate

call_tool("boc_get_exchange_rates", {"currency": "USD", "recent": 3})
{
  "_meta": {
    "source": {"api": "bank-of-canada-valet", "url": "https://www.bankofcanada.ca/valet/"},
    "cached": false,
    "lang": "en",
    "timestamp": "2026-04-04T22:16:54.133649+00:00"
  },
  "data": [
    {"date": "2026-04-02", "series_name": "FXUSDCAD", "value": 1.3918, "label": "USD/CAD", "description": "US dollar to Canadian dollar daily exchange rate"},
    {"date": "2026-04-01", "series_name": "FXUSDCAD", "value": 1.3888, "label": "USD/CAD", "description": "..."},
    {"date": "2026-03-31", "series_name": "FXUSDCAD", "value": 1.3939, "label": "USD/CAD", "description": "..."}
  ]
}

🏛️ Open Parliament — 10 tools

Bills, MPs, votes, ballots, and Hansard debates from the Open Parliament API.

Tool Description Key Parameters
parl_search_bills List Canadian federal bills filtered by session or status. keyword, session, status, page
parl_get_bill_details Get full details for a specific Canadian federal bill including sponsor and status history. bill_id
parl_get_politicians Search or list Canadian Members of Parliament by name, party, or province. name, party, province, page
parl_search_by_riding Find the MP or politician for a specific electoral riding in Canada. riding
parl_get_party_members Get the current Members of Parliament for a specific political party. party
parl_get_votes Get House of Commons vote records, optionally filtered by session, bill, or result. session, bill, result, page
parl_get_voting_record Get votes an MP participated in, with house-wide totals per division. politician, session, page
parl_get_debates Get Hansard debate transcripts from the House of Commons. date, politician, page
parl_search_hansard Full-text search of Canadian Hansard debate transcripts. query, page
parl_get_ballots Get individual MP yea/nay ballots for a specific House of Commons vote. vote_id, politician, page

Example: How did an MP vote on a specific bill?

call_tool("parl_get_ballots", {"vote_id": "44-1/333", "politician": "anna-roberts"})
{
  "_meta": {"source": {"api": "Open Parliament", "url": "https://api.openparliament.ca/"}, "cached": false, "lang": "en", "timestamp": "..."},
  "data": [
    {"vote_url": "/votes/44-1/333/", "politician_url": "/politicians/anna-roberts/", "ballot": "No"}
  ]
}

Note: parl_get_voting_record returns house-wide totals, not individual MP votes. Use parl_get_ballots for how a specific MP voted on a specific division.


⚠️ Recalls & Safety Alerts — 6 tools

Food, vehicle, and health product recalls from Healthy Canadians.

Tool Description Key Parameters
recalls_get_recent Get the most recent product recalls across all Health Canada categories. limit, offset
recalls_search Search Health Canada recalls by keyword with optional category filter. keyword, category, limit, offset
recalls_get_details Get full details of a specific Health Canada recall by recall ID. recall_id
recalls_get_food Get food product recalls from Health Canada. keyword, limit, offset
recalls_get_vehicles Get vehicle recalls from Transport Canada and Health Canada. keyword, limit, offset
recalls_get_health_products Get health product recalls from Health Canada. keyword, limit, offset

💊 Drug Product Database — 8 tools

Drug information from Health Canada's DPD.

Tool Description Key Parameters
drug_search Search Health Canada's Drug Product Database for drug products. brand_name, din, company
drug_get_details Get comprehensive details for a drug product in one call. drug_code
drug_get_ingredients Get active ingredients for a Health Canada drug product. drug_code
drug_get_routes Get routes of administration for a Health Canada drug product. drug_code
drug_search_companies Search for pharmaceutical companies in Health Canada's Drug Product Database. company_name
drug_get_schedule Get schedule classification for a Health Canada drug product. drug_code
drug_get_therapeutic_class Get ATC therapeutic classification for a Health Canada drug product. drug_code
drug_get_status Get market status for a Health Canada drug product. drug_code

Note: drug_code is the internal database ID (from drug_search results), NOT the DIN.


📊 CKAN Open Data — 7 tools

80,000+ federal datasets from open.canada.ca.

Tool Description Key Parameters
ckan_search_datasets Search Canada's Open Data portal (open.canada.ca) for datasets by keyword. query, filters, rows, start, sort
ckan_get_dataset_details Get full details for a specific Canadian Open Data dataset including all resources. dataset_id
ckan_list_organizations List all Canadian federal government organizations on the Open Data portal. sort
ckan_search_by_tag Search Canadian Open Data portal datasets by tag or keyword label. tag, rows
ckan_get_resource Get details for a specific data resource (file) from Canada's Open Data portal. resource_id
ckan_list_groups List thematic dataset groups available on Canada's Open Data portal.
ckan_get_dataset_stats Get aggregate statistics for Canada's Open Data portal (open.canada.ca).

🥗 Canadian Nutrient File — 8 tools

Food nutrition data from Health Canada's CNF.

Tool Description Key Parameters
nutrient_search_foods Search Canadian Nutrient File foods by name using client-side filtering. query
nutrient_get_food_details Get detailed information about a specific food item from the Canadian Nutrient File. food_id
nutrient_get_nutrient_amounts Get all nutrient amounts per 100g for a specific food from the Canadian Nutrient File. food_id
nutrient_get_serving_sizes Get serving size measures and conversion factors for a food item. food_id
nutrient_search_by_food_group List all foods within a specific food group from the Canadian Nutrient File. food_group_id
nutrient_list_nutrients List all nutrients available in the Canadian Nutrient File database.
nutrient_list_food_groups List all food group categories in the Canadian Nutrient File database.
nutrient_compare_foods Compare nutritional content of 2-5 foods from the Canadian Nutrient File. food_ids, format, nutrients

🌤️ MSC GeoMet Weather — 34 tools

Real-time weather, climate, air quality, hydrology, and more from MSC GeoMet OGC API.

Tool Description Key Parameters
wx_get_aqhi Get current Air Quality Health Index (AQHI) reading for a location. lat, lon, location_id
wx_get_aqhi_forecast Get AQHI air quality forecast periods for a location. lat, lon, location_id
wx_get_aqhi_history Get historical AQHI observations for a location with optional date range. location_id, start_date, end_date, limit
wx_get_climate_daily Get historical daily climate ob

Core symbols most depended-on inside this repo

Shape

Method 734
Function 447
Class 242

Languages

Python100%

Modules by API surface

tests/integration/test_tool_scenarios.py77 symbols
src/mcp_canada/modules/open_parliament/__tests__/test_tools.py55 symbols
src/mcp_canada/modules/recalls/__tests__/test_tools.py44 symbols
src/mcp_canada/modules/bank_of_canada/__tests__/test_tools.py43 symbols
src/mcp_canada/modules/drug_database/__tests__/test_tools.py42 symbols
src/mcp_canada/modules/ckan/__tests__/test_tools.py42 symbols
src/mcp_canada/modules/nutrient_file/__tests__/test_tools.py38 symbols
src/mcp_canada/modules/drug_database/__tests__/test_client.py33 symbols
src/mcp_canada/modules/ckan/__tests__/test_client.py31 symbols
src/mcp_canada/modules/open_parliament/__tests__/test_client.py30 symbols
src/mcp_canada/modules/bank_of_canada/__tests__/test_client.py30 symbols
src/mcp_canada/modules/recalls/__tests__/test_client.py29 symbols

For agents

$ claude mcp add mcp-canada \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page