@allratestoday/mcp-server 0.3.3 → 0.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # Realtime Exchange Rate MCP Server
1
+ # AllRatesToday MCP Server
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/@allratestoday/mcp-server.svg?style=flat-square)](https://www.npmjs.com/package/@allratestoday/mcp-server)
4
4
  [![npm downloads](https://img.shields.io/npm/dm/@allratestoday/mcp-server.svg?style=flat-square)](https://www.npmjs.com/package/@allratestoday/mcp-server)
@@ -9,7 +9,7 @@ English | [简体中文](./README-zh-CN.md)
9
9
 
10
10
  > Give your AI coding assistant a live window into the foreign-exchange market.
11
11
 
12
- 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.
12
+ 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](https://allratestoday.com).
13
13
 
14
14
  After installation, your assistant can answer questions like:
15
15
 
@@ -35,6 +35,7 @@ After installation, your assistant can answer questions like:
35
35
  - [Verify it works](#verify-it-works)
36
36
  - [Tools reference](#tools-reference)
37
37
  - [Environment variables](#environment-variables)
38
+ - [Plans and limits](#plans-and-limits)
38
39
  - [Troubleshooting](#troubleshooting)
39
40
  - [Error reference](#error-reference)
40
41
  - [FAQ](#faq)
@@ -51,6 +52,7 @@ After installation, your assistant can answer questions like:
51
52
  |---|---|
52
53
  | **Currencies** | 150+ ISO 4217 codes, all major and most exotics |
53
54
  | **Update frequency** | Mid-market rates refresh every ~60 seconds |
55
+ | **Data source** | Tier-1 financial data providers (Reuters / Refinitiv-class) |
54
56
  | **Historical depth** | Up to 1 year via `1d` / `7d` / `30d` / `1y` granularity |
55
57
  | **Tools exposed** | 4 — `get_exchange_rate`, `get_historical_rates`, `get_rates_authenticated`, `list_currencies` |
56
58
  | **Transport** | stdio (subprocess), MCP 1.x compatible |
@@ -60,14 +62,14 @@ After installation, your assistant can answer questions like:
60
62
 
61
63
  ## Get an API key (required)
62
64
 
63
- The server **will not start** without a valid `ALLRATES_API_KEY`. Rates are served by [AllRatesToday](https://allratestoday.com); a free key is enough for development and personal use.
65
+ 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**.
64
66
 
65
- 1. Register at [allratestoday.com/register](https://allratestoday.com/register)
67
+ 1. Register at [allratestoday.com/register](https://allratestoday.com/register) — 30 seconds
66
68
  2. Verify your email
67
69
  3. Copy your key from the dashboard (format: `art_live_xxxxx`)
68
70
  4. Use it as `ALLRATES_API_KEY` in the configs below
69
71
 
70
- If the key is missing, the server prints clear registration instructions on stderr and exits with code 1.
72
+ If you forget, the server prints clear registration instructions on stderr and exits with code 1.
71
73
 
72
74
  ---
73
75
 
@@ -203,7 +205,7 @@ After configuring your client, test in this order:
203
205
 
204
206
  ## Tools reference
205
207
 
206
- All four tools require an API key.
208
+ All four tools require `ALLRATES_API_KEY`.
207
209
 
208
210
  ### `get_exchange_rate`
209
211
 
@@ -332,13 +334,19 @@ You set these in your MCP client's config (in the `env` block) — not in your s
332
334
 
333
335
  ---
334
336
 
337
+ ## Plans
338
+
339
+ A free tier and paid plans are available. See [allratestoday.com/pricing](https://allratestoday.com/pricing) for current quotas. All plans include the same currency coverage and historical depth — only the request quotas differ.
340
+
341
+ ---
342
+
335
343
  ## Troubleshooting
336
344
 
337
345
  | Symptom | Likely cause | Fix |
338
346
  |---|---|---|
339
347
  | Client shows "MCP server failed to start" or red dot | `ALLRATES_API_KEY` not set or invalid | Verify the key in your client config; check it matches the dashboard |
340
- | Tools show but every call returns "Invalid API key" | Key is malformed (missing prefix, truncated, or revoked) | Copy a fresh key from the dashboard |
341
- | Tools return "API quota exceeded" | Plan request limit hit | Wait until next month or upgrade plan |
348
+ | 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 |
349
+ | Tools return "AllRatesToday API quota exceeded" | Free-tier monthly limit hit | Wait until next month or upgrade plan |
342
350
  | Historical tool returns "Bad request" | Invalid period or unknown currency code | Period must be `1d`/`7d`/`30d`/`1y`; codes must be 3 letters |
343
351
  | Server starts but tools never appear in client | Client didn't reload after config change | Fully quit (not just close) and reopen the client |
344
352
  | `npx` runs but hangs forever | 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 |
@@ -363,9 +371,9 @@ The server maps API errors to clear, actionable messages.
363
371
  |---|---|---|
364
372
  | 200 | Success | (rate returned) |
365
373
  | 400 | Bad request — usually unknown currency code | `Bad request — possibly an unknown currency code` |
366
- | 401 | Invalid or missing API key | `Invalid API key` |
367
- | 429 | Quota exceeded | `API quota exceeded` |
368
- | 5xx | Upstream server-side issue | `HTTP 5xx — <upstream message>` |
374
+ | 401 | Invalid or missing API key | `Invalid AllRatesToday API key` |
375
+ | 429 | Quota exceeded | `AllRatesToday API quota exceeded` |
376
+ | 5xx | Server-side issue at allratestoday.com | `HTTP 5xx — <upstream message>` |
369
377
 
370
378
  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."*
371
379
 
@@ -373,20 +381,23 @@ The LLM will surface these messages in its response, so a user prompt that hits
373
381
 
374
382
  ## FAQ
375
383
 
384
+ **Is the free plan really enough for normal use?**
385
+ 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.
386
+
376
387
  **Do you store my conversation or query data?**
377
- No. Only your API key and the request parameters (source, target, period, time) are sent to the upstream API — never the LLM's conversation context, sheet contents, or anything else.
388
+ 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.
378
389
 
379
390
  **What happens to my API key?**
380
- It's only sent as a `Bearer` token in the `Authorization` header on requests to the upstream API. It's never logged or transmitted elsewhere.
391
+ 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.
381
392
 
382
393
  **Why is my historical request slow on first call?**
383
- Cold-start of `npx` (first run downloads the package) plus an initial upstream cache miss. Subsequent calls are fast (<200ms typically).
394
+ Cold-start of `npx` (first run downloads the package) plus the initial AllRatesToday cache miss. Subsequent calls are fast (<200ms typically).
384
395
 
385
396
  **Can I run this without npm/Node?**
386
397
  Not currently — Node ≥18 is required. We've considered a standalone binary; if that matters to you, open an issue.
387
398
 
388
399
  **Is there a self-hosted option?**
389
- Yes, set `ALLRATES_BASE_URL` to point to your own instance.
400
+ Yes, set `ALLRATES_BASE_URL` to your own AllRatesToday instance. Contact support@allratestoday.com for self-hosted licensing.
390
401
 
391
402
  **Does this work with ChatGPT?**
392
403
  The Anthropic MCP standard works with any MCP-compatible client. ChatGPT Desktop has experimental MCP support; check OpenAI's docs for current status.
@@ -396,8 +407,8 @@ The Anthropic MCP standard works with any MCP-compatible client. ChatGPT Desktop
396
407
  ## Development
397
408
 
398
409
  ```bash
399
- git clone https://github.com/cahthuranag/realtime-exchange-rate-mcp.git
400
- cd realtime-exchange-rate-mcp
410
+ git clone https://github.com/cahthuranag/mcp-server.git
411
+ cd mcp-server
401
412
  npm install
402
413
  npm run build
403
414
  ALLRATES_API_KEY=art_live_xxxxx node dist/index.js
@@ -411,7 +422,7 @@ To watch and rebuild on changes during development:
411
422
  npm run dev
412
423
  ```
413
424
 
414
- To test against a local instance:
425
+ To test against a local AllRatesToday instance:
415
426
 
416
427
  ```bash
417
428
  ALLRATES_BASE_URL=http://localhost:8080/api ALLRATES_API_KEY=test_key node dist/index.js
@@ -422,7 +433,7 @@ ALLRATES_BASE_URL=http://localhost:8080/api ALLRATES_API_KEY=test_key node dist/
422
433
  ```
423
434
  src/
424
435
  ├── index.ts # MCP server, tool registration, request handlers
425
- └── client.ts # HTTP client + error mapping
436
+ └── client.ts # HTTP client for AllRatesToday API + error mapping
426
437
  dist/ # Compiled JS (gitignored)
427
438
  server.json # MCP registry manifest
428
439
  package.json # npm metadata, dependencies, scripts
@@ -430,10 +441,10 @@ package.json # npm metadata, dependencies, scripts
430
441
 
431
442
  ### Contributing
432
443
 
433
- Issues and PRs welcome at [github.com/cahthuranag/realtime-exchange-rate-mcp](https://github.com/cahthuranag/realtime-exchange-rate-mcp). Before opening a PR:
444
+ Issues and PRs welcome at [github.com/cahthuranag/mcp-server](https://github.com/cahthuranag/mcp-server). Before opening a PR:
434
445
 
435
446
  1. `npm run build` should succeed with no errors
436
- 2. Test against a real API key (set in `ALLRATES_API_KEY`)
447
+ 2. Test against a real AllRatesToday API key (set in `ALLRATES_API_KEY`)
437
448
  3. Update tool descriptions in `src/index.ts` if you change tool behavior
438
449
  4. Update this README's "Tools reference" section if you add or rename a tool
439
450
 
@@ -441,7 +452,7 @@ Issues and PRs welcome at [github.com/cahthuranag/realtime-exchange-rate-mcp](ht
441
452
 
442
453
  ## Changelog
443
454
 
444
- See [GitHub Releases](https://github.com/cahthuranag/realtime-exchange-rate-mcp/releases) for the full list. Recent highlights:
455
+ See [GitHub Releases](https://github.com/cahthuranag/mcp-server/releases) for the full list. Recent highlights:
445
456
 
446
457
  - **0.3.x** — API key required for all tools; fail-fast at startup with clear error
447
458
  - **0.2.x** — Removed news tool, required auth on `get_historical_rates`
@@ -451,8 +462,10 @@ See [GitHub Releases](https://github.com/cahthuranag/realtime-exchange-rate-mcp/
451
462
 
452
463
  ## Support
453
464
 
454
- - **Bug reports**: [github.com/cahthuranag/realtime-exchange-rate-mcp/issues](https://github.com/cahthuranag/realtime-exchange-rate-mcp/issues)
465
+ - **API issues**: [support@allratestoday.com](mailto:support@allratestoday.com)
466
+ - **Bug reports**: [github.com/cahthuranag/mcp-server/issues](https://github.com/cahthuranag/mcp-server/issues)
455
467
  - **MCP questions**: [modelcontextprotocol.io](https://modelcontextprotocol.io) — protocol docs
468
+ - **Status / uptime**: [allratestoday.com](https://allratestoday.com) (status page in development)
456
469
 
457
470
  ---
458
471
 
package/dist/client.js CHANGED
@@ -30,7 +30,7 @@ export class AllRatesTodayClient {
30
30
  'User-Agent': USER_AGENT,
31
31
  };
32
32
  if (!this.apiKey) {
33
- throw new AllRatesTodayError('API key is required. Get one at https://allratestoday.com/register, then set ALLRATES_API_KEY in your MCP config.');
33
+ throw new AllRatesTodayError('AllRatesToday API key is required. Sign up free at https://allratestoday.com/register to get a key, then set ALLRATES_API_KEY in your MCP config.');
34
34
  }
35
35
  headers['Authorization'] = `Bearer ${this.apiKey}`;
36
36
  const res = await this.fetchImpl(url.toString(), { method: 'GET', headers });
package/dist/index.js CHANGED
@@ -12,7 +12,7 @@ const CCY = {
12
12
  const tools = [
13
13
  {
14
14
  name: 'get_exchange_rate',
15
- description: 'Get the current mid-market exchange rate between two currencies. Returns a single rate number. Requires API key (ALLRATES_API_KEY).',
15
+ description: 'Get the current mid-market exchange rate between two currencies. Returns a single rate number. Requires a free AllRatesToday API key (ALLRATES_API_KEY) — sign up at https://allratestoday.com/register.',
16
16
  inputSchema: {
17
17
  type: 'object',
18
18
  additionalProperties: false,
@@ -25,7 +25,7 @@ const tools = [
25
25
  },
26
26
  {
27
27
  name: 'get_historical_rates',
28
- description: 'Get historical exchange-rate data points for a currency pair over a period. Periods: 1d (hourly), 7d (daily), 30d (daily), 1y (weekly). Requires API key (ALLRATES_API_KEY).',
28
+ description: 'Get historical exchange-rate data points for a currency pair over a period. Periods: 1d (hourly), 7d (daily), 30d (daily), 1y (weekly). Requires an AllRatesToday API key (ALLRATES_API_KEY).',
29
29
  inputSchema: {
30
30
  type: 'object',
31
31
  additionalProperties: false,
@@ -44,7 +44,7 @@ const tools = [
44
44
  },
45
45
  {
46
46
  name: 'get_rates_authenticated',
47
- description: 'Get rates with higher limits and multi-target support. Requires API key (ALLRATES_API_KEY). Supports comma-separated targets like "EUR,GBP,JPY".',
47
+ description: 'Get rates with higher limits and multi-target support. Requires an AllRatesToday API key (ALLRATES_API_KEY). Supports comma-separated targets like "EUR,GBP,JPY".',
48
48
  inputSchema: {
49
49
  type: 'object',
50
50
  additionalProperties: false,
@@ -70,7 +70,7 @@ const tools = [
70
70
  },
71
71
  {
72
72
  name: 'list_currencies',
73
- description: 'List all supported currencies with code, name, and symbol. Requires API key (ALLRATES_API_KEY). Cached 24h upstream.',
73
+ description: 'List all supported currencies with code, name, and symbol. Requires a free AllRatesToday API key (ALLRATES_API_KEY) — sign up at https://allratestoday.com/register. Cached 24h upstream.',
74
74
  inputSchema: { type: 'object', additionalProperties: false, properties: {} },
75
75
  },
76
76
  ];
@@ -83,9 +83,9 @@ async function main() {
83
83
  if (!apiKey) {
84
84
  console.error([
85
85
  '',
86
- ' This MCP server requires an API key.',
86
+ ' AllRatesToday MCP server requires an API key.',
87
87
  '',
88
- ' 1. Get a free key at https://allratestoday.com/register',
88
+ ' 1. Sign up free at https://allratestoday.com/register (300 requests/month, no card required)',
89
89
  ' 2. Copy your API key from the dashboard',
90
90
  ' 3. Set ALLRATES_API_KEY in your MCP client config:',
91
91
  '',
@@ -102,7 +102,7 @@ async function main() {
102
102
  apiKey,
103
103
  baseUrl: process.env.ALLRATES_BASE_URL,
104
104
  });
105
- const server = new Server({ name: 'realtime-exchange-rate-mcp', version: '0.3.2' }, { capabilities: { tools: {} } });
105
+ const server = new Server({ name: 'allratestoday-mcp', version: '0.3.1' }, { capabilities: { tools: {} } });
106
106
  server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools }));
107
107
  server.setRequestHandler(CallToolRequestSchema, async (req) => {
108
108
  const { name, arguments: args = {} } = req.params;
package/package.json CHANGED
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "name": "@allratestoday/mcp-server",
3
- "version": "0.3.3",
4
- "mcpName": "io.github.cahthuranag/realtime-exchange-rate-mcp",
5
- "description": "MCP server that lets AI coding tools (Claude Code, Cursor, Claude Desktop) fetch real-time and historical currency exchange rates.",
3
+ "version": "0.3.4",
4
+ "mcpName": "io.github.cahthuranag/mcp-server",
5
+ "description": "MCP server for AllRatesToday — let AI coding tools (Claude Code, Cursor, Claude Desktop) fetch real-time and historical currency exchange rates.",
6
6
  "keywords": [
7
7
  "mcp",
8
8
  "model-context-protocol",
@@ -10,15 +10,16 @@
10
10
  "cursor",
11
11
  "currency",
12
12
  "exchange-rate",
13
- "forex"
13
+ "forex",
14
+ "allratestoday"
14
15
  ],
15
16
  "license": "MIT",
16
- "homepage": "https://github.com/cahthuranag/realtime-exchange-rate-mcp",
17
+ "homepage": "https://allratestoday.com",
17
18
  "repository": {
18
19
  "type": "git",
19
- "url": "git+https://github.com/cahthuranag/realtime-exchange-rate-mcp.git"
20
+ "url": "git+https://github.com/cahthuranag/mcp-server.git"
20
21
  },
21
- "bugs": "https://github.com/cahthuranag/realtime-exchange-rate-mcp/issues",
22
+ "bugs": "https://github.com/cahthuranag/mcp-server/issues",
22
23
  "type": "module",
23
24
  "main": "dist/index.js",
24
25
  "bin": {