frankfurter-mcp
Official Model Context Protocol server for the Frankfurter exchange-rate API. A thin, stateless proxy over Frankfurter's v2 blended multi-source reference rates.
Tools
convert— the primary tool. Convert an amount between two currencies; returns a money object{ amount, currency }rounded to the target's minor units. Passdatefor a historical rate.get_rates— blended reference rates for the latest day or a singledate. Optionalbaseandquotes. The raw-rate companion toconvert.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.
Run
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/.
Configuration
PORT— HTTP port (default3000).FRANKFURTER_API_URL— upstream API base (defaulthttps://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/apiresolves tohttps://example.com/v2/rates), so a self-hosted instance must be reachable at the host root.
Development
npm test # vitest
npm run lint # biome
License
MIT