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.
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.
- 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.
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.
One command — pip install frankfurtermcp
