Skip to main content

exchange-rates-mcp-server

io.github.cyanheads/exchange-rates-mcp-serverVersion 0.6.0

Convert currencies, get FX rates, and query historical Frankfurter v1 exchange rate data.

Status

Responds267 msAnswered our handshake without sign-in.

Registry data may be out of date

We could not refresh it, so this page shows the last copy.
Last checked
Nov 14, 2026, 14:48 UTC
Latency
267 ms
Remotes responding
1 of 1
Sign-in
No sign-in
Hosting
Hosted outside the EU (detected)
Registry data as of
Nov 14, 2026, 22:14 UTC

Data from the official MCP Registry, checked by run.zero. How we check

Connect

Streamable HTTP
https://exchange-rates.caseyjhand.com/mcpResponds267 ms
No sign-in

Claude Code

claude mcp add --transport http exchange-rates-mcp-server https://exchange-rates.caseyjhand.com/mcp

Claude Desktop and claude.ai

Settings > Connectors > Add custom connector
Name: exchange-rates-mcp-server
Remote MCP server URL: https://exchange-rates.caseyjhand.com/mcp

Cursor

{
  "mcpServers": {
    "exchange-rates-mcp-server": {
      "url": "https://exchange-rates.caseyjhand.com/mcp"
    }
  }
}

VS Code

code --add-mcp '{"name":"exchange-rates-mcp-server","type":"http","url":"https://exchange-rates.caseyjhand.com/mcp"}'
Streamable HTTP
npm: @cyanheads/exchange-rates-mcp-server 0.6.0
Package only

npm (npx)

claude mcp add exchange-rates-mcp-server -- npx -y @cyanheads/exchange-rates-mcp-server@0.6.0
Streamable HTTP
npm: @cyanheads/exchange-rates-mcp-server 0.6.0
Package only

npm (npx)

claude mcp add exchange-rates-mcp-server -- npx -y @cyanheads/exchange-rates-mcp-server@0.6.0

Built your own server? run.zero hosts MCP servers on European infrastructure.

Host your own MCP server on run.zero

Tools

7 tools

Tools of exchange-rates-mcp-server
Read-only
Idempotent
Open world
fx_convert_currencyConvert an amount between any two currencies at the latest or a historical rate. Returns the converted amount, the rate used, the actual rate date, and whether the date was snapped from a weekend/holiday to the prior business day. Cross-rates are triangulated through EUR automatically.Not declaredYesYesYes
fx_dataframe_describeList tables and columns staged on a DataCanvas from a prior fx_get_timeseries call. Required first step before fx_dataframe_query — use it to discover table names and column schemas. Requires DataCanvas, which is on by default — a deployment that turns it off does not list this tool at all, and fx_get_timeseries returns every range inline there.Not declaredYesYesNo
fx_dataframe_queryRun a read-only SQL SELECT against DataCanvas tables staged by fx_get_timeseries. Supports aggregations, GROUP BY, window functions, and JOINs across multiple registered tables. Run fx_dataframe_describe first to discover table names and column schemas. Requires DataCanvas, which is on by default — a deployment that turns it off does not list this tool at all, and fx_get_timeseries returns every range inline there.Not declaredYesYesNo
fx_get_rateGet the exchange rate for a currency pair on a given date (default: latest). Returns the rate, the actual rate date (which may differ from the requested date on weekends/holidays — daily observations may skip non-publication days), and source provenance. Cross-rates are triangulated through EUR automatically. A same-currency pair returns a rate of 1, dated to the same publication day any other pair would report for that date. Use fx_convert_currency when you want the converted amount; use this tool when you only need the rate number.Not declaredYesYesYes
fx_get_ratesGet all available exchange rates for one base currency in a single snapshot. Useful for bulk comparison and seeding downstream tools. Returns a map of quote currency → rate, the actual snapshot date, and whether a historical date was snapped from a weekend/holiday to the prior business day. Optionally filter to a subset of quote currencies via symbols. Listing the base currency itself in symbols is accepted and returns a rate of 1 for it.Not declaredYesYesYes
fx_get_timeseriesGet historical daily Frankfurter v1 rates over an inclusive date range. Same-date EUR legs are divided without intermediate rounding; only days with both currencies appear, including observed self-pairs at 1 and historical retired currencies. Missing-leg served days produce coverage notices; weekends and holidays are not counted as missing. summary covers all observed days before delivery: arithmetic mean, earliest tied extrema, endpoints and percentage change, without accounting policy. limit bounds returned rows (default/max 500); 0 returns summary only. Continue inline with next_start_date, the same end_date and a positive limit. Long ranges (>90 days by default) stage beyond the 40,000-character preview budget, independently of limit. Explicit canvas_id always stages the complete series, including short/empty results, and fails if unavailable or unknown. Each registration preserves earlier tables with a unique table_name. spilled=true returns canvas_id and table_name; use fx_dataframe_describe then fx_dataframe_query for SQL. Without DataCanvas, omit canvas_id to page inline.Not declaredYesYesYes
fx_list_currenciesList current Frankfurter v1 currency codes and names with as_of, the latest served rate date. include_retired=true adds historical codes absent from the current set. Optional official ECB start_date/end_date are outer coverage bounds, not uninterrupted availability; a dated end_date does not imply retirement. Metadata outages are disclosed without failing current discovery. Historical availability remains validated from requested v1 data. Use this to disambiguate dollars (USD vs AUD vs CAD).Not declaredYesYesYes

Details

Registry status
Active
Published
Nov 3, 2026
Updated
Nov 3, 2026
Website
Not given
Categories (suggested)
Finance and paymentsSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
GDPR
Not declared

Are you the operator? Claim this listing