@coinpaprika/mcp 1.0.0 → 1.1.1
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/CHANGELOG.md +22 -0
- package/dist/index.js +11 -4
- package/package.json +3 -2
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,28 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to the CoinPaprika MCP Server will be documented in this file.
|
|
4
4
|
|
|
5
|
+
## [1.1.1] - 2026-05-05
|
|
6
|
+
|
|
7
|
+
### Fixed
|
|
8
|
+
- **Authorization header format** — now sends `Authorization: <key>` (bare) instead of `Authorization: Bearer <key>`. The `Bearer` prefix was rejected by the api-pro Cloudflare WAF with HTTP 403, which silently broke every authenticated request from this MCP server.
|
|
9
|
+
- **Base URL routing** — when `COINPAPRIKA_API_KEY` is set, requests now route through `https://api-pro.coinpaprika.com/v1` instead of the free base. Six paid-tier tools (`getCoinOHLCVHistorical`, `getTickersHistoricalById`, `getHistoricalTickerByContract`, `getMappings`, `getChangelogIDs`, `keyInfo`) were unreachable in 1.1.0 because the free base rejected them with HTTP 402.
|
|
10
|
+
|
|
11
|
+
Combined, these two bugs meant that `@coinpaprika/mcp@1.1.0` could not authenticate against the paid API at all. Upgrading to `1.1.1` is required for any user with a `COINPAPRIKA_API_KEY` set.
|
|
12
|
+
|
|
13
|
+
## [1.1.0] - 2026-04-02
|
|
14
|
+
|
|
15
|
+
### Added
|
|
16
|
+
- Dockerfile for containerized deployment
|
|
17
|
+
- Smoke test suite (`npm test`) verifying server initialization, tool listing, and live API calls
|
|
18
|
+
- Test script for CI/CD integration
|
|
19
|
+
|
|
20
|
+
### Changed
|
|
21
|
+
- Bumped version to 1.1.0
|
|
22
|
+
- Updated HOSTED-MCP-SPEC.md to reflect hosted/self-hosted tool parity
|
|
23
|
+
|
|
24
|
+
### Fixed
|
|
25
|
+
- Hosted MCP server at mcp.coinpaprika.com now exposes `getCapabilities` tool (was missing, only available in self-hosted). Both versions now have 30 identical tools.
|
|
26
|
+
|
|
5
27
|
## [1.0.0] - 2026-03-19
|
|
6
28
|
|
|
7
29
|
### Added
|
package/dist/index.js
CHANGED
|
@@ -3,15 +3,20 @@ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
|
|
|
3
3
|
import fetch from 'node-fetch';
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
|
|
6
|
-
// Base URL for CoinPaprika API
|
|
7
|
-
const API_BASE_URL = 'https://api.coinpaprika.com/v1';
|
|
8
|
-
|
|
9
6
|
// Server version
|
|
10
7
|
const SERVER_VERSION = '1.0.0';
|
|
11
8
|
|
|
12
9
|
// Optional API key from environment
|
|
13
10
|
const API_KEY = process.env.COINPAPRIKA_API_KEY || '';
|
|
14
11
|
|
|
12
|
+
// Base URL for CoinPaprika API.
|
|
13
|
+
// Free tier uses api.coinpaprika.com; paid plans use api-pro.coinpaprika.com.
|
|
14
|
+
// Same key, different host. Hitting the free host with a paid key still
|
|
15
|
+
// returns data but applies free-tier limits and omits paid-tier fields.
|
|
16
|
+
const API_FREE_URL = 'https://api.coinpaprika.com/v1';
|
|
17
|
+
const API_PRO_URL = 'https://api-pro.coinpaprika.com/v1';
|
|
18
|
+
const API_BASE_URL = API_KEY ? API_PRO_URL : API_FREE_URL;
|
|
19
|
+
|
|
15
20
|
// Error code constants
|
|
16
21
|
const ErrorCodes = {
|
|
17
22
|
CP400_INVALID_COIN_ID: "CP400_INVALID_COIN_ID",
|
|
@@ -157,7 +162,9 @@ const RATE_LIMIT = 10000;
|
|
|
157
162
|
function buildHeaders() {
|
|
158
163
|
const headers = { 'content-type': 'application/json' };
|
|
159
164
|
if (API_KEY) {
|
|
160
|
-
|
|
165
|
+
// CoinPaprika expects the bare API key. The "Bearer" prefix triggers a
|
|
166
|
+
// Cloudflare WAF block on api-pro and returns HTTP 403.
|
|
167
|
+
headers['Authorization'] = API_KEY;
|
|
161
168
|
}
|
|
162
169
|
return headers;
|
|
163
170
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@coinpaprika/mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "A Model Context Protocol server for CoinPaprika cryptocurrency market data — prices, tickers, exchanges, and more",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -16,7 +16,8 @@
|
|
|
16
16
|
"scripts": {
|
|
17
17
|
"build": "mkdir -p dist && cp -r src/* dist/ && chmod +x dist/bin.js",
|
|
18
18
|
"prepublishOnly": "npm run build",
|
|
19
|
-
"start": "node src/index.js"
|
|
19
|
+
"start": "node src/index.js",
|
|
20
|
+
"test": "node test/smoke.js"
|
|
20
21
|
},
|
|
21
22
|
"keywords": [
|
|
22
23
|
"mcp",
|