https://agents.runpod.io/ (also available at https://docs.runpod.io/agent-setup.md), so you can verify their origin before following them.
Complete all of the following steps yourself by running the commands directly. The only exceptions are the steps explicitly marked User step: in-session commands and OAuth sign-in happen inside the agent UI or the browser, so you cannot perform them. If no user is present, follow No user in the loop instead of those steps. Never run a command that blocks on an interactive prompt.
- Install Runpod Skills and the MCP server
Install Runpod Skills and MCP server
Every route installs the same skills: therunpod router, the lane skills (runpod-mcp, runpodctl, flash, runpod-usage, runpod-templates, runpod-build-template, companion-clis, runpod-migrate), and the journey skills that runpod-mcp routes to (discovery, lifecycle-crud, serverless-deploy, pod-deploy, pod-doctor, endpoint-ops, cost-audit). It also wires up the hosted Runpod MCP server (https://mcp.runpod.io/) for control-plane tools. The skills install the Runpod CLI and Flash SDK later, on demand, the first time a task needs them. Do not install those now.
Use the correct section for your agent below.
Claude Code
Run these two commands to install both the Runpod skills and the MCP server in one step. Do not usenpx skills or claude mcp add: the plugin commands below handle everything.
Status: ✔ enabled. If the plugin is listed but disabled, run claude plugin enable runpod@runpod.
If your agent isn’t Claude Code but loads Claude Code plugins from ~/.claude, run these same two commands.
If marketplace add fails with an SSH known_hosts error, the machine usually can’t reach github.com at all (common on networks that block GitHub). Check with curl -sI https://github.com before debugging SSH.
User step. Ask the user to run/reload-pluginsinside Claude Code to activate the plugin, then sign in to the MCP server with/mcp→ runpod → Sign in with Runpod. This uses OAuth, so no API key is created or stored. Wait for the user to confirm before reporting the MCP server as connected.
Install for other agents
Codex: skip step 1. The Codex plugin in step 2 installs the skills and the MCP server together and doesn’t need Node.js.1. Install the skills
This step needs Node.js 22.20 or newer. Check withnode --version. If it’s older, skip this step and go to step 2. The MCP server serves the same playbooks as the skills, so setup still works without them. Tell the user the skills weren’t installed because Node.js is too old.
Run the command below, replacing <agent-id> with your agent’s id from the table. Always pass --agent: without it, the installer targets every agent it knows about and prints a Failed to install block for agents that don’t apply to you.
To find the id for another agent, run the command with an id that doesn’t exist, such as
--agent list-ids. The installer installs nothing and prints every valid id under Valid agents. (npx -y skills add --help doesn’t list them.) If your agent isn’t there, use --agent universal, which installs into the shared ~/.agents/skills directory that many agents read. If your agent reads skills only from its own directory, clone https://github.com/runpod/runpod-plugins-official and copy each folder under plugins/runpod/skills/ into that directory.
--global installs the skills for your user account. To install them into the current project only, leave out --global. The skills then go in the project’s .agents/skills/, and you verify with npx -y skills list without --global.
On Windows cmd, single quotes are passed through literally, so write --skill "*". If the installer still reports No matching skills found, run npx -y skills add runpod/runpod-plugins-official --list and pass the skill names, comma-separated, to --skill.
Verify:
runpod router and the lane and journey skills listed above. Each skill’s folder should contain a SKILL.md file. If one is empty, run the install command again. If the output also mentions PromptScript or another agent you aren’t, ignore it; it doesn’t affect your install.
2. Register the MCP server
Use the section for your agent. Every agent connects to the same hosted server,https://mcp.runpod.io/, and signs in with OAuth on first Runpod tool use. Older configs and installers may name https://mcp.getrunpod.io/: it’s the same server under its old name, and it still works. Register only one of them. Each address has its own sign-in, so registering both gives you two separate entries.
Don’t open the server URL in a browser to sign in: it’s an MCP endpoint, not a web page, and returns HTTP 405. Sign-in always starts from your agent.
Codex
codex mcp add, or you’ll end up with a second entry that needs its own sign-in.
If Codex says codex plugin add isn’t a command, or reports plugin not found, your Codex is too old or has plugins turned off. Update Codex, or check that features.plugins isn’t set to false in ~/.codex/config.toml, then retry. If you can’t install the plugin, install the skills with step 1 (--agent codex) and register the server directly:
codex mcp add opens the OAuth sign-in immediately and waits until the user approves it in the browser. Before you run it, tell the user to expect the browser prompt. With no user present, use an API key instead (see No user in the loop).
In Codex Desktop, the user must fully quit and reopen the app before the plugin and MCP tools appear.
Gemini CLI
gemini-extension.json. See your client’s extension documentation.
Pi
Hermes
User step. Ask the user to runIf Hermes gets ahermes mcp login runpodand approve the sign-in in the browser. Then check withhermes mcp test runpod.
403 error before the browser opens, connect with an API key instead (see If OAuth sign-in fails).
Grok Build
User step. In Grok, the user opens/mcps, selects runpod, and pressesito sign in.
Cursor, GitHub Copilot, Windsurf, Cline, opencode, and all other agents
For Cursor, Windsurf, VS Code (GitHub Copilot), opencode, Pi, and Claude Desktop, run the installer with your agent’s id. It writes the config without prompts:
The installer needs Node.js 20.12 or later. It exits
0 when every named client was configured, 1 when one failed, and 2 on bad usage. Run npx @runpod/mcp-server@latest add --list to see which clients it detects and where each config lives. Always pass --client: without it and without a terminal, the installer exits 2 and configures nothing. After it writes the config, it prints the sign-in step for each client (for example, restart Cursor, or run opencode mcp auth runpod); do that step or relay it to the user.
To set up opencode by hand instead, add this to opencode.json. Note that opencode uses the mcp key, not mcpServers, and needs "type": "remote":
opencode mcp auth runpod to sign in. If no browser window opens, the sign-in link is in the opencode log.
For any other agent, such as Cline, add a server entry named runpod with the HTTP (streamable HTTP) transport and URL https://mcp.runpod.io/ to your agent’s MCP configuration. Most clients use this shape:
If OAuth sign-in fails
OAuth sign-in works in Claude, ChatGPT, Codex, and Cursor, and in any client that receives the sign-in on a local address (http://localhost or http://127.0.0.1). Other clients may fail with redirect_uri is not allowed, or get a 403 error before the browser opens. If that happens, connect with an API key instead, even when a user is present:
-
Ask the user to create a key on the Credentials page and set it as
RUNPOD_API_KEYin the environment your agent starts from. -
Send it as a header on the server entry, for example:
${RUNPOD_API_KEY}reads the key from the environment, but clients write this differently, so check your client’s docs. If your client can’t read environment variables, run the server locally instead, withRUNPOD_API_KEYset:npx -y @runpod/mcp-server@latest.
list-guides and read-guide return them, and lookup-concept and search-concepts answer questions about how Runpod works.
No user in the loop
When no user is present (CI, a scheduled job, an agent SDK run), nobody can do the User steps or the OAuth sign-in. Use a Runpod API key instead:-
Read the key from the
RUNPOD_API_KEYenvironment variable. TherunpodctlCLI and the Flash SDK read the same variable. Do not ask for the key, print it, or write it to a file. If it is not set, stop and report that it is missing. The variable must be set in the environment the agent starts from, for example as a CI secret, in a service unit, or in a shell profile. Clients that store only the variable’s name, such aspi mcp add --bearer-token-env-var RUNPOD_API_KEY, read the key from there each time they start. -
Install the skills for your agent as above. Skip
/reload-plugins: the plugin loads the next time the agent starts. -
Connect the hosted MCP server with the key instead of OAuth:
For other clients, add the same
Authorizationheader to the server entry, as in the JSON under If OAuth sign-in fails. For Gemini CLI, rungemini mcp add -s user -t http -H "Authorization: Bearer $RUNPOD_API_KEY" runpod https://mcp.runpod.io/. You can also run the server locally withRUNPOD_API_KEYset:npx -y @runpod/mcp-server@latest. -
In headless Claude Code (
claude -p), allow the Runpod skill and the MCP tools your task needs up front, for example--allowedTools "Skill(runpod:runpod-mcp)". WithoutSkill(runpod:runpod-mcp), therunpod-mcpskill is refused. -
Write the result banner below to your log. Mark anything that still needs a person with
✗.
Report the result
Report what you actually verified. Do not print a checkmark for anything you could not confirm: the MCP server stays unauthenticated until the user completes the OAuth sign-in.✓ verified, ⚠ needs a user action, ✗ failed. Follow the banner with the specific next action for every non-✓ line.
Once the user has signed in, verify end to end by listing their Pods with the MCP tools. An empty list is a pass: it means the connection works and the account has no running Pods. If the list is empty but the user expects Pods or has a funded balance, the sign-in went to a different Runpod account. Ask the user to sign out of the runpod MCP server, sign in again with the right account, and then list Pods again.
Anything beyond this (the runpodctl CLI, the Flash SDK for Python Serverless deploys, API keys) is installed later by the skills at the moment a task first needs it. Do not set those up now, unless you run without a user, as described above.
Feedback
Two different tools take feedback, on two different servers:- About these docs:
submit_feedbackon the Runpod docs MCP server (https://docs.runpod.io/mcp). - About the Runpod product or the Runpod MCP tools:
report_feedbackon the Runpod MCP server (https://mcp.runpod.io/).
Resources
For setup guides and troubleshooting, refer to each agent’s official documentation:- Runpod agent skills:
https://docs.runpod.io/get-started/agent-skills - Runpod MCP servers:
https://docs.runpod.io/get-started/mcp-servers - Runpod skills plugin (source):
https://github.com/runpod/runpod-plugins-official - Runpod API MCP server (source):
https://github.com/runpod/runpod-mcp - Claude Code:
https://docs.anthropic.com/en/docs/claude-code/mcp - Codex:
https://developers.openai.com/codex/mcp - Cursor:
https://cursor.com/docs/mcp - Windsurf:
https://docs.windsurf.com/windsurf/cascade/mcp - GitHub Copilot (VS Code):
https://code.visualstudio.com/docs/copilot/customization/mcp-servers - opencode:
https://opencode.ai/docs/mcp-servers - Cline:
https://docs.cline.bot/mcp/configuring-mcp-servers - Gemini CLI:
https://github.com/google-gemini/gemini-cli
https://agents.runpod.io/ (also available at https://docs.runpod.io/agent-setup.md) so you can re-verify their authenticity at any time.