Labsco
MCP SERVER

FrankfurterMCP

by anirbanbasu

Convert an amount between currencies at the latest rate or at the rate that applied on a given date, and pull a rate series across a date range.

Personal Finance & BudgetingVerified
Summary
A date with no published rate returns the closest earlier one instead of failing — which a report wants and a reconciliation should know about.

Both historical tools substitute the rate from the nearest earlier date, so a weekend or a holiday still answers; that is convenient for restating figures and worth remembering when a number has to tie out to the exact day. The conversion tools take the amount itself, so the arithmetic never comes back to the model. One tool does no currency work at all: greet exists to demonstrate the server's middleware.

What it is

A currency-rate client over the Frankfurter API, which publishes exchange rates sourced from the European Central Bank. Six tools cover conversion and historical lookups, with results cached locally so repeated questions do not re-hit the API.

What you get
  • The supported set up front: the three-letter currency codes the other tools accept (get_supported_currencies).
  • Current rates, listed or converted: the latest rates for a base currency, optionally filtered to chosen symbols, and a direct conversion of an amount between two currencies (get_latest_exchange_rates, convert_currency_latest).
  • The same moves against the past: rates for a specific date or across a start-to-end range, and an amount converted at a named date's rate (get_historical_exchange_rates, convert_currency_specific_date).
  • A defined fallback instead of an error — when no rate exists for the date asked for, the rate from the closest earlier date is used, so a weekend or a public holiday still produces an answer.
  • Caching split by whether the answer can change: historical lookups go into a least-recently-used cache, while latest rates use a time-to-live cache defaulting to 15 minutes, both adjustable.
Requirements

No account and no key — the Frankfurter API is open. Python 3.12 or newer, installed from PyPI or from a clone using uv. Stdio is the default transport; MCP_SERVER_TRANSPORT switches it to sse or streamable-http, in which case the bind host, port and CORS origins matter — the defaults are localhost and 127.0.0.1 for a reason. The HTTP client's timeout defaults to 5 seconds and accepts anything between 5 and 60. The host needs outbound network access.

Setup effort

One command — pip install frankfurtermcp