Back to Directory/Developer Tools

io.github.arose26/bank-of-canada-mcp

Bank of Canada economic data: exchange rates, policy rate, CPI, bond yields. No API key.

Developer ToolsTypeScriptv0.1.1

bank-of-canada-mcp

An MCP server that gives Claude and other LLMs live access to Canadian economic data via the Bank of Canada's free Valet API — ~16,000 time series covering exchange rates, the policy interest rate, CPI, bond yields, commodity prices, and more.

FRED, the World Bank, and the IMF all have MCP servers. Canada didn't — now it does.

No API key required.

Quick start

Claude Code

claude mcp add bank-of-canada -- npx -y bank-of-canada-mcp

Claude Desktop — add to claude_desktop_config.json:

{
  "mcpServers": {
    "bank-of-canada": {
      "command": "npx",
      "args": ["-y", "bank-of-canada-mcp"]
    }
  }
}

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

Tools

ToolWhat it does
search_seriesKeyword search across the full series catalogue — find the series name for anything ("overnight rate target", "CPI", "5-year bond")
get_observationsTime-series data for up to 5 series, by date range or N most recent
latest_fx_ratesToday's official daily exchange rates vs CAD
convert_currencyConvert between any two supported currencies using today's rates

Example prompts

  • "What's the Bank of Canada's current policy rate, and how has it moved this year?"
  • "Plot USD/CAD for the last 90 days."
  • "Convert 2,500 EUR to CAD at today's official rate."
  • "How does core CPI compare to headline CPI over the past two years?"

Development

npm install
npm test        # offline unit tests (vitest)
npm run build   # tsc → dist/

Architecture: src/valet.ts is a plain API client with pure, unit-tested logic (search, conversion math); src/index.ts is the MCP wiring. Errors from the Valet API (e.g. an unknown series name) are returned as MCP tool errors with the API's own message, so the model can self-correct by re-searching.

Notes

  • Rates are the Bank of Canada's indicative daily averages, published once per business day — not transactional quotes.
  • Data is © Bank of Canada, used under their terms. This project is not affiliated with or endorsed by the Bank of Canada.

Roadmap

  • Statistics Canada Web Data Service tools
  • Group browsing (lists/groups)
  • Streamable HTTP transport for remote deployment

License

MIT

Installation

Source-derived launch command. Check the maintainer’s required arguments and credentials before running:

bash
npx -y bank-of-canada-mcp

Set up in your AI client

Merge this template into ~/Library/Application Support/Claude/claude_desktop_config.json. Keep existing servers. Add any arguments, credentials, and permissions required by the maintainer; this template has not been install-tested.

json
{
  "mcpServers": {
    "io-github-arose26-bank-of-canada-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "bank-of-canada-mcp"
      ]
    }
  }
}

Restart Claude Desktop completely for changes to take effect. Confirm the server appears connected in the client’s tool list, then try a read-only example from its documentation.

Claude Desktop setup reference

Package

bank-of-canada-mcpnpm

Compatible MCP Clients

io.github.arose26/bank-of-canada-mcp works with any MCP-compatible client. Copy the config snippet from the Configuration section above and add it to the file shown for your client, then restart the application.

  • Claude Desktop~/Library/Application Support/Claude/claude_desktop_config.jsonRestart Claude Desktop completely for changes to take effect.
  • Cursor~/.cursor/mcp.jsonRestart Cursor for changes to take effect.
  • VS Code.vscode/mcp.jsonReload VS Code window for changes to take effect.
  • Windsurf~/.codeium/windsurf/mcp_config.jsonRestart Windsurf for changes to take effect.
  • Claude Code.mcp.jsonSave at the project root, then start Claude Code in that project and review the MCP server approval prompt. Keep real credentials out of shared files.

Learn More