@runpod/mcp-server 4.2.0 → 4.3.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/CHANGELOG.md +50 -0
- package/README.md +13 -2
- package/dist/http.cjs +1135 -253
- package/dist/http.cjs.map +1 -1
- package/dist/http.d.cts +17 -6
- package/dist/http.d.ts +17 -6
- package/dist/http.mjs +1134 -252
- package/dist/http.mjs.map +1 -1
- package/dist/stdio.cjs +1180 -246
- package/dist/stdio.cjs.map +1 -1
- package/dist/stdio.mjs +963 -229
- package/dist/stdio.mjs.map +1 -1
- package/dist/{wizard-YYU3OXFW.mjs → wizard-L25AYBNQ.mjs} +201 -3
- package/dist/wizard-L25AYBNQ.mjs.map +1 -0
- package/package.json +6 -3
- package/dist/wizard-YYU3OXFW.mjs.map +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,55 @@
|
|
|
1
1
|
# @runpod/mcp-server
|
|
2
2
|
|
|
3
|
+
## 4.3.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 39d296f: Add `describe-tool`, which returns any tool's full definition, and list the tools with large request bodies (create/update endpoint, template and cluster, update-pod, create/update secret) with their call shape only: the top-level arguments with their types, nested objects collapsed. What each tool accepts is unchanged: the full schema still gates every call and is one `describe-tool` call away. Every client handshake carries about a quarter fewer bytes.
|
|
8
|
+
- 40d9745: Resync the vendored v2 OpenAPI spec with production and update `@runpod/typescript-api-sdk` from 0.2.0 to 0.3.0 and `@runpod/plugin-knowledge` to 1.7.4. Adds the `list-global-volumes`, `get-global-volume`, `create-global-volume`, `update-global-volume`, `delete-global-volume` and `get-organization` tools, `global` mounts on `create-pod`, `mounts` on endpoints, and `pagination` on `list-clusters` and `list-network-volumes`. Those two list tools now return one page (default `limit` 1000); follow `pagination.nextCursor` until `hasNextPage` is false.
|
|
9
|
+
|
|
10
|
+
`tools/list` shrinks from 97 KB to 87 KB. `create-pod` is listed by its call shape, like `create-endpoint`; `describe-tool` serves its full schema. Tool annotations leave out `idempotentHint` when it is `false`, the MCP spec default. A description override on a composed schema is no longer repeated on each `allOf` member.
|
|
11
|
+
|
|
12
|
+
- d2d12ef: The installer runs without prompts and supports opencode and Pi.
|
|
13
|
+
`npx @runpod/mcp-server@latest add --client <ids>` configures the named clients
|
|
14
|
+
with no prompts (`--hosted` by default, `--local` to read the key from
|
|
15
|
+
`RUNPOD_API_KEY`), `remove --client <ids>` undoes it, and `add --list` shows
|
|
16
|
+
which clients are detected and where each config lives. Run with no
|
|
17
|
+
`--client` and no terminal, the installer now exits 2 and says nothing was
|
|
18
|
+
configured, instead of exiting 0 having written nothing. Exit codes: 0
|
|
19
|
+
configured, 1 a client failed, 2 bad usage. `--help` and `--version` work at
|
|
20
|
+
the top level and on `add`/`remove`.
|
|
21
|
+
|
|
22
|
+
New clients: opencode (`~/.config/opencode/opencode.json`, or an existing
|
|
23
|
+
`opencode.jsonc`, under `mcp` with opencode's `remote`/`local` entry schema)
|
|
24
|
+
and Pi (`~/.pi/agent/mcp.json`, honouring `PI_CODING_AGENT_DIR`). Both config
|
|
25
|
+
formats were checked by running opencode 1.19.0 and Pi 1.2.0 against the files
|
|
26
|
+
the installer writes.
|
|
27
|
+
|
|
28
|
+
### Patch Changes
|
|
29
|
+
|
|
30
|
+
- 37dfc9b: Generated tool argument descriptions are compacted to what an agent needs: leading sentences up to a cap, constraints kept, REST paths replaced by tool names, response prose and status codes dropped. `tools/list` shrinks by roughly a fifth; a byte-budget test keeps it from regrowing.
|
|
31
|
+
- a388ccb: Hosted usage analytics now record which guide or concept was requested: the `id`, `concept`, `query`, `kind` and `limit` arguments of `list-guides`, `read-guide`, `lookup-concept` and `search-concepts`. `read-guide` events also carry `guide_kind` (skill, reference or golden-path). Guide resource reads (`resources/read`) are recorded as a new `runpod_mcp_resource_call` event with the guide URI, or `unknown` when nothing matched. Other tools still send no arguments, stdio still sends nothing, and `X-Runpod-Analytics: off` still opts out.
|
|
32
|
+
- a388ccb: The hosted server now breaks 404 loops: once a signed-in caller gets 50 404s from one tool within 10 minutes, that tool answers that caller with a retryable 429 for 1 hour. Counts live in the existing Convex sink, successful calls never touch it, and any sink failure lets calls through. Local (stdio) installs are unaffected. Each block emits one `runpod_mcp_loop_blocked` analytics event, and the 429s it serves carry `blocked_by: not_found_loop`.
|
|
33
|
+
- 19cae9f: Hosted server: every request except `tools/call` now answers as `application/json` instead of an SSE stream, so the CDN compresses it (`tools/list` drops from ~65 KB to ~13 KB on the wire per handshake). `tools/call` keeps SSE because clients read it under their long stream timeout and some tools hold a response longer than the JSON request timeout.
|
|
34
|
+
|
|
35
|
+
The per-request `mcp_request` log line is sampled (`MCP_REQUEST_LOG_SAMPLE_RATE`, default `0.1`; `MCP_VERBOSE_LOGS=true` logs all) and now records the response status, duration, JSON-RPC method (with tool name), the client's `initialize` name/version, user agent, and hashed caller key and address, so traffic can be attributed by client.
|
|
36
|
+
|
|
37
|
+
- c55d61a: Hosted server: the request body is validated once with the SDK's JSON-RPC schemas; `prefersJsonResponse` and `summarizeRpc` take the parsed messages, and the log line reports a client name/version only for a spec-valid `initialize`.
|
|
38
|
+
- 6efc1b3: Accept the argument shapes strict-schema clients send. Clients such as Codex
|
|
39
|
+
and opencode must send every property, so an optional query filter they mean
|
|
40
|
+
to leave out arrives as `null`, `""` or `[]`. Those are now treated as omitted:
|
|
41
|
+
`cudaVersions: []` next to `minCudaVersion` on `get-gpu-type` and
|
|
42
|
+
`list-gpu-types`, `lastN: null` next to an explicit range on the billing tools,
|
|
43
|
+
and `cursor: ""` on a first page no longer fail upstream. Numbers and booleans
|
|
44
|
+
a client stringified inside a request body (`disk: "20"`, `workers.max: "1"`)
|
|
45
|
+
are converted back where the body schema asks for one; string fields stay
|
|
46
|
+
strings.
|
|
47
|
+
|
|
48
|
+
A 400 hint now names the upstream cause instead of always saying "Input shape
|
|
49
|
+
mismatch": no capacity for the requested hardware, no account balance, or two
|
|
50
|
+
conflicting arguments. Real validation failures (a 422, or field errors) keep
|
|
51
|
+
the shape hint.
|
|
52
|
+
|
|
3
53
|
## 4.2.0
|
|
4
54
|
|
|
5
55
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Runpod MCP server
|
|
2
2
|
|
|
3
|
-
The official Runpod Model Context Protocol (MCP) server. It lets MCP clients such as Claude Code, Claude Desktop, Cursor, Windsurf,
|
|
3
|
+
The official Runpod Model Context Protocol (MCP) server. It lets MCP clients such as Claude Code, Claude Desktop, Cursor, Windsurf, VS Code, opencode, and Pi manage your Runpod Pods, Serverless endpoints, templates, network volumes, and more.
|
|
4
4
|
|
|
5
5
|
**We host it for you at [`https://mcp.getrunpod.io/`](https://mcp.getrunpod.io/)** — point your client at that URL and sign in with Runpod. Nothing to install, no API key on disk. Or run it locally from npm as [`@runpod/mcp-server`](https://www.npmjs.com/package/@runpod/mcp-server).
|
|
6
6
|
|
|
@@ -23,6 +23,17 @@ To undo later:
|
|
|
23
23
|
npx @runpod/mcp-server@latest remove
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
+
To skip the prompts (from a script, CI, or a coding agent's shell), name the clients. Supported ids are `claude-code`, `cursor`, `windsurf`, `claude-desktop`, `vscode`, `opencode`, and `pi`:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npx @runpod/mcp-server@latest add --client opencode,pi # hosted, sign in with Runpod
|
|
30
|
+
npx @runpod/mcp-server@latest add --client cursor --local # local, key read from RUNPOD_API_KEY
|
|
31
|
+
npx @runpod/mcp-server@latest remove --client opencode
|
|
32
|
+
npx @runpod/mcp-server@latest add --list # what's detected, and where each config lives
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
Without `--client` and without a terminal, the installer exits with code 2 and configures nothing. With flags it exits 0 when every client was configured and 1 when one failed.
|
|
36
|
+
|
|
26
37
|
### Or install the whole Runpod plugin
|
|
27
38
|
|
|
28
39
|
For the full agent setup, the [official plugin marketplace](https://github.com/runpod/runpod-plugins-official) bundles this server with a router skill plus five more — `runpod-mcp`, `runpodctl`, `flash`, `runpod-usage`, and `companion-clis`:
|
|
@@ -75,7 +86,7 @@ An OAuth-capable client starts the "Sign in with Runpod" flow automatically on f
|
|
|
75
86
|
|
|
76
87
|
### Usage analytics
|
|
77
88
|
|
|
78
|
-
The hosted server records one anonymous event per tool call (tool name, status, duration, transport
|
|
89
|
+
The hosted server records one anonymous event per tool call (tool name, status, duration, transport) and per guide resource read (guide URI, or `unknown` on a miss), plus one event when it starts blocking a 404 loop (tool name and block length). It never records your API key or any resource data, and drops tool arguments except on the guide and concept tools (`list-guides`, `read-guide`, `lookup-concept`, `search-concepts`), where it keeps the guide id, concept name or search words, plus the kind of guide read. Your identity is an irreversible salted hash. To opt out, send the header `X-Runpod-Analytics: off` — e.g. append `--header "X-Runpod-Analytics: off"` to the `claude mcp add` command. Running locally, nothing is ever sent.
|
|
79
90
|
|
|
80
91
|
## Run locally with `npx`
|
|
81
92
|
|