@allratestoday/mcp-server 0.3.0 → 0.3.2

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,52 +1,113 @@
1
1
  # AllRatesToday MCP Server
2
2
 
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
+ [![npm downloads](https://img.shields.io/npm/dm/@allratestoday/mcp-server.svg?style=flat-square)](https://www.npmjs.com/package/@allratestoday/mcp-server)
5
+ [![License](https://img.shields.io/badge/license-MIT-green.svg?style=flat-square)](./LICENSE)
6
+ [![MCP](https://img.shields.io/badge/Model%20Context%20Protocol-1.x-blue.svg?style=flat-square)](https://modelcontextprotocol.io)
7
+
3
8
  English | [简体中文](./README-zh-CN.md)
4
9
 
5
- MCP server that gives AI coding tools **Claude Code**, **Cursor**, **Claude Desktop**, and any other Model Context Protocol client — real-time currency exchange rates, historical data, and financial news from [AllRatesToday](https://allratestoday.com).
10
+ > Give your AI coding assistant a live window into the foreign-exchange market.
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 from the [AllRatesToday API](https://allratestoday.com).
6
13
 
7
- Ask your assistant things like:
14
+ After installation, your assistant can answer questions like:
8
15
 
9
16
  - *"What's the current USD to EUR rate?"*
10
- - *"Show me the GBP/JPY rate over the last 30 days."*
11
- - *"Convert 250 USD into CAD using a real rate."*
17
+ - *"Show me how GBP/JPY moved over the last 30 days."*
18
+ - *"Convert 250 USD into CAD at a real rate."*
19
+ - *"Compare USD against EUR, GBP, and JPY simultaneously."*
12
20
  - *"List every supported currency."*
13
21
 
14
- ## Get an API key first (required)
22
+ ---
23
+
24
+ ## Table of contents
25
+
26
+ - [What you get](#what-you-get)
27
+ - [Get an API key (required)](#get-an-api-key-required)
28
+ - [Install](#install)
29
+ - [Quick setup per client](#quick-setup-per-client)
30
+ - [Claude Code](#claude-code)
31
+ - [Cursor](#cursor)
32
+ - [Claude Desktop](#claude-desktop)
33
+ - [Windsurf](#windsurf)
34
+ - [Generic stdio MCP client](#generic-stdio-mcp-client)
35
+ - [Verify it works](#verify-it-works)
36
+ - [Tools reference](#tools-reference)
37
+ - [Environment variables](#environment-variables)
38
+ - [Plans and limits](#plans-and-limits)
39
+ - [Troubleshooting](#troubleshooting)
40
+ - [Error reference](#error-reference)
41
+ - [FAQ](#faq)
42
+ - [Development](#development)
43
+ - [Changelog](#changelog)
44
+ - [Support](#support)
45
+ - [License](#license)
46
+
47
+ ---
48
+
49
+ ## What you get
50
+
51
+ | Capability | Detail |
52
+ |---|---|
53
+ | **Currencies** | 150+ ISO 4217 codes, all major and most exotics |
54
+ | **Update frequency** | Mid-market rates refresh every ~60 seconds |
55
+ | **Data source** | Tier-1 financial data providers (Reuters / Refinitiv-class) |
56
+ | **Historical depth** | Up to 1 year via `1d` / `7d` / `30d` / `1y` granularity |
57
+ | **Tools exposed** | 4 — `get_exchange_rate`, `get_historical_rates`, `get_rates_authenticated`, `list_currencies` |
58
+ | **Transport** | stdio (subprocess), MCP 1.x compatible |
59
+ | **Runtime** | Node.js ≥18 |
60
+
61
+ ---
62
+
63
+ ## Get an API key (required)
15
64
 
16
- The MCP server needs an AllRatesToday API key to start. **The free plan is enough** — 300 requests/month, no card required.
65
+ The server **will not start** without a valid `ALLRATES_API_KEY`. The free plan is enough for development and personal use **300 requests/month, no credit card**.
17
66
 
18
- 1. Register at [allratestoday.com/register](https://allratestoday.com/register) — takes 30 seconds
67
+ 1. Register at [allratestoday.com/register](https://allratestoday.com/register) — 30 seconds
19
68
  2. Verify your email
20
- 3. Copy your key from the dashboard it looks like `art_live_xxxxx`
21
- 4. Set it as `ALLRATES_API_KEY` in your MCP client config (examples below)
69
+ 3. Copy your key from the dashboard (format: `art_live_xxxxx`)
70
+ 4. Use it as `ALLRATES_API_KEY` in the configs below
22
71
 
23
- The server will refuse to start without a key and print registration instructions in the console.
72
+ If you forget, the server prints clear registration instructions on stderr and exits with code 1.
73
+
74
+ ---
24
75
 
25
76
  ## Install
26
77
 
78
+ The server is published as an npm package. The simplest install is **zero-install via `npx`**, which is what every config below uses.
79
+
27
80
  ```bash
81
+ # Run without installing (recommended)
82
+ npx -y @allratestoday/mcp-server
83
+
84
+ # Or install globally
28
85
  npm install -g @allratestoday/mcp-server
86
+ allratestoday-mcp
29
87
  ```
30
88
 
31
- Or run without installing via `npx @allratestoday/mcp-server`.
89
+ Both 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.
32
90
 
33
- ## Quick setup
91
+ ---
34
92
 
35
- ### Claude Code
93
+ ## Quick setup per client
36
94
 
37
- ```bash
38
- claude mcp add allratestoday -- npx -y @allratestoday/mcp-server
39
- ```
95
+ Each client reads MCP servers from a different config file. Pick yours below.
40
96
 
41
- Then set your API key:
97
+ ### Claude Code
98
+
99
+ The fastest path uses the built-in CLI:
42
100
 
43
101
  ```bash
102
+ claude mcp add allratestoday -- npx -y @allratestoday/mcp-server
44
103
  claude mcp env allratestoday ALLRATES_API_KEY=art_live_xxxxx
45
104
  ```
46
105
 
106
+ Restart Claude Code. Verify by asking it: *"What's the current USD to EUR rate?"*
107
+
47
108
  ### Cursor
48
109
 
49
- Edit `~/.cursor/mcp.json` (or your project `.cursor/mcp.json`):
110
+ Edit `~/.cursor/mcp.json` (or `.cursor/mcp.json` inside your project for project-scoped servers):
50
111
 
51
112
  ```json
52
113
  {
@@ -62,9 +123,17 @@ Edit `~/.cursor/mcp.json` (or your project `.cursor/mcp.json`):
62
123
  }
63
124
  ```
64
125
 
126
+ Restart Cursor. The four tools should appear in the MCP tool picker.
127
+
65
128
  ### Claude Desktop
66
129
 
67
- Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) or `%APPDATA%\Claude\claude_desktop_config.json` (Windows):
130
+ Edit the config file (path depends on OS):
131
+
132
+ | OS | Path |
133
+ |---|---|
134
+ | macOS | `~/Library/Application Support/Claude/claude_desktop_config.json` |
135
+ | Windows | `%APPDATA%\Claude\claude_desktop_config.json` |
136
+ | Linux | `~/.config/Claude/claude_desktop_config.json` |
68
137
 
69
138
  ```json
70
139
  {
@@ -80,40 +149,333 @@ Edit `~/Library/Application Support/Claude/claude_desktop_config.json` (macOS) o
80
149
  }
81
150
  ```
82
151
 
83
- Restart the app after editing.
152
+ **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.
153
+
154
+ ### Windsurf
84
155
 
85
- ## Plans
156
+ Edit `~/.codeium/windsurf/mcp_config.json`:
86
157
 
87
- The free plan includes 300 requests/month. Paid plans start at €4.99/mo for higher limits and historical data going back years. See [allratestoday.com/pricing](https://allratestoday.com/pricing).
158
+ ```json
159
+ {
160
+ "mcpServers": {
161
+ "allratestoday": {
162
+ "command": "npx",
163
+ "args": ["-y", "@allratestoday/mcp-server"],
164
+ "env": {
165
+ "ALLRATES_API_KEY": "art_live_xxxxx"
166
+ }
167
+ }
168
+ }
169
+ }
170
+ ```
171
+
172
+ Restart Windsurf.
173
+
174
+ ### Generic stdio MCP client
175
+
176
+ Any MCP host that supports stdio transport works. The launch command is:
177
+
178
+ ```
179
+ npx -y @allratestoday/mcp-server
180
+ ```
88
181
 
89
- ## Tools exposed
182
+ …with the environment variable `ALLRATES_API_KEY` set. The protocol version is MCP 1.x.
90
183
 
91
- All four tools require an `ALLRATES_API_KEY`.
184
+ ---
92
185
 
93
- | Tool | Description |
186
+ ## Verify it works
187
+
188
+ After configuring your client, test in this order:
189
+
190
+ 1. **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](#troubleshooting)).
191
+
192
+ 2. **Tools are listed** — most clients have a "tools" or "MCP" panel. You should see:
193
+ - `get_exchange_rate`
194
+ - `get_historical_rates`
195
+ - `get_rates_authenticated`
196
+ - `list_currencies`
197
+
198
+ 3. **A live call returns a number** — ask the assistant:
199
+
200
+ > *What's the current USD to EUR rate?*
201
+
202
+ 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.
203
+
204
+ ---
205
+
206
+ ## Tools reference
207
+
208
+ All four tools require `ALLRATES_API_KEY`.
209
+
210
+ ### `get_exchange_rate`
211
+
212
+ Current mid-market rate between two currencies.
213
+
214
+ **Input**
215
+
216
+ | Field | Type | Required | Description |
217
+ |---|---|---|---|
218
+ | `source` | string | yes | 3-letter ISO 4217 code, e.g. `USD` |
219
+ | `target` | string | yes | 3-letter ISO 4217 code, e.g. `EUR` |
220
+
221
+ **Example call**
222
+
223
+ ```json
224
+ { "source": "USD", "target": "EUR" }
225
+ ```
226
+
227
+ **Example response**
228
+
229
+ ```json
230
+ { "rate": 0.92145, "source": "wise" }
231
+ ```
232
+
233
+ ### `get_historical_rates`
234
+
235
+ Time-series data points for a currency pair over a fixed period.
236
+
237
+ **Input**
238
+
239
+ | Field | Type | Required | Description |
240
+ |---|---|---|---|
241
+ | `source` | string | yes | Source currency code |
242
+ | `target` | string | yes | Target currency code |
243
+ | `period` | string | no (default `7d`) | One of `1d`, `7d`, `30d`, `1y` |
244
+
245
+ **Granularity by period**
246
+
247
+ | `period` | Data points |
94
248
  |---|---|
95
- | `get_exchange_rate` | Current mid-market rate between two currencies. |
96
- | `get_historical_rates` | Historical data points over `1d`, `7d`, `30d`, or `1y`. |
97
- | `get_rates_authenticated` | Multi-target rates and higher limits. |
98
- | `list_currencies` | All supported currencies with codes, names, symbols. |
249
+ | `1d` | Hourly (24 points) |
250
+ | `7d` | Daily (7 points) |
251
+ | `30d` | Daily (30 points) |
252
+ | `1y` | Weekly (52 points) |
253
+
254
+ **Example call**
255
+
256
+ ```json
257
+ { "source": "USD", "target": "INR", "period": "30d" }
258
+ ```
259
+
260
+ **Example response (truncated)**
261
+
262
+ ```json
263
+ {
264
+ "source": "USD",
265
+ "target": "INR",
266
+ "period": "30d",
267
+ "data": [
268
+ { "date": "2026-03-27T00:00:00Z", "rate": 83.42, "timestamp": 1743033600000 },
269
+ { "date": "2026-03-28T00:00:00Z", "rate": 83.51, "timestamp": 1743120000000 },
270
+ "..."
271
+ ]
272
+ }
273
+ ```
274
+
275
+ ### `get_rates_authenticated`
276
+
277
+ Multiple targets in one call, with optional historical timestamp or grouping window.
278
+
279
+ **Input**
280
+
281
+ | Field | Type | Required | Description |
282
+ |---|---|---|---|
283
+ | `source` | string | yes | Source currency code |
284
+ | `target` | string | yes | One or more codes, comma-separated (`EUR,GBP,JPY`) |
285
+ | `time` | string (ISO 8601) | no | Historical point in time |
286
+ | `group` | string | no | One of `hour`, `day`, `week`, `month` |
287
+
288
+ **Example call**
289
+
290
+ ```json
291
+ { "source": "USD", "target": "EUR,GBP,JPY" }
292
+ ```
293
+
294
+ **Example response**
295
+
296
+ ```json
297
+ [
298
+ { "rate": 0.9214, "source": "USD", "target": "EUR", "time": "2026-04-26T11:00:00Z" },
299
+ { "rate": 0.7891, "source": "USD", "target": "GBP", "time": "2026-04-26T11:00:00Z" },
300
+ { "rate": 151.34, "source": "USD", "target": "JPY", "time": "2026-04-26T11:00:00Z" }
301
+ ]
302
+ ```
303
+
304
+ ### `list_currencies`
305
+
306
+ All supported currencies with codes, names, and symbols. Cached upstream for 24 hours.
307
+
308
+ **Input** — none.
309
+
310
+ **Example response (truncated)**
311
+
312
+ ```json
313
+ {
314
+ "currencies": [
315
+ { "code": "USD", "name": "US Dollar", "symbol": "$" },
316
+ { "code": "EUR", "name": "Euro", "symbol": "€" },
317
+ { "code": "GBP", "name": "British Pound", "symbol": "£" },
318
+ "..."
319
+ ],
320
+ "count": 162
321
+ }
322
+ ```
323
+
324
+ ---
99
325
 
100
326
  ## Environment variables
101
327
 
102
- | Variable | Default | Purpose |
328
+ | Variable | Default | Required | Purpose |
329
+ |---|---|---|---|
330
+ | `ALLRATES_API_KEY` | — | **yes** | Your API key. The server exits at startup if unset. |
331
+ | `ALLRATES_BASE_URL` | `https://allratestoday.com/api` | no | Override for self-hosted or staging deployments. |
332
+
333
+ 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.
334
+
335
+ ---
336
+
337
+ ## Plans and limits
338
+
339
+ | Plan | Monthly requests | Price |
340
+ |---|---|---|
341
+ | **Free** | 300 | €0 |
342
+ | **Small** | 5,000 | €4.99/mo |
343
+ | **Medium** | 10,000 | €9.99/mo |
344
+ | **Large** | 100,000 | €49.99/mo |
345
+
346
+ Full pricing at [allratestoday.com/pricing](https://allratestoday.com/pricing). All plans include the same currency coverage and historical depth — only the request quotas differ.
347
+
348
+ ---
349
+
350
+ ## Troubleshooting
351
+
352
+ | Symptom | Likely cause | Fix |
353
+ |---|---|---|
354
+ | 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 |
355
+ | 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 |
356
+ | Tools return "AllRatesToday API quota exceeded" | Free-tier 300 req/month limit hit | Wait until next month or upgrade plan |
357
+ | Historical tool returns "Bad request" | Invalid period or unknown currency code | Period must be `1d`/`7d`/`30d`/`1y`; codes must be 3 letters |
358
+ | Server starts but tools never appear in client | Client didn't reload after config change | Fully quit (not just close) and reopen the client |
359
+ | `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 |
360
+
361
+ ### Inspect server logs
362
+
363
+ To see what the server is doing, run it manually with the API key set:
364
+
365
+ ```bash
366
+ ALLRATES_API_KEY=art_live_xxxxx npx -y @allratestoday/mcp-server
367
+ ```
368
+
369
+ You should see no output when healthy (stdio is reserved for the MCP protocol). Any errors print to stderr.
370
+
371
+ ---
372
+
373
+ ## Error reference
374
+
375
+ The server maps API errors to clear, actionable messages.
376
+
377
+ | HTTP status | Meaning | Tool error message |
103
378
  |---|---|---|
104
- | `ALLRATES_API_KEY` | *(required)* | Your AllRatesToday API key. Server will not start without it. |
105
- | `ALLRATES_BASE_URL` | `https://allratestoday.com/api` | Override for self-hosted or staging environments. |
379
+ | 200 | Success | (rate returned) |
380
+ | 400 | Bad request — usually unknown currency code | `Bad request possibly an unknown currency code` |
381
+ | 401 | Invalid or missing API key | `Invalid AllRatesToday API key` |
382
+ | 429 | Quota exceeded | `AllRatesToday API quota exceeded` |
383
+ | 5xx | Server-side issue at allratestoday.com | `HTTP 5xx — <upstream message>` |
384
+
385
+ 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."*
386
+
387
+ ---
388
+
389
+ ## FAQ
390
+
391
+ **Is the free plan really enough for normal use?**
392
+ Yes for personal/dev use. 300 requests/month covers ~10 questions per day. Heavy interactive use, multiple chat sessions per day, or running the server in production should consider the paid tiers.
393
+
394
+ **Do you store my conversation or query data?**
395
+ 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.
396
+
397
+ **What happens to my API key?**
398
+ 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.
399
+
400
+ **Why is my historical request slow on first call?**
401
+ Cold-start of `npx` (first run downloads the package) plus the initial AllRatesToday cache miss. Subsequent calls are fast (<200ms typically).
402
+
403
+ **Can I run this without npm/Node?**
404
+ Not currently — Node ≥18 is required. We've considered a standalone binary; if that matters to you, open an issue.
405
+
406
+ **Is there a self-hosted option?**
407
+ Yes, set `ALLRATES_BASE_URL` to your own AllRatesToday instance. Contact support@allratestoday.com for self-hosted licensing.
408
+
409
+ **Does this work with ChatGPT?**
410
+ The Anthropic MCP standard works with any MCP-compatible client. ChatGPT Desktop has experimental MCP support; check OpenAI's docs for current status.
411
+
412
+ ---
106
413
 
107
414
  ## Development
108
415
 
109
416
  ```bash
110
- git clone https://github.com/cahthuranag/mcp-server.git
111
- cd mcp-server
417
+ git clone https://github.com/cahthuranag/realtime-exchange-rate-mcp.git
418
+ cd realtime-exchange-rate-mcp
112
419
  npm install
113
420
  npm run build
114
- node dist/index.js # server runs on stdio — hit Ctrl+C to exit
421
+ ALLRATES_API_KEY=art_live_xxxxx node dist/index.js
422
+ ```
423
+
424
+ The server runs on stdio and waits for an MCP client to connect. Hit Ctrl+C to exit.
425
+
426
+ To watch and rebuild on changes during development:
427
+
428
+ ```bash
429
+ npm run dev
115
430
  ```
116
431
 
432
+ To test against a local AllRatesToday instance:
433
+
434
+ ```bash
435
+ ALLRATES_BASE_URL=http://localhost:8080/api ALLRATES_API_KEY=test_key node dist/index.js
436
+ ```
437
+
438
+ ### Project structure
439
+
440
+ ```
441
+ src/
442
+ ├── index.ts # MCP server, tool registration, request handlers
443
+ └── client.ts # HTTP client for AllRatesToday API + error mapping
444
+ dist/ # Compiled JS (gitignored)
445
+ server.json # MCP registry manifest
446
+ package.json # npm metadata, dependencies, scripts
447
+ ```
448
+
449
+ ### Contributing
450
+
451
+ Issues and PRs welcome at [github.com/cahthuranag/realtime-exchange-rate-mcp](https://github.com/cahthuranag/realtime-exchange-rate-mcp). Before opening a PR:
452
+
453
+ 1. `npm run build` should succeed with no errors
454
+ 2. Test against a real AllRatesToday API key (set in `ALLRATES_API_KEY`)
455
+ 3. Update tool descriptions in `src/index.ts` if you change tool behavior
456
+ 4. Update this README's "Tools reference" section if you add or rename a tool
457
+
458
+ ---
459
+
460
+ ## Changelog
461
+
462
+ See [GitHub Releases](https://github.com/cahthuranag/realtime-exchange-rate-mcp/releases) for the full list. Recent highlights:
463
+
464
+ - **0.3.x** — API key required for all tools; fail-fast at startup with clear error
465
+ - **0.2.x** — Removed news tool, required auth on `get_historical_rates`
466
+ - **0.1.x** — Initial release with 5 tools
467
+
468
+ ---
469
+
470
+ ## Support
471
+
472
+ - **API issues**: [support@allratestoday.com](mailto:support@allratestoday.com)
473
+ - **Bug reports**: [github.com/cahthuranag/realtime-exchange-rate-mcp/issues](https://github.com/cahthuranag/realtime-exchange-rate-mcp/issues)
474
+ - **MCP questions**: [modelcontextprotocol.io](https://modelcontextprotocol.io) — protocol docs
475
+ - **Status / uptime**: [allratestoday.com](https://allratestoday.com) (status page in development)
476
+
477
+ ---
478
+
117
479
  ## License
118
480
 
119
481
  MIT — see [LICENSE](./LICENSE).
package/dist/client.js CHANGED
@@ -1,5 +1,5 @@
1
1
  const DEFAULT_BASE_URL = 'https://allratestoday.com/api';
2
- const USER_AGENT = `allratestoday-mcp/0.3.0`;
2
+ const USER_AGENT = `allratestoday-mcp/0.3.1`;
3
3
  export class AllRatesTodayError extends Error {
4
4
  status;
5
5
  body;
package/dist/index.js CHANGED
@@ -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: 'allratestoday-mcp', version: '0.3.0' }, { 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,7 +1,7 @@
1
1
  {
2
2
  "name": "@allratestoday/mcp-server",
3
- "version": "0.3.0",
4
- "mcpName": "io.github.cahthuranag/mcp-server",
3
+ "version": "0.3.2",
4
+ "mcpName": "io.github.cahthuranag/realtime-exchange-rate-mcp",
5
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",
@@ -17,9 +17,9 @@
17
17
  "homepage": "https://allratestoday.com",
18
18
  "repository": {
19
19
  "type": "git",
20
- "url": "git+https://github.com/cahthuranag/mcp-server.git"
20
+ "url": "git+https://github.com/cahthuranag/realtime-exchange-rate-mcp.git"
21
21
  },
22
- "bugs": "https://github.com/cahthuranag/mcp-server/issues",
22
+ "bugs": "https://github.com/cahthuranag/realtime-exchange-rate-mcp/issues",
23
23
  "type": "module",
24
24
  "main": "dist/index.js",
25
25
  "bin": {