@apiverve/mcp-server 1.0.0 → 1.1.0

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/LICENSE CHANGED
@@ -1,6 +1,6 @@
1
1
  MIT License
2
2
 
3
- Copyright (c) 2025 APIVerve
3
+ Copyright (c) 2026 APIVerve
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
package/README.md CHANGED
@@ -4,24 +4,24 @@
4
4
 
5
5
  <img src="https://apiverve.com/images/favicon.png" alt="APIVerve Logo" width="80" />
6
6
 
7
- **249+ APIs accessible through the Model Context Protocol**
7
+ **356+ APIs accessible through the Model Context Protocol**
8
8
 
9
9
  [![npm version](https://img.shields.io/npm/v/@apiverve/mcp-server)](https://www.npmjs.com/package/@apiverve/mcp-server)
10
10
  [![PyPI version](https://img.shields.io/pypi/v/apiverve-mcp)](https://pypi.org/project/apiverve-mcp/)
11
11
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
12
12
  [![MCP Compatible](https://img.shields.io/badge/MCP-Compatible-blue)](https://modelcontextprotocol.io)
13
13
 
14
- [Website](https://apiverve.com) • [Documentation](https://docs.apiverve.com) • [API Explorer](https://apiverve.com/marketplace) • [Report Bug](https://github.com/apiverve/mcp/issues)
14
+ [Website](https://apiverve.com) • [Documentation](https://docs.apiverve.com) • [API Explorer](https://apiverve.com/marketplace) • [Report Bug](https://github.com/apiverve/mcp-server/issues)
15
15
 
16
16
  </div>
17
17
 
18
18
  ## 🚀 Overview
19
19
 
20
- The **APIVerve MCP Server** provides seamless access to 249+ production-ready APIs through the [Model Context Protocol](https://modelcontextprotocol.io). Connect AI assistants like Claude, ChatGPT, and other MCP-compatible clients to a vast ecosystem of data and functionality.
20
+ The **APIVerve MCP Server** provides seamless access to 356+ production-ready APIs through the [Model Context Protocol](https://modelcontextprotocol.io). Connect AI assistants like Claude, ChatGPT, and other MCP-compatible clients to a vast ecosystem of data and functionality.
21
21
 
22
22
  ### ✨ Features
23
23
 
24
- - 🎯 **249+ APIs** - Weather, news, geocoding, validation, conversion, and more
24
+ - 🎯 **356+ APIs** - Weather, news, geocoding, validation, conversion, and more
25
25
  - 🔐 **OAuth 2.0 Authentication** - Secure, industry-standard authentication
26
26
  - 📊 **Token-Based Pricing** - Pay only for what you use
27
27
  - 🚀 **High Performance** - Cloud-hosted with 99%+ uptime
@@ -30,77 +30,80 @@ The **APIVerve MCP Server** provides seamless access to 249+ production-ready AP
30
30
 
31
31
  ## 📦 Installation
32
32
 
33
- ### For Claude Desktop / MCP Clients
33
+ APIVerve is a **remote** MCP server — there is nothing to run locally. Point your client at the URL below and it will handle sign-in for you.
34
34
 
35
- Add to your MCP settings file:
35
+ ### Quick setup
36
36
 
37
- **Claude Desktop (`claude_desktop_config.json`):**
37
+ ```bash
38
+ npx @apiverve/mcp-server
39
+ ```
40
+
41
+ Configures VS Code and Cursor, and prints the manual step for Claude Desktop. Target one client with `npx @apiverve/mcp-server cursor`.
42
+
43
+ For headless setups, pass a key instead of using sign-in:
44
+
45
+ ```bash
46
+ npx @apiverve/mcp-server --api-key YOUR_API_KEY
47
+ ```
48
+
49
+ Python users can do the same with `pip install apiverve-mcp` then `apiverve-mcp` (or `apiverve-mcp --api-key YOUR_API_KEY`).
50
+
51
+ ### Manual setup
52
+
53
+ **Claude Desktop** — remote servers are added through the app, not a config file:
54
+
55
+ > Settings → Connectors → Add custom connector → `https://api.apiverve.com/v1/mcp`
56
+
57
+ **VS Code** (`mcp.json`):
38
58
  ```json
39
59
  {
40
- "mcpServers": {
60
+ "servers": {
41
61
  "apiverve": {
42
- "type": "sse",
62
+ "type": "http",
43
63
  "url": "https://api.apiverve.com/v1/mcp"
44
64
  }
45
65
  }
46
66
  }
47
67
  ```
48
68
 
49
- **VS Code / Visual Studio:**
69
+ **Cursor** (`~/.cursor/mcp.json`):
50
70
  ```json
51
71
  {
52
- "inputs": [],
53
- "servers": {
54
- "APIVerve": {
55
- "type": "sse",
56
- "url": "https://api.apiverve.com/v1/mcp",
57
- "headers": {}
72
+ "mcpServers": {
73
+ "apiverve": {
74
+ "url": "https://api.apiverve.com/v1/mcp"
58
75
  }
59
76
  }
60
77
  }
61
78
  ```
62
79
 
63
- ### NPM Package
64
-
65
- ```bash
66
- npm install -g @apiverve/mcp-server
67
- ```
68
-
69
- Then run:
70
- ```bash
71
- apiverve-mcp install
72
- ```
80
+ ## 🔑 Authentication
73
81
 
74
- This will automatically configure your MCP client.
82
+ Two ways in pick whichever fits:
75
83
 
76
- ### Python Package
84
+ **OAuth (default, recommended)** — leave the config as shown above. On first use the server returns an authorization challenge and your client walks you through sign-in. No key is stored on disk, and access can be revoked from the dashboard.
77
85
 
78
- ```bash
79
- pip install apiverve-mcp
80
- ```
86
+ **API key** — add your key as a header. Useful for CI and headless environments where no browser is available:
81
87
 
82
- ```python
83
- from apiverve_mcp import configure_mcp
84
-
85
- # Auto-configure MCP client
86
- configure_mcp()
88
+ ```json
89
+ {
90
+ "mcpServers": {
91
+ "apiverve": {
92
+ "url": "https://api.apiverve.com/v1/mcp",
93
+ "headers": { "x-api-key": "YOUR_API_KEY" }
94
+ }
95
+ }
96
+ }
87
97
  ```
88
98
 
89
- ## 🔑 Authentication
90
-
91
- APIVerve uses OAuth 2.0 for secure authentication:
92
-
93
- 1. **Sign up** at [https://apiverve.com](https://apiverve.com)
94
- 2. **Get your API key** from the dashboard
95
- 3. **Authorize** when prompted by your MCP client
96
- 4. **Start using** 249+ APIs immediately
99
+ Claude Desktop's Custom Connectors cannot send custom headers, so it is OAuth-only.
97
100
 
98
- **Free tier available** - No credit card required to start!
101
+ Get a key at [https://apiverve.com](https://apiverve.com). **Free tier available** no credit card required to start!
99
102
 
100
103
  ## 🎯 Available APIs
101
104
 
102
105
  <details>
103
- <summary><b>Click to see all 249+ available APIs</b></summary>
106
+ <summary><b>Click to see all 356+ available APIs</b></summary>
104
107
 
105
108
  ### 🌤️ Weather & Environment
106
109
  - Weather Forecast
@@ -168,16 +171,17 @@ Claude: [Uses Currency Converter API]
168
171
 
169
172
  ### Programmatic Usage (Python)
170
173
 
174
+ Connect straight to the remote server — no local process involved:
175
+
171
176
  ```python
172
- from mcp import ClientSession, StdioServerParameters
173
- from mcp.client.stdio import stdio_client
177
+ from mcp import ClientSession
178
+ from mcp.client.streamable_http import streamablehttp_client
179
+
180
+ url = "https://api.apiverve.com/v1/mcp"
181
+ headers = {"x-api-key": "YOUR_API_KEY"}
174
182
 
175
- async with stdio_client(StdioServerParameters(
176
- command="apiverve-mcp",
177
- args=[]
178
- )) as (read, write):
183
+ async with streamablehttp_client(url, headers=headers) as (read, write, _):
179
184
  async with ClientSession(read, write) as session:
180
- # Initialize
181
185
  await session.initialize()
182
186
 
183
187
  # List available tools
@@ -199,17 +203,17 @@ APIVerve uses a flexible token-based pricing model with multiple tiers to fit yo
199
203
 
200
204
  **[View Pricing Plans →](https://apiverve.com/pricing)**
201
205
 
202
- Token costs vary by API complexity - simple APIs start at 1 token per call.
206
+ Credit costs vary by API complexity - simple APIs start at 1 credit per call.
203
207
 
204
208
  ## 🛠️ Technical Details
205
209
 
206
210
  ### Server Information
207
211
 
208
- - **Type**: Server-Sent Events (SSE)
209
- - **Protocol**: MCP 2024-11-05
210
- - **Authentication**: OAuth 2.0 with PKCE
212
+ - **Transport**: Streamable HTTP
213
+ - **Protocol**: MCP 2025-06-18 (negotiates down to 2025-03-26 and 2024-11-05)
214
+ - **Authentication**: OAuth 2.0 with PKCE, or `x-api-key` header
211
215
  - **Base URL**: `https://api.apiverve.com/v1/mcp`
212
- - **API Version**: 1.0.0
216
+ - **API Version**: 1.1.0
213
217
 
214
218
  ### OAuth Endpoints
215
219
 
@@ -250,7 +254,7 @@ If you hit token limits:
250
254
 
251
255
  ## 🤝 Support
252
256
 
253
- - **GitHub Issues**: [apiverve/mcp/issues](https://github.com/apiverve/mcp/issues)
257
+ - **GitHub Issues**: [apiverve/mcp-server/issues](https://github.com/apiverve/mcp-server/issues)
254
258
  - **Email**: hello@apiverve.com
255
259
  - **Discord**: [Join our community](https://apiverve.com/discord)
256
260
 
package/bin/install.js ADDED
@@ -0,0 +1,149 @@
1
+ #!/usr/bin/env node
2
+
3
+ const fs = require('fs');
4
+ const path = require('path');
5
+ const os = require('os');
6
+
7
+ const SERVER_URL = 'https://api.apiverve.com/v1/mcp';
8
+ const TARGETS = ['claude', 'vscode', 'cursor', 'all'];
9
+
10
+ // Auth is negotiated, not configured: with no headers the server answers 401 with a
11
+ // WWW-Authenticate challenge and the client runs OAuth. --api-key skips that for
12
+ // headless setups by sending the key directly instead.
13
+ function parseArgs(argv) {
14
+ const args = { target: 'all', apiKey: null };
15
+ for (let i = 0; i < argv.length; i++) {
16
+ if (argv[i] === '--api-key') {
17
+ args.apiKey = argv[++i] || null;
18
+ } else if (argv[i].startsWith('--api-key=')) {
19
+ args.apiKey = argv[i].slice('--api-key='.length);
20
+ } else if (!argv[i].startsWith('-')) {
21
+ args.target = argv[i];
22
+ }
23
+ }
24
+ return args;
25
+ }
26
+
27
+ function userConfigDir(appName) {
28
+ const platform = os.platform();
29
+ if (platform === 'darwin') return path.join(os.homedir(), 'Library', 'Application Support', appName);
30
+ if (platform === 'win32') return path.join(process.env.APPDATA, appName);
31
+ return path.join(os.homedir(), '.config', appName);
32
+ }
33
+
34
+ // VS Code moved MCP config out of settings.json into its own mcp.json.
35
+ function getVSCodeConfigPath() {
36
+ return path.join(userConfigDir('Code'), 'User', 'mcp.json');
37
+ }
38
+
39
+ // Cursor reads ~/.cursor/mcp.json, not the app support dir.
40
+ function getCursorConfigPath() {
41
+ return path.join(os.homedir(), '.cursor', 'mcp.json');
42
+ }
43
+
44
+ function readJson(filePath) {
45
+ if (!fs.existsSync(filePath)) return {};
46
+ try {
47
+ return JSON.parse(fs.readFileSync(filePath, 'utf8'));
48
+ } catch (err) {
49
+ throw new Error(`${filePath} exists but is not valid JSON. Fix or remove it, then re-run.`);
50
+ }
51
+ }
52
+
53
+ function writeJson(filePath, data) {
54
+ fs.mkdirSync(path.dirname(filePath), { recursive: true });
55
+ fs.writeFileSync(filePath, JSON.stringify(data, null, 2), 'utf8');
56
+ }
57
+
58
+ function authHeaders(apiKey) {
59
+ return apiKey ? { headers: { 'x-api-key': apiKey } } : {};
60
+ }
61
+
62
+ // Remote servers cannot be added through claude_desktop_config.json — that file is
63
+ // stdio-only. Custom Connectors is the supported path and it is UI-driven, so the most
64
+ // honest thing the installer can do is say so rather than write config Claude ignores.
65
+ function installToClaudeDesktop() {
66
+ console.log('○ Claude Desktop — manual step required');
67
+ console.log(' Claude Desktop only accepts remote MCP servers through Custom Connectors,');
68
+ console.log(' which cannot be configured from a file. Add it in the app:');
69
+ console.log('');
70
+ console.log(' Settings → Connectors → Add custom connector');
71
+ console.log(` URL: ${SERVER_URL}`);
72
+ console.log('');
73
+ console.log(' Claude will prompt you to sign in on first use.');
74
+ console.log('');
75
+ return true;
76
+ }
77
+
78
+ function installToVSCode(apiKey) {
79
+ const configPath = getVSCodeConfigPath();
80
+ const config = readJson(configPath);
81
+
82
+ if (!config.servers) config.servers = {};
83
+ config.servers.apiverve = { type: 'http', url: SERVER_URL, ...authHeaders(apiKey) };
84
+
85
+ writeJson(configPath, config);
86
+ console.log(`✅ VS Code configured — ${configPath}`);
87
+ return true;
88
+ }
89
+
90
+ function installToCursor(apiKey) {
91
+ const configPath = getCursorConfigPath();
92
+ const config = readJson(configPath);
93
+
94
+ // Cursor infers the transport from the presence of url; type is for stdio servers only.
95
+ if (!config.mcpServers) config.mcpServers = {};
96
+ config.mcpServers.apiverve = { url: SERVER_URL, ...authHeaders(apiKey) };
97
+
98
+ writeJson(configPath, config);
99
+ console.log(`✅ Cursor configured — ${configPath}`);
100
+ return true;
101
+ }
102
+
103
+ function printManualConfig() {
104
+ console.error('\n💡 Configure manually instead:');
105
+ console.error('');
106
+ console.error(' VS Code — mcp.json');
107
+ console.error(` { "servers": { "apiverve": { "type": "http", "url": "${SERVER_URL}" } } }`);
108
+ console.error('');
109
+ console.error(' Cursor — ~/.cursor/mcp.json');
110
+ console.error(` { "mcpServers": { "apiverve": { "url": "${SERVER_URL}" } } }`);
111
+ console.error('');
112
+ console.error(' Claude Desktop — Settings → Connectors → Add custom connector');
113
+ console.error(` ${SERVER_URL}`);
114
+ console.error('');
115
+ }
116
+
117
+ function main() {
118
+ console.log('\n🔌 APIVerve MCP Server Installer\n');
119
+
120
+ const { target, apiKey } = parseArgs(process.argv.slice(2));
121
+
122
+ // An unrecognised target used to match no branch and exit 0 having done nothing.
123
+ if (!TARGETS.includes(target)) {
124
+ console.error(`Unknown target "${target}".`);
125
+ console.error(`Usage: apiverve-mcp [${TARGETS.join('|')}] [--api-key KEY]\n`);
126
+ process.exit(1);
127
+ }
128
+
129
+ if (apiKey) {
130
+ console.log('Using API key auth — the key will be written into the config file.\n');
131
+ } else {
132
+ console.log('Using OAuth — no key is stored; your client will prompt you to sign in.\n');
133
+ }
134
+
135
+ try {
136
+ if (target === 'claude' || target === 'all') installToClaudeDesktop();
137
+ if (target === 'vscode' || target === 'all') installToVSCode(apiKey);
138
+ if (target === 'cursor' || target === 'all') installToCursor(apiKey);
139
+
140
+ console.log('\n✨ Done. Restart your MCP client to pick up the change.');
141
+ console.log(' Manage access and API keys at https://apiverve.com\n');
142
+ } catch (error) {
143
+ console.error('\n❌ Installation failed:', error.message);
144
+ printManualConfig();
145
+ process.exit(1);
146
+ }
147
+ }
148
+
149
+ main();
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@apiverve/mcp-server",
3
- "version": "1.0.0",
4
- "description": "APIVerve MCP Server - Access 249+ APIs through the Model Context Protocol",
3
+ "version": "1.1.0",
4
+ "description": "APIVerve MCP Server - Access 356+ APIs through the Model Context Protocol",
5
5
  "main": "index.js",
6
6
  "bin": {
7
7
  "apiverve-mcp": "./bin/install.js"
@@ -22,15 +22,20 @@
22
22
  "homepage": "https://apiverve.com",
23
23
  "repository": {
24
24
  "type": "git",
25
- "url": "https://github.com/apiverve/mcp.git"
25
+ "url": "https://github.com/apiverve/mcp-server.git"
26
26
  },
27
27
  "bugs": {
28
- "url": "https://github.com/apiverve/mcp/issues"
28
+ "url": "https://github.com/apiverve/mcp-server/issues"
29
29
  },
30
30
  "mcpServers": {
31
31
  "apiverve": {
32
- "type": "sse",
33
- "url": "https://api.apiverve.com/v1/mcp"
32
+ "command": "node",
33
+ "args": [
34
+ "./index.js"
35
+ ],
36
+ "env": {
37
+ "APIVERVE_API_KEY": ""
38
+ }
34
39
  }
35
40
  }
36
41
  }
package/pyproject.toml DELETED
@@ -1,29 +0,0 @@
1
- [build-system]
2
- requires = ["setuptools>=45", "wheel"]
3
- build-backend = "setuptools.build_meta"
4
-
5
- [project]
6
- name = "apiverve-mcp"
7
- version = "1.0.0"
8
- description = "APIVerve MCP Server - Access 249+ APIs through the Model Context Protocol"
9
- readme = "README.md"
10
- authors = [{name = "APIVerve", email = "hello@apiverve.com"}]
11
- license = {text = "MIT"}
12
- classifiers = [
13
- "Development Status :: 5 - Production/Stable",
14
- "Intended Audience :: Developers",
15
- "License :: OSI Approved :: MIT License",
16
- "Programming Language :: Python :: 3",
17
- "Programming Language :: Python :: 3.8",
18
- "Programming Language :: Python :: 3.9",
19
- "Programming Language :: Python :: 3.10",
20
- "Programming Language :: Python :: 3.11",
21
- ]
22
- keywords = ["mcp", "mcp-server", "model-context-protocol", "apiverve", "api", "claude", "chatgpt", "ai", "llm"]
23
- requires-python = ">=3.8"
24
-
25
- [project.urls]
26
- Homepage = "https://apiverve.com"
27
- Documentation = "https://docs.apiverve.com"
28
- Repository = "https://github.com/apiverve/mcp"
29
- Issues = "https://github.com/apiverve/mcp/issues"
package/setup.py DELETED
@@ -1,31 +0,0 @@
1
- from setuptools import setup, find_packages
2
-
3
- setup(
4
- name='apiverve-mcp',
5
- version='1.0.0',
6
- description='APIVerve MCP Server - Access 249+ APIs through the Model Context Protocol',
7
- long_description=open('README.md').read(),
8
- long_description_content_type='text/markdown',
9
- author='APIVerve',
10
- author_email='hello@apiverve.com',
11
- url='https://apiverve.com',
12
- project_urls={
13
- 'Documentation': 'https://docs.apiverve.com',
14
- 'Source': 'https://github.com/apiverve/mcp',
15
- 'Tracker': 'https://github.com/apiverve/mcp/issues',
16
- },
17
- packages=find_packages(),
18
- classifiers=[
19
- 'Development Status :: 5 - Production/Stable',
20
- 'Intended Audience :: Developers',
21
- 'License :: OSI Approved :: MIT License',
22
- 'Programming Language :: Python :: 3',
23
- 'Programming Language :: Python :: 3.8',
24
- 'Programming Language :: Python :: 3.9',
25
- 'Programming Language :: Python :: 3.10',
26
- 'Programming Language :: Python :: 3.11',
27
- 'Topic :: Software Development :: Libraries :: Python Modules',
28
- ],
29
- python_requires='>=3.8',
30
- keywords='mcp mcp-server model-context-protocol apiverve api claude chatgpt ai llm',
31
- )