vpsnet-mcp 1.0.1 → 1.0.3
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 +22 -6
- package/build/index.js +24 -13
- package/package.json +5 -3
package/README.md
CHANGED
|
@@ -1,23 +1,39 @@
|
|
|
1
1
|
# vpsnet-mcp
|
|
2
2
|
|
|
3
|
-
[Model Context Protocol](https://modelcontextprotocol.io) (MCP) server for managing [
|
|
3
|
+
[Model Context Protocol](https://modelcontextprotocol.io) (MCP) server for managing [VPSnet.com](https://www.vpsnet.com) virtual private servers. Gives AI assistants full control over your VPS infrastructure — order servers, manage plans, deploy SSH keys, and directly access your servers via SSH for software installation and configuration.
|
|
4
4
|
|
|
5
5
|
## Features
|
|
6
6
|
|
|
7
|
-
- **49 tools** covering the entire
|
|
7
|
+
- **49 tools** covering the entire VPSnet.com API
|
|
8
8
|
- Account & profile management
|
|
9
9
|
- VPS lifecycle (start, stop, restart, reinstall OS)
|
|
10
10
|
- Plan changes (free upgrades/downgrades)
|
|
11
11
|
- DNS (rDNS/PTR records)
|
|
12
|
-
- SSH key
|
|
12
|
+
- SSH key management — deploy keys and gain direct server access
|
|
13
|
+
- API key management
|
|
13
14
|
- Backups, billing, invoices
|
|
14
15
|
- Ordering new VPS instances
|
|
15
16
|
- System status & pricing
|
|
16
17
|
|
|
18
|
+
## SSH access workflow
|
|
19
|
+
|
|
20
|
+
This MCP server manages your VPS infrastructure through the VPSnet.com API, including SSH key provisioning. Once an SSH key is deployed to a VPS, the AI assistant can connect directly using its environment's terminal (e.g. Claude Code's Bash tool, Cline's terminal).
|
|
21
|
+
|
|
22
|
+
**Typical flow:**
|
|
23
|
+
|
|
24
|
+
1. AI reads the local machine's public key (`~/.ssh/id_rsa.pub`)
|
|
25
|
+
2. Uploads it to VPSnet.com via `create_ssh_key`
|
|
26
|
+
3. Deploys it to a VPS via `deploy_ssh_key` (or passes it when ordering with `order_service`)
|
|
27
|
+
4. Connects directly: `ssh root@<vps_ip>`
|
|
28
|
+
|
|
29
|
+
Most AI coding environments (Claude Code, Cline, Cursor, Codex) have built-in terminal access, so the AI can SSH into your VPS immediately after deploying a key — no extra tools needed.
|
|
30
|
+
|
|
31
|
+
For environments without native SSH access, consider pairing this with a dedicated SSH MCP server for direct server connectivity.
|
|
32
|
+
|
|
17
33
|
## Requirements
|
|
18
34
|
|
|
19
35
|
- Node.js 18 or newer
|
|
20
|
-
- A [
|
|
36
|
+
- A [VPSnet.com](https://www.vpsnet.com) account with an API key
|
|
21
37
|
|
|
22
38
|
## Getting started
|
|
23
39
|
|
|
@@ -171,7 +187,7 @@ Follow the [Windsurf MCP documentation](https://docs.windsurf.com/windsurf/mcp).
|
|
|
171
187
|
|
|
172
188
|
| Variable | Required | Description |
|
|
173
189
|
|----------|----------|-------------|
|
|
174
|
-
| `VPSNET_API_KEY` | Yes | Your
|
|
190
|
+
| `VPSNET_API_KEY` | Yes | Your VPSnet.com API key |
|
|
175
191
|
| `VPSNET_API_URL` | No | API base URL (defaults to `https://api.vpsnet.com`) |
|
|
176
192
|
|
|
177
193
|
## Tools
|
|
@@ -274,7 +290,7 @@ Follow the [Windsurf MCP documentation](https://docs.windsurf.com/windsurf/mcp).
|
|
|
274
290
|
| Tool | Description |
|
|
275
291
|
|------|-------------|
|
|
276
292
|
| `get_pricing` | Get public pricing |
|
|
277
|
-
| `get_system_status` | Get
|
|
293
|
+
| `get_system_status` | Get VPSnet.com system status |
|
|
278
294
|
| `get_faq` | Get frequently asked questions |
|
|
279
295
|
|
|
280
296
|
## Getting an API key
|
package/build/index.js
CHANGED
|
@@ -5,7 +5,7 @@ import { z } from "zod";
|
|
|
5
5
|
import { apiRequest, formatJson } from "./api.js";
|
|
6
6
|
const server = new McpServer({ name: "vpsnet", version: "1.0.0" }, {
|
|
7
7
|
instructions: [
|
|
8
|
-
"This MCP server controls VPS (Virtual Private Server) services on
|
|
8
|
+
"This MCP server controls VPS (Virtual Private Server) services on VPSnet.com.",
|
|
9
9
|
"It manages VPS servers ONLY — not VDS or Dedicated Servers.",
|
|
10
10
|
"",
|
|
11
11
|
"## Ordering a new VPS",
|
|
@@ -18,16 +18,27 @@ const server = new McpServer({ name: "vpsnet", version: "1.0.0" }, {
|
|
|
18
18
|
"After placing an order, wait 10-30 seconds before attempting SSH — the VPS needs time to boot and start SSH daemon.",
|
|
19
19
|
"",
|
|
20
20
|
"## SSH key workflow (IMPORTANT for deploying software to VPS)",
|
|
21
|
-
"
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
25
|
-
"
|
|
26
|
-
"
|
|
27
|
-
"
|
|
28
|
-
"
|
|
29
|
-
"
|
|
30
|
-
"
|
|
21
|
+
"",
|
|
22
|
+
"### When the user asks you to deploy, install, or configure something INSIDE a VPS:",
|
|
23
|
+
"You MUST deploy YOUR OWN SSH key first, then connect directly via SSH.",
|
|
24
|
+
"After deploying your key, you can INSTANTLY access the VPS — no extra tools needed.",
|
|
25
|
+
"Most AI environments (Claude Code, Cline, Cursor, Codex) have a built-in terminal/bash tool.",
|
|
26
|
+
"Use that terminal to run: ssh -o StrictHostKeyChecking=no root@<vps_ip>",
|
|
27
|
+
"",
|
|
28
|
+
"### Step-by-step SSH key flow:",
|
|
29
|
+
"1. Read YOUR local machine's public key from ~/.ssh/id_rsa.pub or ~/.ssh/id_ed25519.pub",
|
|
30
|
+
"2. Upload it via create_ssh_key(name, public_key) — name it descriptively e.g. 'claude-code-key'",
|
|
31
|
+
"3. Deploy it to the VPS via deploy_ssh_key(orderNo, ssh_key_id) OR pass sshKey when ordering a new VPS",
|
|
32
|
+
"4. SSH directly using your environment's terminal: ssh -o StrictHostKeyChecking=no root@<vps_ip>",
|
|
33
|
+
"5. Now you can run any commands inside the VPS (apt install, configure services, deploy apps, etc.)",
|
|
34
|
+
"",
|
|
35
|
+
"### Important SSH notes:",
|
|
36
|
+
"- ALWAYS prefer sshKey over rootPassword — it's more secure and enables direct access.",
|
|
37
|
+
"- NEVER use someone else's SSH key — always read from the local machine where you are running.",
|
|
38
|
+
"- Use -o StrictHostKeyChecking=no when connecting to newly created VPS to avoid host key prompts.",
|
|
39
|
+
"- order_service uses 'sshKey' (camelCase) but deploy_ssh_key uses 'ssh_key' (snake_case) — different field names!",
|
|
40
|
+
"- Only fall back to rootPassword if the local machine has no SSH key (e.g. Windows without OpenSSH).",
|
|
41
|
+
"- If your environment has no terminal/bash access at all, consider using a dedicated SSH MCP server for connectivity.",
|
|
31
42
|
"",
|
|
32
43
|
"## Plan changes",
|
|
33
44
|
"Plan changes are FREE — remaining time is recalculated (upgrade = shorter expiry, downgrade = longer expiry).",
|
|
@@ -644,7 +655,7 @@ server.registerTool("get_pricing", {
|
|
|
644
655
|
return { content: [{ type: "text", text: formatJson(data) }] };
|
|
645
656
|
});
|
|
646
657
|
server.registerTool("get_system_status", {
|
|
647
|
-
description: "Get
|
|
658
|
+
description: "Get VPSnet.com system status",
|
|
648
659
|
inputSchema: {},
|
|
649
660
|
}, async () => {
|
|
650
661
|
const { data } = await apiRequest("GET", "/public/status");
|
|
@@ -661,7 +672,7 @@ server.registerTool("get_faq", {
|
|
|
661
672
|
async function main() {
|
|
662
673
|
const transport = new StdioServerTransport();
|
|
663
674
|
await server.connect(transport);
|
|
664
|
-
console.error("
|
|
675
|
+
console.error("VPSnet MCP server running");
|
|
665
676
|
}
|
|
666
677
|
main().catch((error) => {
|
|
667
678
|
console.error("Fatal error:", error);
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vpsnet-mcp",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"type": "module",
|
|
5
|
-
"description": "MCP server for managing
|
|
5
|
+
"description": "MCP server for managing VPSnet.com virtual private servers",
|
|
6
6
|
"bin": {
|
|
7
7
|
"vpsnet-mcp": "./build/index.js"
|
|
8
8
|
},
|
|
@@ -11,7 +11,9 @@
|
|
|
11
11
|
"dev": "tsc --watch",
|
|
12
12
|
"prepublishOnly": "npm run build"
|
|
13
13
|
},
|
|
14
|
-
"files": [
|
|
14
|
+
"files": [
|
|
15
|
+
"build"
|
|
16
|
+
],
|
|
15
17
|
"repository": "github:bacarrdy/vpsnet-mcp",
|
|
16
18
|
"homepage": "https://github.com/bacarrdy/vpsnet-mcp",
|
|
17
19
|
"author": "bacarrdy",
|