Frankfurter

Official registry Other

Convert currencies and fetch blended FX rates from 50+ institutional sources.

What can you do with Frankfurter?

  • convert — the primary tool. Convert an amount between two currencies;
  • get_rates — blended reference rates for the latest day or a single
  • list_currencies — supported ISO 4217 codes and names as { code: name }.
  • list_providers — the institutions relayed, with key, rate type,

Install

Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).

Remote (streamable-http)
Claude Code
claude mcp add --transport http frankfurter 'https://mcp.frankfurter.dev/'
JSON configuration (Claude Desktop, Cursor, VS Code)
{
    "mcpServers": {
        "frankfurter": {
            "type": "http",
            "url": "https://mcp.frankfurter.dev/"
        }
    }
}

Documentation

From the project's README on GitHub, refreshed weekly. Links open on GitHub.

Contents
  1. frankfurter-mcp
  2. Tools
  3. Run
  4. Configuration
  5. Development
  6. License

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. Pass date for a historical rate, provider for one institution's published rate (e.g. UST, the U.S. Treasury's quarterly reporting rate).
  • get_rates — blended reference rates for the latest day or a single date. Optional base, quotes and provider (or providers to compare multiple institutions). The raw-rate companion to convert; with provider and the provider's own base, the digits are as published, with the date they took effect.
  • list_currencies — supported ISO 4217 codes and names as { code: name }.
  • list_providers — the institutions relayed, with key, rate type, frequency and coverage dates, to pick a provider.

For time series, historical ranges, 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 (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.

Development

npm test       # vitest
npm run lint   # biome

License

MIT

Frequently asked questions

What is Frankfurter?

Convert currencies and fetch blended FX rates from 50+ institutional sources.

How do I install Frankfurter?

It runs as a remote server. In Claude Code: claude mcp add --transport http frankfurter 'https://mcp.frankfurter.dev/'. For other clients, paste the JSON configuration from this page into their MCP settings.

Does Frankfurter need an API key?

Its registry entry lists no required key or secret. Some features may still need an account with the service it connects to.

Is Frankfurter open source?

Its code is public on GitHub, but the repository does not declare a standard license.

Who maintains Frankfurter?

It is published by lineofflight. AI.tn lists it but does not maintain or endorse it.

From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.