mcpField
S
statcan-mcp

statcan-mcp

Local
github.com/arose26Legal & Government0Updated 2w ago

About statcan-mcp

statcan-mcp is an MCP server that gives LLMs access to Statistics Canada's data tables without an API key. It supports table discovery, metadata inspection, and time-series retrieval, translating API codes into readable values.

Key features

  1. 01Search Statistics Canada tables
  2. 02Inspect dimensions and members
  3. 03Retrieve data by vector ID
  4. 04Retrieve data by table coordinates
  5. 05Decode vector IDs and API codes

Use cases

  1. 01Track Canadian unemployment over time
  2. 02Compare inflation across provinces
  3. 03Find housing-start figures for a period

MCP support

Exposes Statistics Canada table search, metadata, series, and vector information as tools for MCP clients. It accesses the Web Data Service and requires no API key.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"arose26-statcan": {
"command": "npx",
"args": [
"-y",
"statcan-mcp"
]
}
}
}
Run commandnpx -y statcan-mcp

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npmstatcan-mcp0.1.1

Tools

5

Saved tool list · updated 2w ago

ParameterTypeRequiredDescription
limitintegerNoMax results
querystringYesKeywords, e.g. 'consumer price index monthly' or 'housing starts'

Details

From the project README

statcan-mcp

An MCP server that gives Claude and other LLMs live access to Statistics Canada — all 8,200+ data tables from the Web Data Service: CPI, GDP, labour force, housing starts, population, trade, and more.

No API key required.

Sibling project: bank-of-canada-mcp for Bank of Canada rates and FX.

Why this exists

StatCan's API is powerful but hostile: POST-only lookups, opaque numeric vector IDs, 10-position "coordinate" addressing, and numeric code enums everywhere (scalarFactorCode: 3). This server translates it into something an LLM can actually drive:

  • Discovery flow built into the tools — search tables → inspect dimensions → fetch data, with each tool description pointing to the next step.
  • Context-friendly by default — a CPI dimension has 359 members and a series can span a century; members are capped and keyword-filterable, data defaults to the last 12 periods.
  • Codes decoded at runtime via StatCan's own code-set endpoint — responses say "scale": "thousands" and "note": "use with caution", not scalarFactorCode: 3, statusCode: 5. Nothing hardcoded to go stale.
  • Forgiving inputs — vector IDs accepted as v41690973 or 41690973; coordinates padded automatically.

Quick start

Claude Code

claude mcp add statcan -- npx -y statcan-mcp

Claude Desktop — add to claude_desktop_config.json:

{
  "mcpServers": {
    "statcan": {
      "command": "npx",
      "args": ["-y", "statcan-mcp"]
    }
  }
}

The same npx invocation works in Cursor, Windsurf, and any other MCP client.

Tools

ToolWhat it does
search_tablesKeyword search across all ~8,200 data tables
get_table_metadataA table's dimensions and members (capped, filterable) — the map you need to pull data
get_data_by_vectorsTime series by vector ID(s), date range or latest-N
get_data_by_coordinateTime series by table + one member choice per dimension
get_series_infoDecode a mystery vector ID into its title and source table

Example prompts

  • "What's Canada's current unemployment rate, and how has it trended over 12 months?"
  • "Compare gasoline price inflation in Ontario vs Quebec since 2024."
  • "How many housing starts were there in Canada last quarter?"
  • "What is vector v41690973?"

Development

npm install
npm test           # offline unit tests (vitest)
npm run build      # tsc → dist/
node scripts/smoke.mjs   # live smoke test against the real API

Architecture: src/wds.ts is a plain WDS client with pure, unit-tested logic (catalogue search, coordinate padding, code decoding); src/index.ts is the MCP wiring. API failures (unknown vector, bad coordinate) come back as MCP tool errors carrying StatCan's own message so the model can self-correct.

Notes

  • Data is © Statistics Canada, used under the Statistics Canada Open Licence. This project is not affiliated with or endorsed by Statistics Canada.
  • English output only for now (the API also carries French — see roadmap).

Roadmap

  • French-language output (*Fr fields are already in the API responses)
  • Full-table CSV download for bulk analysis
  • Streamable HTTP transport for remote deployment

License

MIT

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.