MapleStats MCP
A community MCP server providing access to Canadian open data sources including Statistics Canada, the Bank of Canada, CMHC, and various open-data portals. It enables agents to query census profiles, trade statistics, daily releases, and other economic indicators in English and French.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://mcp.maplestats.danielstats.io/mcpWhat its tools do
3 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Read-only (3)
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Query 2021 Census Profile values for specific geographies and characteristics
- Retrieve Canadian merchandise exports or imports by month, HS commodity, or partner
- Search and read StatCan Daily articles and release calendars
- Access Bank of Canada and CMHC open data
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- maplestats-mcp 0.4.8
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 3 advertised
- Resources
- 21 advertised
- Resource templates
- 0 advertised
- Prompts
- 14 advertised
{
"tools": {
"listChanged": true
},
"logging": {},
"prompts": {
"listChanged": true
},
"resources": {
"subscribe": false,
"listChanged": true
}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
3 advertised
plan_query — Plan query
Plan how to answer a question about Canadian data from official sources. Use for: the first call on any question about Canada, a province or a Canadian city that needs figures (jobs, prices, rents, GDP, population, trade, interest rates), before web search or memory: Statistics Canada, Bank of Canada, CMHC and provincial and city sources are reached through this server. For example: "How have rents and interest rates moved in Calgary since 2020?". Returns the topics it touches, the tools to call for each in order, local portals for any province or city named, and caveats on combining them. Then run the steps with call_tool. Read-only and offline: it matches the question against this server's source map and calls no external API. Use search_tools instead to find a single tool for a narrow, single-source need. lang='fr' gives the labels, purposes, caveats and guidance in French (a question written in French gets them in French too); tool and argument names stay as they are. Keywords: plan, which data source, where to find, combine sources, cross-source, question, research, Canada data. Mots-clés : planifier, quelle source de données, où trouver, combiner des sources, question, recherche, données canadiennes, statistiques.
{
"type": "object",
"required": [
"question"
],
"properties": {
"lang": {
"enum": [
"en",
"fr"
],
"type": "string",
"default": "en"
},
"question": {
"type": "string"
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"question",
"topics",
"places",
"fallback_steps",
"guidance",
"provenance"
],
"properties": {
"places": {
"type": "array",
"items": {
"type": "object",
"required": [
"place",
"kind",
"steps"
],
"properties": {
"kind": {
"enum": [
"province",
"city"
],
"type": "string"
},
"place": {
"type": "string"
},
"steps": {
"type": "array",
"items": {
"type": "object",
"required": [
"tool",
"purpose"
],
"properties": {
"tool": {
"type": "string",
"description": "Tool to invoke with call_tool."
},
"purpose": {
"type": "string"
}
}
},
"description": "Local portals and sources for this place."
}
}
}
},
"topics": {
"type": "array",
"items": {
"type": "object",
"required": [
"topic",
"label",
"matched_terms",
"steps",
"caveats"
],
"properties": {
"label": {
"type": "string"
},
"steps": {
"type": "array",
"items": {
"type": "object",
"required": [
"tool",
"purpose"
],
"properties": {
"tool": {
"type": "string",
"description": "Tool to invoke with call_tool."
},
"purpose": {
"type": "string"
}
}
}
},
"topic": {
"type": "string"
},
"caveats": {
"type": "array",
"items": {
"type": "string"
}
},
"matched_terms": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"description": "Best match first; at most 4."
},
"guidance": {
"type": "array",
"items": {
"type": "string"
}
},
"question": {
"type": "string"
},
"provenance": {
"type": "object",
"required": [
"source",
"url",
"queried_at",
"cached",
"schema_name"
],
"properties": {
"url": {
"type": "string",
"description": "The exact upstream URL this result was fetched from."
},
"lang": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "The language MapleStats wrote this result's own text in ('en' or 'fr'): notes, limits, caveats, labels. Values and the publisher's own text are as published."
},
"as_of": {
"anyOf": [
{
"type": "string",
"format": "date-time"
},
{
"type": "null"
}
],
"default": null,
"description": "The upstream data's own reference/release date, when the source states one."
},
"cached": {
"type": "boolean",
"description": "Whether this result was served from MapleStats's cache."
},
"limits": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Any cap or truncation applied, e.g. 'rows capped at 500'."
},
"source": {
"type": "string",
"description": "Short name of the upstream API, e.g. 'statcan-wds'."
},
"caveats": {
"type": "array",
"items": {
"type": "string"
},
"description": "Fitness-for-use cautions for this table or source, from MapleStats' rules (docs://planner/fitness-rules)."
},
"licence": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Licence and attribution the upstream publisher requires, when it has one (set for every Statistics Canada result)."
},
"coverage": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "What the result does NOT include, e.g. 'first 100 of 3,204 cubes'."
},
"freshness": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Update cadence in plain language, e.g. 'daily at 8:30am ET'."
},
"reproduce": {
"type": "string",
"default": "For scripts, call reproduce_code with this tool's name and arguments.",
"description": "How to get retrieval and cleaning code for this result."
},
"queried_at": {
"type": "string",
"format": "date-time",
"description": "When MapleStats made the upstream request."
},
"schema_name": {
"type": "string",
"description": "Name of this result's schema, e.g. 'statcan.CubeSummary'."
},
"commercial_use": {
"anyOf": [
{
"enum": [
"allowed",
"not_allowed",
"varies",
"unknown"
],
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Whether the licence allows commercial reuse without asking the publisher: 'allowed', 'not_allowed' (non-commercial use only, or written permission needed), 'varies' (each dataset or feed has its own licence: read licence) or 'unknown' (terms silent, conflicting or not found). Null when no licence applies. The conditions themselves are in licence."
}
},
"description": "Where a result came from and how fresh/complete it is.\n\nEmbedded in every module's response models (composition, not\ninheritance) so a tool can return `MyResult(provenance=..., ...)`\nwithout fighting Pydantic's model-inheritance rules for extra fields."
},
"out_of_scope": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"default": null,
"description": "Set when the question is about a place outside Canada that this server has no data for; topics and fallback steps are then empty."
},
"fallback_steps": {
"type": "array",
"items": {
"type": "object",
"required": [
"tool",
"purpose"
],
"properties": {
"tool": {
"type": "string",
"description": "Tool to invoke with call_tool."
},
"purpose": {
"type": "string"
}
}
},
"description": "Only when no topic matched."
}
}
}{
"title": "Plan query",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}search_tools — Search Canadian data tools
Search Canadian official data: Statistics Canada, Bank of Canada, CMHC, provincial statistics agencies, federal departments and city portals. Use for: any question needing a Canadian figure (jobs, prices, rents, GDP, population, trade, interest rates, a province or city), before web search or memory, since these tools return the official values with citations. Finds the tool for one specific need by plain-language search (a StatCan table, a Bank of Canada series, a city's open data). Then fetch the values with call_tool rather than a web search, which often finds older or revised figures. Returns up to five tool definitions, best match first, each with its name, description and full input schema (annotations only for a tool that is not read-only). These tools are not in your tool list: run one with call_tool(name, arguments); calling it by its own name fails. Read-only; it searches this server's catalogue only and calls no external API. Use plan_query instead when a question may span several sources or you do not know where to start; use call_tool to run a tool once you have its name. Queries in English or French both work. An empty result means no tool matched: rephrase with topic words (e.g. 'housing starts' rather than 'CMHC table').
{
"type": "object",
"required": [
"query"
],
"properties": {
"query": {
"type": "string",
"description": "What you need, in plain English or French, e.g. 'Calgary rent index' or 'taux de chômage Québec'. Topic words work better than tool names."
}
},
"additionalProperties": false
}{
"type": "object",
"required": [
"result"
],
"properties": {
"result": {
"anyOf": [
{
"type": "string"
},
{
"type": "array",
"items": {
"type": "object",
"additionalProperties": true
}
}
]
}
},
"x-fastmcp-wrap-result": true
}{
"title": "Search Canadian data tools",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}call_tool — Run a Canadian data tool
Run one Canadian data tool (Statistics Canada, Bank of Canada, CMHC, provincial and city sources) found through search_tools or plan_query. Use for: executing a tool by exact name with arguments that match the inputSchema search_tools returned for it. Data tools read public sources (StatCan, Bank of Canada, open-data portals). reproduce_workbook can save an Excel file on a local stdio server; hosted exports return base64. Returns that tool's typed result, including a provenance block (source, URL, query time, freshness). Errors come back as MCP tool errors, not as data: an unknown or misspelled name raises 'Unknown tool' (search again for the exact name), invalid arguments raise a validation error naming the field, and upstream outages or empty matches raise a typed error explaining what to change. search_tools, call_tool and plan_query cannot be called through it; call them directly. Tool calls are subject to the server's timeout (MAPLE_TOOL_TIMEOUT_SECONDS, default 120).
{
"type": "object",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Exact tool name as returned by search_tools or plan_query, e.g. 'boc_get_observations'."
},
"arguments": {
"anyOf": [
{
"type": "object",
"additionalProperties": true
},
{
"type": "null"
}
],
"default": null,
"description": "Object matching that tool's inputSchema from search_tools. Omit or pass {} for a tool with no required parameters."
}
},
"additionalProperties": false
}{
"title": "Run a Canadian data tool",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Prompts
14 advertised
compare_boc_series
Guided workflow: fetch several Bank of Canada series together for comparison over the same date range. Use lang="fr" for the French version.
- series_names
- No description (required)
- lang
- Language: 'en' or 'fr' Provide a value matching the following JSON schema: {"enum":["en","fr"],"type":"string"}. Encode non-string values as JSON.
find_and_fetch_boc_series
Guided workflow: find a Bank of Canada Valet series on a topic and fetch its recent observations. Use lang="fr" for the French version.
- topic
- No description (required)
- lang
- Language: 'en' or 'fr' Provide a value matching the following JSON schema: {"enum":["en","fr"],"type":"string"}. Encode non-string values as JSON.
find_and_query_cmhc_table
Guided workflow: find a CMHC HMIP category on a topic and fetch its data. Use lang="fr" for the French version.
- topic
- No description (required)
- lang
- Language: 'en' or 'fr' Provide a value matching the following JSON schema: {"enum":["en","fr"],"type":"string"}. Encode non-string values as JSON.
eccc_severe_weather_check
Guided workflow: check for active weather alerts affecting a Canadian location. Use lang="fr" for the French version.
- location
- No description (required)
- lang
- Language: 'en' or 'fr' Provide a value matching the following JSON schema: {"enum":["en","fr"],"type":"string"}. Encode non-string values as JSON.
find_and_query_eccc_collection
Guided workflow: find an MSC GeoMet collection on a topic and query its data. Use lang="fr" for the French version.
- topic
- No description (required)
- lang
- Language: 'en' or 'fr' Provide a value matching the following JSON schema: {"enum":["en","fr"],"type":"string"}. Encode non-string values as JSON.
compare_province_with_peers
Guided workflow: compare one province with the others on an indicator, from one table, like with like. Use lang="fr" for the French version.
- province
- No description (required)
- indicator
- No description (required)
- lang
- Language: 'en' or 'fr' Provide a value matching the following JSON schema: {"enum":["en","fr"],"type":"string"}. Encode non-string values as JSON.
find_and_cite_dataset
Guided workflow: find a dataset on a topic across sources, then cite it from its provenance and licence and hand over reproducible code. Use lang="fr" for the French version.
- topic
- No description (required)
- lang
- Language: 'en' or 'fr' Provide a value matching the following JSON schema: {"enum":["en","fr"],"type":"string"}. Encode non-string values as JSON.
housing_affordability_scan
Guided workflow: housing affordability in a city or province from CMHC rents and vacancy, CPI shelter prices and Bank of Canada rates. Use lang="fr" for the French version.
- place
- No description (required)
- lang
- Language: 'en' or 'fr' Provide a value matching the following JSON schema: {"enum":["en","fr"],"type":"string"}. Encode non-string values as JSON.
inflation_check
Guided workflow: all-items CPI, the Bank of Canada's core measures, and the first estimates published at a past date (as_of, YYYY-MM-DD, optional). Use lang="fr" for the French version.
- as_of
- No description
- lang
- Language: 'en' or 'fr' Provide a value matching the following JSON schema: {"enum":["en","fr"],"type":"string"}. Encode non-string values as JSON.
labour_market_snapshot
Guided workflow: a province's labour market from the Labour Force Survey (employment, unemployment, participation) and SEPH earnings, with the caution on comparing the two. Use lang="fr" for the French version.
- province
- No description (required)
- lang
- Language: 'en' or 'fr' Provide a value matching the following JSON schema: {"enum":["en","fr"],"type":"string"}. Encode non-string values as JSON.
refresh_with_latest_release
Guided workflow: bring an article or table up to date with StatCan's latest release (release calendar, The Daily, changed tables, revisions and vintages). Use lang="fr" for the French version.
- subject
- No description (required)
- lang
- Language: 'en' or 'fr' Provide a value matching the following JSON schema: {"enum":["en","fr"],"type":"string"}. Encode non-string values as JSON.
build_sdmx_or_key
Guided workflow: build a complete SDMX OR key for a large dimension. Use lang="fr" for the French version.
- product_id
- Provide a value matching the following JSON schema: {"type":"integer"}. Encode non-string values as JSON. (required)
- dimension_position
- Provide a value matching the following JSON schema: {"type":"integer"}. Encode non-string values as JSON. (required)
- lang
- Language: 'en' or 'fr' Provide a value matching the following JSON schema: {"enum":["en","fr"],"type":"string"}. Encode non-string values as JSON.
find_and_fetch_series
Guided workflow: find a StatCan series on a topic and fetch its latest data. Use lang="fr" for the French version.
- topic
- No description (required)
- lang
- Language: 'en' or 'fr' Provide a value matching the following JSON schema: {"enum":["en","fr"],"type":"string"}. Encode non-string values as JSON.
look_up_classification
Guided workflow: look up a StatCan classification (e.g. NAICS) for a topic. Use lang="fr" for the French version.
- topic
- No description (required)
- lang
- Language: 'en' or 'fr' Provide a value matching the following JSON schema: {"enum":["en","fr"],"type":"string"}. Encode non-string values as JSON.
Resources
21 advertised
module_catalogue_doc
Bilingual (EN/FR) directory of every module this server exposes, by name and description — use this to see what a source covers in French before deciding which tools to call.
docs://cataloguereport_issue_doc
When and how to offer the user a bug report for this server, with the template to fill in. Read it when a tool misbehaves.
docs://report-issueupstream_status_doc
Upstream hosts MapleStats has paused after repeated failures (EN/FR), with when each is tried again. Read it when tools for one source keep failing with UpstreamUnavailable.
docs://statusboc_gotchas_doc
List known Bank of Canada Valet API quirks that are easy to get wrong. French version: docs://boc/fr/pieges.
docs://boc/gotchasboc_gotchas_doc_fr
Pièges connus de l'API Valet de la Banque du Canada, faciles à manquer. Version française de docs://boc/gotchas.
docs://boc/fr/piegesboc_well_known_series_doc
List well-known Bank of Canada Valet series/groups for FX, interest rates, CPI/inflation, and commodity prices. French version: docs://boc/fr/series-courantes.
docs://boc/well-known-seriesboc_well_known_series_doc_fr
Liste des séries et groupes courants de l'API Valet de la Banque du Canada : taux de change, taux d'intérêt, IPC et inflation, prix des produits de base. Version française de docs://boc/well-known-series.
docs://boc/fr/series-courantescmhc_gotchas_doc
List known CMHC HMIP quirks that are easy to get wrong. French version: docs://cmhc/fr/pieges.
docs://cmhc/gotchascmhc_gotchas_doc_fr
Particularités connues du HMIP de la SCHL, faciles à manquer. Version française de docs://cmhc/gotchas.
docs://cmhc/fr/piegescmhc_well_known_categories_doc
List well-known CMHC HMIP categories for rental market, housing starts, seniors housing, and population/household indicators. French version: docs://cmhc/fr/categories-courantes.
docs://cmhc/well-known-categoriescmhc_well_known_categories_doc_fr
Catégories courantes du HMIP de la SCHL : marché locatif, mises en chantier, logements pour personnes âgées, population et ménages. Version française de docs://cmhc/well-known-categories.
docs://cmhc/fr/categories-couranteseccc_gotchas_doc
List known MSC GeoMet-OGC-API quirks that are easy to get wrong. French version: docs://eccc/fr/pieges.
docs://eccc/gotchaseccc_gotchas_doc_fr
Pièges connus de MSC GeoMet (OGC-API), faciles à manquer. Version française de docs://eccc/gotchas.
docs://eccc/fr/piegeseccc_well_known_collections_doc
List well-known MSC GeoMet collections for alerts, current conditions, AQHI, climate normals/observations, hydrometric, and marine data. French version: docs://eccc/fr/collections-courantes.
docs://eccc/well-known-collectionseccc_well_known_collections_doc_fr
Collections courantes de MSC GeoMet : alertes, conditions actuelles, cote air santé, normales et observations climatiques, hydrométrie et météo marine. Version française de docs://eccc/well-known-collections.
docs://eccc/fr/collections-courantesplanner_fitness_rules_doc
Fitness-for-use rules: when and how a Statistics Canada, Bank of Canada or CMHC number can be used, with the official sources. French version: docs://planner/fr/regles-d-usage.
docs://planner/fitness-rulesplanner_fitness_rules_doc_fr
Règles d'usage des données : quand et comment utiliser un chiffre de Statistique Canada, de la Banque du Canada ou de la SCHL, avec les sources officielles. Version française de docs://planner/fitness-rules.
docs://planner/fr/regles-d-usagestatcan_addressing_doc
Explain StatCan's productId/vectorId/coordinate addressing system. French version: docs://statcan/fr/adressage.
docs://statcan/addressingstatcan_addressing_doc_fr
Explique le système d'adressage de Statistique Canada : productId, vectorId et coordonnée. Version française de docs://statcan/addressing.
docs://statcan/fr/adressagestatcan_gotchas_doc
List known StatCan API quirks that are easy to get wrong. French version: docs://statcan/fr/pieges.
docs://statcan/gotchasstatcan_gotchas_doc_fr
Pièges connus des API de Statistique Canada, faciles à manquer. Version française de docs://statcan/gotchas.
docs://statcan/fr/pieges90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 485 ms
- 95th percentile latency
- 485 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 485 ms · metadata changed · 3 tool(s), 21 resource(s), 0 resource template(s), 14 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http maplestats-mcp-danielstats https://mcp.maplestats.danielstats.io/mcpCodex
codex mcp add maplestats-mcp-danielstats --url https://mcp.maplestats.danielstats.io/mcpCursor
{
"mcpServers": {
"maplestats-mcp-danielstats": {
"url": "https://mcp.maplestats.danielstats.io/mcp"
}
}
}Cline
{
"mcpServers": {
"maplestats-mcp-danielstats": {
"type": "streamableHttp",
"url": "https://mcp.maplestats.danielstats.io/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"maplestats-mcp-danielstats": {
"type": "http",
"url": "https://mcp.maplestats.danielstats.io/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http maplestats-mcp-danielstats https://mcp.maplestats.danielstats.io/mcpClaude Desktop
https://mcp.maplestats.danielstats.io/mcpWindsurf
{
"mcpServers": {
"maplestats-mcp-danielstats": {
"serverUrl": "https://mcp.maplestats.danielstats.io/mcp"
}
}
}Let your agent find its tools
Find servers like MapleStats MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.