Three of the four tools work on the free tier; historical rates do not, and a free key calling it gets a message that says so and where to upgrade. That, plus errors surfaced as tool results instead of protocol faults, is what separates this from pointing a generic HTTP tool at an exchange-rate endpoint.
A Node MCP server for the UniRate API. Four tools with Zod-validated inputs and structured outputs, so a model gets both a readable answer and a payload it can chain into the next call — rather than raw JSON from a generic HTTP tool.
- `convert` — an amount from one currency code to another at the latest rate
- `latest_rate` — the current rate for a pair, or leave the target out and get rates against everything
- `historical_rate` — the rate on a given date, with coverage back to 1999-01-04 for major fiat pairs; this one is a Pro-plan call
- `list_currencies` — the supported codes, useful for validating what a user typed
- Coverage of 170+ currencies including major crypto
- API failures mapped to clear tool errors — invalid parameters, bad key, Pro required, unknown currency, rate limit, service unavailable — returned as errors the model can recover from rather than protocol faults
- Both stdio and Streamable HTTP, so the same package runs locally or as a shared remote endpoint
A UniRate API key in UNIRATE_API_KEY; the free tier covers conversion, latest rates and the currency list, while historical rates need the Pro plan. Install with `npm install -g @unirate/mcp` or run it through npx; Node 18+ with a single SDK dependency. For a remote endpoint, start it with `--http` on a port and point clients at /mcp; there is a /healthz probe and a multi-arch container image. MIT licensed.
One command plus a key — npm install -g @unirate/mcp, then supply credentials
