Wraps the Frankfurter API to give Claude access to blended foreign exchange rates aggregated from 50+ institutional sources. Exposes four tools: get_rates pulls daily reference rates (latest, historical, or time series), convert handles currency conversions with a specific amount, list_currencies returns supported ISO 4217 codes, and list_providers shows available data sources. You can query the blended rate or pick a single provider. Rates are end-of-day reference rates, not live trading data. Available as a hosted service at mcp.frankfurter.dev or self-hostable via Docker. Useful when you need reliable FX data for financial calculations, reporting, or historical analysis without managing API keys or rate limits.
Official Model Context Protocol server for the Frankfurter exchange-rate API. A thin, stateless proxy over Frankfurter's v2 blended multi-source reference rates.
convert — the primary tool. Convert an amount between two currencies;
returns a money object { amount, currency } rounded to the target's minor
units. Pass date for a historical rate.get_rates — blended reference rates for the latest day or a single
date. Optional base and quotes. The raw-rate companion to convert.list_currencies — supported ISO 4217 codes and names as { code: name }.For time series, historical ranges, provider-specific rates, or bulk queries,
use the REST API at https://api.frankfurter.dev/v2 directly.
Rates are daily reference rates, not real-time trading rates. Not financial advice.
npm install
npm run build
npm start # listens on :3000, POST /
Docker:
docker build -t frankfurter-mcp . && docker run -p 3000:3000 frankfurter-mcp
docker run -p 3000:3000 ghcr.io/lineofflight/frankfurter-mcp:latest
The prebuilt ghcr.io/lineofflight/frankfurter-mcp:latest image is published
on each release; building from source also works.
Point any MCP client at http://<host>:3000/ (Streamable HTTP). The hosted
server is at https://mcp.frankfurter.dev/.
PORT — HTTP port (default 3000).FRANKFURTER_API_URL — upstream API base (default https://api.frankfurter.dev).
Set this to a self-hosted Frankfurter instance if desired. The value must be a
host root: any path prefix in it is discarded (e.g. https://example.com/api
resolves to https://example.com/v2/rates), so a self-hosted instance must be
reachable at the host root.npm test # vitest
npm run lint # biome
MIT
com.mcparmory/google-search
io.github.pipeworx-io/brave-search
marcopesani/mcp-server-serper
brave/brave-search-mcp-server
com.mcparmory/google-search-console
acamolese/google-search-console-mcp