
AllRatesToday
io.github.cahthuranag由 GitHub 帳號 cahthuranag 發布v0.5.0更新於 Oct 24, 2026
Real-time & historical exchange rates for 160+ currencies. No API key needed to start.
概覽
讓助理查詢即時與歷史匯率、央行官方匯率表以及貨幣清單。
- 可以做什麼
- 提供八個工具:get_exchange_rate 查詢單一貨幣對匯率,get_historical_rates 取得 1d/7d/30d/1y 時間序列,get_rates_authenticated 一次查詢多個目標貨幣或指定時點,list_currencies 列出貨幣,list_central_banks 列出央行與稅務機關,get_official_rates 取得官方公布的匯率表,get_reference_rate 取得每日固定參考匯率,request_trial_key 自助申請試用金鑰。沒有金鑰時使用公開的歐洲央行每日參考匯率(約 30 種主要貨幣);設定金鑰後可取得 160 多種貨幣的即時中間價與歷史資料。
- 適用情境
- 適合助理需要目前或歷史匯率、貨幣換算,或需要可用於發票、稅務、海關與稽核的官方可引用匯率的情境。也適用於差旅費用與財務報告類問題,讓助理引用有來源的匯率,而不是自行編造。
- 執行需求
- 透過 npx @allratestoday/mcp-server 以 stdio 在本機執行,需要 Node.js 18 或更新版本,並能連線至 allratestoday.com。ALLRATES_API_KEY 為選用;未設定時以無金鑰模式執行。ALLRATES_BASE_URL 可覆寫 API 基礎網址。另提供託管 HTTP 端點,供支援遠端 MCP 的用戶端使用。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 AllRatesToday,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
AllRatesToday MCP Server — @allratestoday/mcp-server
Website: https://allratestoday.com · Hosted endpoint (no install): https://allratestoday.com/api/mcp · Docs: https://allratestoday.com/mcp/
[npm version] [npm downloads] [license] [MCP] [TypeScript]
English | 简体中文
Give your AI assistant a live window into the foreign-exchange market. A Model Context Protocol server that lets Claude Code, Cursor, Claude Desktop, Windsurf, and any MCP-compatible client fetch real-time currency rates, historical series, 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."
🚀 Why this server?
- 📡 Live mid-market rates — 160+ ISO 4217 currencies, refreshed every ~60 seconds
- 📈 Historical series built in —
1d/7d/30d/1ywindows with sensible granularity per period - 🧰 Eight focused tools —
get_exchange_rate,get_historical_rates,get_rates_authenticated,list_currencies,list_central_banks,get_official_rates,get_reference_rate,request_trial_key; small surface, easy for the model to use correctly - 🔌 Works everywhere MCP does — stdio transport, MCP 1.x; Claude Code, Cursor, Claude Desktop, Windsurf, or any generic host
- 🔓 Works with no API key — installs and answers out of the box from open official central-bank tables (ECB first, else the bank that issues one of the two currencies); a free key unlocks real-time rates for 160+ currencies
- 🛡️ Honest about what it returned — every keyless answer says which rate it is and when it was published; API errors map to clear, actionable messages
- 🔒 Nothing leaks — only the request parameters and your API key ever reach allratestoday.com; never conversation context
⚖️ Mid-market vs official central-bank rates
With a key, get_exchange_rate, get_historical_rates and get_rates_authenticated return a mid-market rate, refreshed every ~60 seconds — the right number for price display, conversion, and anything that should track the market. It is not the official rate a tax authority or auditor may require. For those, call get_official_rates: the latest table published by any of 122 central banks and 4 tax authorities (ECB, Fed, HMRC, US Treasury, Swiss BAZG, …), fixed once published and carrying the institution's own rate_date, no key needed. list_central_banks gives the codes. Dated official tables (a past date) need an API key on a paid plan — a free key gets 403 Historical central bank rates require a paid plan. Mid-market history (get_historical_rates, and time on get_rates_authenticated) is paid-plan too — free and trial keys get 403. See the central bank REST API and per-bank npm SDKs. The two can diverge by several percent, so pick by use case, not convenience.
🔑 Get your API key (free)
A key unlocks real-time mid-market rates across 160+ currencies and multi-target lookups. The free tier is enough for development and trying it out — no credit card required. Historical series, point-in-time lookups and dated official and reference-rate tables need a paid plan from €4.99/month.
- 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
Without one the server prints a short summary of keyless mode (below) on stderr and keeps running — it never exits, because an MCP server that exits breaks the host client's whole configuration.
🔓 Keyless mode — what works with no setup
Install it with no configuration at all and it starts, connects, and answers:
The keyless path reads the open, edge-cached /api/open/central-bank/{bank}
endpoints — no upstream cost, no rate limit to trip over, nothing to sign up for.
Attribution. Keyless use requires a visible, followable link to AllRatesToday wherever the rates are shown (a footer, an about page, a README). With an API key it is appreciated but not required.
Markdown: Exchange rates by [AllRatesToday](https://allratestoday.com). Full wording: https://allratestoday.com/terms/#attribution.
🧩 Easiest install: the Claude Code plugin
If you use Claude Code, install the plugin instead of configuring this server by
hand — it bundles both AllRatesToday MCP servers, two skills, and five slash
commands (/rate, /convert, /official-rate, /fx-history,
/add-currency-support):
Everything below still applies for other MCP clients.
☁️ Hosted endpoint — nothing to install
The same tools also run as a hosted Streamable HTTP MCP server, which lists 11 tools: the 8 of this stdio package plus get_official_rate_history, compare_official_rates and get_publication_calendar from the sibling central-bank server. Paste the URL into any client that supports remote MCP — Claude.ai and Claude Desktop connectors, ChatGPT, Cursor, VS Code, Codex, Gemini CLI:
Works keyless. With a key, send Authorization: Bearer art_live_… or, where the client only takes a URL, connect to https://allratestoday.com/api/mcp?api_key=art_live_…. That puts the key in the URL, where client configs, logs and screenshots can expose it: prefer the header when your client supports it, never share or commit that URL, and rotate the key at https://allratestoday.com/profile if it leaks. Registry name: com.allratestoday/mcp. One-click Cursor / VS Code buttons: https://allratestoday.com/mcp/#hosted
📦 Installation
The simplest install is zero-install via npx, which is what every config below uses:
Both commands launch the stdio MCP server and wait for a client to connect — they're not meant to be run interactively 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:
Restart 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):
Restart Cursor. The eight tools should appear in the MCP tool picker.
Claude Desktop
Edit the config file (path depends on OS):
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 with the same mcpServers block as above, then restart Windsurf.
Generic stdio MCP client
Any MCP host that supports stdio transport works. The launch command is:
…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. The server starts with or without a key (no key ⇒ keyless mode), so a red dot or "failed to connect" means the client could not launch it — usually
npxor Node ≥18 (see Troubleshooting below). A wrong key does not stop it starting; calls then returnInvalid AllRatesToday API key. - Tools are listed — most clients have a "tools" or "MCP" panel showing the eight tools.
- A live call returns a number — ask: "What's the current USD to EUR rate?" The assistant should call
get_exchange_rate(source: "USD", target: "EUR")and reply with a real rate. If it fabricates a number without a tool call, the server isn't connected.
More prompts that exercise the other tools:
- "What was the ECB's official USD rate on the latest published table?" →
get_official_rates - "Give me today's 16:00 London reference rate for EUR, GBP and JPY." →
get_reference_rate - "Which central banks can you get official rates from?" →
list_central_banks - "Convert 250 USD to CAD." →
get_exchange_rate
🧪 Test with MCP Inspector
To check the server on its own, without any AI client in the way, run it under the official MCP Inspector:
- Open the URL it prints and click Connect. The Tools tab should list the eight tools.
- Call
get_exchange_ratewithsource: USD,target: EUR— it answers keyless with an official rate. - Set
ALLRATES_API_KEYin the Inspector's environment panel, reconnect, and call it again — now it returns the live mid-market rate.
If this works but your client doesn't, the problem is the client's config (path to npx, Node version, JSON syntax), not the server.
📚 Tools reference
get_exchange_rate— current rate for one pairget_historical_rates— time series over a preset periodget_rates_authenticated— multiple targets in one call, optional point-in-timelist_currencies— all supported currency codes, names, symbolslist_central_banks— every covered central bank / tax authority with its code and latest publication dateget_official_rates— the official table (or one pair) a named institution publishedget_reference_rate— the Daily Reference Rate, one fixed mid-market table per business day (16:00 London)request_trial_key— self-issue a 100-call, 7-day trial key, no account needed
get_historical_rates and get_rates_authenticated require ALLRATES_API_KEY; the other six of the eight work keyless. History (get_historical_rates, and time on get_rates_authenticated) needs a paid plan.
get_exchange_rate
Current mid-market rate between two currencies.
Input
Example call
Response (with a key):
Response (keyless — USD → GBP, not in the ECB table, so the Bank of England table answers):
derived: true means the bank publishes the inverse (GBP→USD) and the rate was inverted. A pair no single bank publishes is refused keyless with No keyless official source covers … and a pointer to the key.
get_historical_rates
Time-series data points for a currency pair over a fixed period. Needs an API key on a paid plan (free and trial keys get a 403).
Input
Granularity by period
Example call
Response (truncated):
get_rates_authenticated
Multiple targets in one call, with optional historical timestamp or grouping window.
Input
Example call
Response:
list_currencies
All supported currencies with codes, names, and symbols. Cached upstream for 24 hours — cheap to call for validating user input before the other tools.
Input — none.
Response (truncated):
list_central_banks
Every official source the server can quote — 122 central banks plus HMRC, the US Treasury, Swiss BAZG and India's CBIC — with the code that get_official_rates takes as bank, the institution's name, its latest publication date, age_days, its publication cadence and a stale flag when it is behind its own schedule. Keyless.
Input — none.
Response (truncated):
get_official_rates
The fixed, citable rate an institution published — for invoices, VAT and tax returns, customs, transfer pricing and audit. Not a live market rate.
Input:
Response (one pair):
Omit source/target for the whole table as rates: [{ base, quote, type, value }]. Keyless, only pairs the bank publishes and their inverses (flagged derived: true) are served; other crosses are refused. With a key, pairs the bank does not publish directly are cross-computed inside its own table and flagged derived: true. Always cite rate_date.
get_reference_rate
AllRatesToday's Daily Reference Rate: the per-currency median of samples taken in a five-minute window centred on 16:00 London, published once per business day and never revised. Use it when a report, index or research series needs one reproducible rate per day. It is not the WM/Refinitiv fix and not a registered benchmark; every response carries a disclaimer and the rate_date.
Input
Output — { rate_date, base, time, rates } for the table, or { rate_date, source, target, rate, derived } for a pair, plus method and disclaimer. Keyless for the latest table. Docs: https://allratestoday.com/reference-rate/
request_trial_key
Self-issues an API key with 100 lifetime calls, valid 7 days, with no account and no email, and switches this server to it for the rest of the session. The reply tells the user to copy the key into the MCP config as ALLRATES_API_KEY to keep it across restarts. Capped at 3 keys per IP per day.
Input — agent (string, optional), purpose (string, optional).
Output — { key, calls, expires_at, adopted, note }.
⚙️ Environment variables
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. The free tier covers real-time rates and multi-target lookups. All history and dated rates — mid-market history, point-in-time lookups, dated official and reference-rate tables — need a paid plan (free and trial keys get 403 historical_requires_paid_plan). The Official Rates plan covers official central-bank and tax-authority rates only (no market rates).
🛠️ Troubleshooting
To inspect what the server is doing, run it manually with the key set:
No output means healthy (stdio is reserved for the MCP protocol); errors print to stderr.
🛡️ Error reference
The server maps API errors to clear, actionable messages the assistant can relay to the user:
❓ FAQ
Is the free plan really enough for normal use? For trying it out and light dev use. It does not reset monthly; regular use or production needs a paid tier. Keyless mode costs nothing and has no quota.
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.
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 first call slow?
Cold-start of npx (first run downloads the package) plus the initial cache miss. Subsequent calls are typically <200ms.
Can I run this without npm/Node? Not currently — Node ≥18 is required. If a standalone binary matters to you, open an issue.
Is there a self-hosted option?
Set ALLRATES_BASE_URL to your own AllRatesToday instance. Contact [email protected] for self-hosted licensing.
Does this work with ChatGPT?
Yes, through the hosted endpoint: add https://allratestoday.com/api/mcp as a connector (custom MCP / remote server) in ChatGPT. This npm package is the local stdio server, for clients that launch a command — Claude Code, Cursor, Claude Desktop, Windsurf.
👩💻 Development
The server runs on stdio and waits for an MCP client to connect; Ctrl+C to exit. npm run dev watches and rebuilds. To test against a local AllRatesToday instance:
Project structure
Contributing — issues and PRs welcome at github.com/AllRates-Today/mcp-server. Before opening a PR: npm run build must succeed, test against a real API key, and update the tool descriptions in src/index.ts plus this README's tools reference if you change tool behavior.
📝 Changelog
Recent changes. Full history: GitHub Releases.
- 0.7.9 — README: changelog trimmed to the 0.7.x line
- 0.7.8 — README: MCP Inspector test guide, example prompts for every tool, hosted
?api_key=security note, ChatGPT FAQ and 401 row corrected, history consistently paid-plan - 0.7.6 — Keyless
get_rates_authenticatedwithtimenow says a paid plan is needed; README: free tier no longer listed as covering history,sourceexample ismid-market - 0.7.4 — Keyless
get_exchange_ratefalls back from the ECB table to the central bank that issues the target or source currency (USD/GBP, GBP/JPY, USD/INR now answer keyless), same as the hosted endpoint; response addsbank. Dated-table errors say a paid plan is needed. README: real response shapes, tool counts, lifetime free tier - 0.7.0 —
get_reference_rate(Daily Reference Rate, 16:00 London, keyless latest table) andrequest_trial_key(self-issued 100-call trial key adopted for the session)
🔗 Links
- API documentation · Interactive reference
- Register (free) · Pricing
- MCP protocol docs
- GitHub · Bug reports
- Support: [email protected]
- Dashboard
- Status
- Postman collection
- ChatGPT app — ask ChatGPT for live and official central bank rates
📜 License
MIT — see LICENSE.
來源:README.md,提交 ac1e256
工具
0版本歷史
1- v0.5.0最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分