io.github.cyanheads/exchange-rates-mcp-server

io.github.cyanheads/exchange-rates-mcp-server · v0.4.2 · data-and-databases

io.github.cyanheads/exchange-rates-mcp-server is healthy: it completed an MCP handshake in 410 ms and exposes 7 tools.

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

Endpoint: https://exchange-rates.caseyjhand.com/mcp (streamable-http)

Repository · JSON · Add to my inventory

Facts

Users (last 30 days)0
HandshakeHealthy
Auth neededNone
Tool count7
Latency410 ms
Last checked (UTC)2026-10-16T07:15:42.606Z

Health history

Checked (UTC)StatusLatencyError
2026-10-16T07:15:42.606ZHealthy410
2026-10-15T03:20:55.506ZHealthy2197

Tools (7)

fx_list_currenciesList all supported ISO 4217 currency codes with their full names. Call this before converting to disambiguate "dollars" (USD vs AUD vs CAD vs HKD vs SGD) or to validate a user-supplied currency code. Covers the ~30 ECB reference currencies.
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. Optional
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 — ECB publishes business days only), and source provenance. Cross-rates are triangulated through EUR automatically. A sam
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.
fx_get_timeseriesGet historical daily exchange rates for a currency pair over a date range. ECB publishes on business days only — weekends and holidays produce no entry, and no date outside the requested range is ever returned, so a range covering only non-publication days comes back with an empty rates map and a no
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 (CANVAS_PROVIDER_TYPE=duckdb) — without it this tool is not listed at all and fx_get_timeseries r
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 (CANVAS_PROVIDER_TYPE=duck