AllRatesToday MCP Server
This server provides real-time and historical foreign-exchange data to AI assistants via the Model Context Protocol.
Get current exchange rate (
get_exchange_rate): Fetch the live mid-market rate between any two of 150+ currencies using ISO 4217 codes (e.g., USD → EUR). Rates refresh every ~60 seconds from tier-1 sources.Get historical rates (
get_historical_rates): Retrieve time-series data for a currency pair over fixed periods:1d— hourly data (24 points)7d— daily data (7 points)30d— daily data (30 points)1y— weekly data (52 points)
Multi-currency lookups (
get_rates_authenticated): Fetch rates from one source currency to multiple targets in a single call (e.g., USD → EUR, GBP, JPY), with optional historical timestamps and grouping by hour, day, week, or month.List supported currencies (
list_currencies): Retrieve all 150+ available currencies with their ISO code, full name, and symbol. Results are cached for 24 hours.
Most features require an AllRatesToday API key. Clear error messages are provided for missing keys, quota limits, and invalid requests.
AllRatesToday MCP Server
English | 简体中文
Give your AI coding assistant a live window into the foreign-exchange market.
A Model Context Protocol server that lets Claude Code, Cursor, Claude Desktop, Windsurf, and any other MCP-compatible client fetch real-time currency rates, historical data, and multi-currency lookups from the AllRatesToday API.
After installation, your assistant can answer questions like:
"What's the current USD to EUR rate?"
"Show me how GBP/JPY moved over the last 30 days."
"Convert 250 USD into CAD at a real rate."
"Compare USD against EUR, GBP, and JPY simultaneously."
"List every supported currency."
Table of contents
What you get
Capability | Detail |
Currencies | 150+ ISO 4217 codes, all major and most exotics |
Update frequency | Mid-market rates refresh every ~60 seconds |
Data source | Tier-1 financial data providers (Reuters / Refinitiv-class) |
Historical depth | Up to 1 year via |
Tools exposed | 4 — |
Transport | stdio (subprocess), MCP 1.x compatible |
Runtime | Node.js ≥18 |
Get an API key (required)
The server will not start without a valid ALLRATES_API_KEY. A free key is enough for development and personal use — no credit card required.
Register at allratestoday.com/register — 30 seconds
Verify your email
Copy your key from the dashboard (format:
art_live_xxxxx)Use it as
ALLRATES_API_KEYin the configs below
If you forget, the server prints clear registration instructions on stderr and exits with code 1.
Install
The server is published as an npm package. The simplest install is zero-install via npx, which is what every config below uses.
# Run without installing (recommended)
npx -y @allratestoday/mcp-server
# Or install globally
npm install -g @allratestoday/mcp-server
allratestoday-mcpBoth commands launch the stdio MCP server and wait for a client to connect. They're not meant to be run directly from your shell — your MCP client launches them as a subprocess.
Quick setup per client
Each client reads MCP servers from a different config file. Pick yours below.
Claude Code
The fastest path uses the built-in CLI:
claude mcp add allratestoday -- npx -y @allratestoday/mcp-server
claude mcp env allratestoday ALLRATES_API_KEY=art_live_xxxxxRestart Claude Code. Verify by asking it: "What's the current USD to EUR rate?"
Cursor
Edit ~/.cursor/mcp.json (or .cursor/mcp.json inside your project for project-scoped servers):
{
"mcpServers": {
"allratestoday": {
"command": "npx",
"args": ["-y", "@allratestoday/mcp-server"],
"env": {
"ALLRATES_API_KEY": "art_live_xxxxx"
}
}
}
}Restart Cursor. The four tools should appear in the MCP tool picker.
Claude Desktop
Edit the config file (path depends on OS):
OS | Path |
macOS |
|
Windows |
|
Linux |
|
{
"mcpServers": {
"allratestoday": {
"command": "npx",
"args": ["-y", "@allratestoday/mcp-server"],
"env": {
"ALLRATES_API_KEY": "art_live_xxxxx"
}
}
}
}Fully quit and reopen Claude Desktop (Cmd+Q on macOS, right-click tray icon → Exit on Windows). Closing the window alone keeps the old config loaded.
Windsurf
Edit ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"allratestoday": {
"command": "npx",
"args": ["-y", "@allratestoday/mcp-server"],
"env": {
"ALLRATES_API_KEY": "art_live_xxxxx"
}
}
}
}Restart Windsurf.
Generic stdio MCP client
Any MCP host that supports stdio transport works. The launch command is:
npx -y @allratestoday/mcp-server…with the environment variable ALLRATES_API_KEY set. The protocol version is MCP 1.x.
Verify it works
After configuring your client, test in this order:
Server starts — open the client. If the MCP integration shows a red dot or "failed to connect", the API key is missing or wrong (see Troubleshooting).
Tools are listed — most clients have a "tools" or "MCP" panel. You should see:
get_exchange_rateget_historical_ratesget_rates_authenticatedlist_currencies
A live call returns a number — ask the assistant:
What's the current USD to EUR rate?
The assistant will call
get_exchange_rate(source: "USD", target: "EUR")and reply with a real rate (e.g."USD to EUR is currently 0.9214."). If it fabricates a number without making a tool call, the server isn't connected.
Tools reference
All four tools require ALLRATES_API_KEY.
get_exchange_rate
Current mid-market rate between two currencies.
Input
Field | Type | Required | Description |
| string | yes | 3-letter ISO 4217 code, e.g. |
| string | yes | 3-letter ISO 4217 code, e.g. |
Example call
{ "source": "USD", "target": "EUR" }Example response
{ "rate": 0.92145, "source": "wise" }get_historical_rates
Time-series data points for a currency pair over a fixed period.
Input
Field | Type | Required | Description |
| string | yes | Source currency code |
| string | yes | Target currency code |
| string | no (default | One of |
Granularity by period
| Data points |
| Hourly (24 points) |
| Daily (7 points) |
| Daily (30 points) |
| Weekly (52 points) |
Example call
{ "source": "USD", "target": "INR", "period": "30d" }Example response (truncated)
{
"source": "USD",
"target": "INR",
"period": "30d",
"data": [
{ "date": "2026-03-27T00:00:00Z", "rate": 83.42, "timestamp": 1743033600000 },
{ "date": "2026-03-28T00:00:00Z", "rate": 83.51, "timestamp": 1743120000000 },
"..."
]
}get_rates_authenticated
Multiple targets in one call, with optional historical timestamp or grouping window.
Input
Field | Type | Required | Description |
| string | yes | Source currency code |
| string | yes | One or more codes, comma-separated ( |
| string (ISO 8601) | no | Historical point in time |
| string | no | One of |
Example call
{ "source": "USD", "target": "EUR,GBP,JPY" }Example response
[
{ "rate": 0.9214, "source": "USD", "target": "EUR", "time": "2026-04-26T11:00:00Z" },
{ "rate": 0.7891, "source": "USD", "target": "GBP", "time": "2026-04-26T11:00:00Z" },
{ "rate": 151.34, "source": "USD", "target": "JPY", "time": "2026-04-26T11:00:00Z" }
]list_currencies
All supported currencies with codes, names, and symbols. Cached upstream for 24 hours.
Input — none.
Example response (truncated)
{
"currencies": [
{ "code": "USD", "name": "US Dollar", "symbol": "$" },
{ "code": "EUR", "name": "Euro", "symbol": "€" },
{ "code": "GBP", "name": "British Pound", "symbol": "£" },
"..."
],
"count": 162
}Environment variables
Variable | Default | Required | Purpose |
| — | yes | Your API key. The server exits at startup if unset. |
|
| no | Override for self-hosted or staging deployments. |
You set these in your MCP client's config (in the env block) — not in your shell — because MCP servers are launched as subprocesses with isolated environments.
Plans
A free tier and paid plans are available. See allratestoday.com/pricing for current quotas. All plans include the same currency coverage and historical depth — only the request quotas differ.
Troubleshooting
Symptom | Likely cause | Fix |
Client shows "MCP server failed to start" or red dot |
| Verify the key in your client config; check it matches the dashboard |
Tools show but every call returns "Invalid AllRatesToday API key" | Key is malformed (missing prefix, truncated, or revoked) | Copy a fresh key from the dashboard |
Tools return "AllRatesToday API quota exceeded" | Free-tier monthly limit hit | Wait until next month or upgrade plan |
Historical tool returns "Bad request" | Invalid period or unknown currency code | Period must be |
Server starts but tools never appear in client | Client didn't reload after config change | Fully quit (not just close) and reopen the client |
| The server is waiting for an MCP client to connect — this is normal when run from a shell | Don't run from a shell; let your MCP client launch it |
Inspect server logs
To see what the server is doing, run it manually with the API key set:
ALLRATES_API_KEY=art_live_xxxxx npx -y @allratestoday/mcp-serverYou should see no output when healthy (stdio is reserved for the MCP protocol). Any errors print to stderr.
Error reference
The server maps API errors to clear, actionable messages.
HTTP status | Meaning | Tool error message |
200 | Success | (rate returned) |
400 | Bad request — usually unknown currency code |
|
401 | Invalid or missing API key |
|
429 | Quota exceeded |
|
5xx | Server-side issue at allratestoday.com |
|
The LLM will surface these messages in its response, so a user prompt that hits a 429 results in the assistant saying "the API quota has been exceeded — please try again next month or upgrade your plan."
FAQ
Is the free plan really enough for normal use? Yes for personal/dev use. The free tier covers a few daily questions. Heavy interactive use, multiple chat sessions per day, or running the server in production should consider the paid tiers.
Do you store my conversation or query data? No. Only your API key and the request parameters (source, target, period, time) are sent to allratestoday.com — never the LLM's conversation context, sheet contents, or anything else.
What happens to my API key?
It's only sent as a Bearer token in the Authorization header on requests to the AllRatesToday API. It's never logged or transmitted elsewhere.
Why is my historical request slow on first call?
Cold-start of npx (first run downloads the package) plus the initial AllRatesToday cache miss. Subsequent calls are fast (<200ms typically).
Can I run this without npm/Node? Not currently — Node ≥18 is required. We've considered a standalone binary; if that matters to you, open an issue.
Is there a self-hosted option?
Yes, set ALLRATES_BASE_URL to your own AllRatesToday instance. Contact support@allratestoday.com for self-hosted licensing.
Does this work with ChatGPT? The Anthropic MCP standard works with any MCP-compatible client. ChatGPT Desktop has experimental MCP support; check OpenAI's docs for current status.
Development
git clone https://github.com/cahthuranag/mcp-server.git
cd mcp-server
npm install
npm run build
ALLRATES_API_KEY=art_live_xxxxx node dist/index.jsThe server runs on stdio and waits for an MCP client to connect. Hit Ctrl+C to exit.
To watch and rebuild on changes during development:
npm run devTo test against a local AllRatesToday instance:
ALLRATES_BASE_URL=http://localhost:8080/api ALLRATES_API_KEY=test_key node dist/index.jsProject structure
src/
├── index.ts # MCP server, tool registration, request handlers
└── client.ts # HTTP client for AllRatesToday API + error mapping
dist/ # Compiled JS (gitignored)
server.json # MCP registry manifest
package.json # npm metadata, dependencies, scriptsContributing
Issues and PRs welcome at github.com/cahthuranag/mcp-server. Before opening a PR:
npm run buildshould succeed with no errorsTest against a real AllRatesToday API key (set in
ALLRATES_API_KEY)Update tool descriptions in
src/index.tsif you change tool behaviorUpdate this README's "Tools reference" section if you add or rename a tool
Changelog
See GitHub Releases for the full list. Recent highlights:
0.3.x — API key required for all tools; fail-fast at startup with clear error
0.2.x — Removed news tool, required auth on
get_historical_rates0.1.x — Initial release with 5 tools
Support
API issues: support@allratestoday.com
Bug reports: github.com/cahthuranag/mcp-server/issues
MCP questions: modelcontextprotocol.io — protocol docs
Status / uptime: allratestoday.com (status page in development)
License
MIT — see LICENSE.
Maintenance
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/cahthuranag/mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server