Skip to content
Merged
1 change: 1 addition & 0 deletions .cursor/rules/rp-styleguide.mdc
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ These are generic terms: endpoint, worker, cluster, template, handler, fine-tune

Prefer using paragraphs to bullet points unless directly asked.
When using bullet points, end each line with a period.
When a bullet point has a bold label followed by description text, use a colon after the bold text instead of a hyphen (e.g., "**List volumes:** Retrieve all network volumes." not "**List volumes** - Retrieve all network volumes.").

When creating a tutorial, always include these sections:

Expand Down
3 changes: 2 additions & 1 deletion docs.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,8 @@
"get-started",
"get-started/concepts",
"get-started/manage-accounts",
"get-started/api-keys"
"get-started/api-keys",
"get-started/mcp-servers"
]
},
{
Expand Down
301 changes: 301 additions & 0 deletions get-started/mcp-servers.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,301 @@
---
title: "Use Runpod's MCP servers"
sidebarTitle: "Runpod MCP servers"
description: "Connect AI tools to Runpod using the Model Context Protocol for infrastructure management and documentation access."
---

Runpod provides two [Model Context Protocol (MCP)](https://modelcontextprotocol.io) servers that connect AI tools and coding agents directly to Runpod:

- **[Runpod API MCP server](#runpod-api-mcp-server):** Manage Pods, endpoints, templates, volumes, and registries through the Runpod REST API. Requires a [Runpod API key](/get-started/api-keys).
- **[Runpod docs MCP server](#runpod-docs-mcp-server):** Search Runpod documentation for features, code examples, and guides. No authentication required.

## Runpod API MCP server

The Runpod API MCP server gives AI tools access to the [Runpod REST API](/api-reference/overview), letting you create and manage Pods, Serverless endpoints, templates, network volumes, and container registries through natural language.

**Endpoint:** Available via npm package `@runpod/mcp-server`

**Source code:** [github.com/runpod/runpod-mcp](https://github.com/runpod/runpod-mcp)

**Authentication:** Requires a [Runpod API key](/get-started/api-keys)

### Supported clients

- [Claude Code](#claude-code)
- [Codex CLI](#codex-cli)
- [Cursor](#cursor)
- [VS Code with Copilot](#vs-code-with-copilot)
- [Claude Desktop](#claude-desktop)
- [Windsurf](#windsurf)
- [Cline](#cline)
- [Gemini CLI](#gemini-cli)

### Claude Code

```bash
claude mcp add runpod --scope user -e RUNPOD_API_KEY=your_api_key_here -- npx -y @runpod/mcp-server@latest
```

Replace `your_api_key_here` with your Runpod API key. The `--scope user` flag makes the server available across all your projects. Run `/mcp` inside Claude Code to verify the connection.

### Codex CLI

[Codex CLI](https://github.com/openai/codex) is OpenAI's terminal-based coding agent.

```bash
codex mcp add runpod --env RUNPOD_API_KEY=your_api_key_here -- npx -y @runpod/mcp-server@latest
```

### Cursor

Add the following to `.cursor/mcp.json` (project-level) or `~/.cursor/mcp.json` (global). This configuration works with both the Cursor IDE and the [Cursor Agent](https://cursor.com/docs/cli/mcp):

```json
{
"mcpServers": {
"runpod": {
"command": "npx",
"args": ["-y", "@runpod/mcp-server@latest"],
"env": {
"RUNPOD_API_KEY": "your_api_key_here"
}
}
}
}
```

### VS Code with Copilot

1. Open the Command Palette (Ctrl+Shift+P on Windows/Linux or Cmd+Shift+P on macOS).
2. Run **MCP: Add Server** and select **stdio**.
3. Enter the following details:
- **Name:** `Runpod`
- **Command:** `npx`
- **Arguments:** `-y @runpod/mcp-server@latest`
4. Add environment variable `RUNPOD_API_KEY` with your Runpod API key.
5. Select **Global** or **Workspace** and click **Add**.

### Claude Desktop

Add the following to your Claude Desktop config file:

- **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
- **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`

```json
{
"mcpServers": {
"runpod": {
"command": "npx",
"args": ["-y", "@runpod/mcp-server@latest"],
"env": {
"RUNPOD_API_KEY": "your_api_key_here"
}
}
}
}
```

Restart Claude Desktop after saving the file.

### Windsurf

Edit `~/.codeium/windsurf/mcp_config.json` (or open from **Settings** > **Cascade** > **MCP Servers** > **View raw config**):

```json
{
"mcpServers": {
"runpod": {
"command": "npx",
"args": ["-y", "@runpod/mcp-server@latest"],
"env": {
"RUNPOD_API_KEY": "your_api_key_here"
}
}
}
}
```

### Cline

Open the Cline sidebar in VS Code, click the **MCP Servers** icon, then select **Configure MCP Servers** to edit `cline_mcp_settings.json`:

```json
{
"mcpServers": {
"runpod": {
"command": "npx",
"args": ["-y", "@runpod/mcp-server@latest"],
"env": {
"RUNPOD_API_KEY": "your_api_key_here"
},
"disabled": false
}
}
}
```

### Gemini CLI

Add to `~/.gemini/settings.json` (global) or `.gemini/settings.json` (project-level):

```json
{
"mcpServers": {
"runpod": {
"command": "npx",
"args": ["-y", "@runpod/mcp-server@latest"],
"env": {
"RUNPOD_API_KEY": "your_api_key_here"
}
}
}
}
```

### Other clients

For any other MCP-compatible client, use the following connection details:

- **Command:** `npx`
- **Args:** `-y @runpod/mcp-server@latest`
- **Environment:** `RUNPOD_API_KEY=your_api_key_here`

### Usage examples

Once connected, you can interact with your Runpod resources using natural language:

```
List all my Runpod Pods
```

```
Create a new Runpod Pod with the following specifications:
- Name: ml-training-pod
- Image: runpod/pytorch:2.1.0-py3.10-cuda11.8.0-devel-ubuntu22.04
- GPU Type: NVIDIA GeForce RTX 4090
- GPU Count: 1
- Cloud Type: SECURE
```

```
Create a Runpod Serverless endpoint with the following configuration:
- Name: image-generation-endpoint
- Template ID: 30zmvf89kd
- Minimum workers: 0
- Maximum workers: 5
```

```
Stop the Pod named "ml-training-pod"
```

## Runpod docs MCP server

The Runpod docs MCP server provides access to Runpod's documentation knowledge base, making it easier to get answers about features and how to use them.

**Endpoint:** `https://docs.runpod.io/mcp`

**Authentication:** None required

### Claude Code

```bash
claude mcp add runpod-docs --scope user --transport http https://docs.runpod.io/mcp
```

### Codex CLI

```bash
codex mcp add runpod-docs --url https://docs.runpod.io/mcp
```

### Cursor

Add to your `.cursor/mcp.json` file:

```json
{
"mcpServers": {
"runpod-docs": {
"url": "https://docs.runpod.io/mcp"
}
}
}
```

### VS Code with Copilot

1. Open the Command Palette (Ctrl+Shift+P on Windows/Linux or Cmd+Shift+P on macOS).
2. Run **MCP: Add Server** and select **HTTP**.
3. Enter `https://docs.runpod.io/mcp` as the URL and `Runpod Docs` as the name.
4. Select **Global** or **Workspace** and click **Add**.

### Claude Desktop

1. Open **Settings** in Claude Desktop.
2. Navigate to **Connectors** and select **Add custom connector**.
3. Enter `https://docs.runpod.io/mcp` as the URL and click **Add**.

### Windsurf

Add to `~/.codeium/windsurf/mcp_config.json`:

```json
{
"mcpServers": {
"runpod-docs": {
"serverUrl": "https://docs.runpod.io/mcp"
}
}
}
```

### Cline

Add to `cline_mcp_settings.json`:

```json
{
"mcpServers": {
"runpod-docs": {
"url": "https://docs.runpod.io/mcp",
"disabled": false
}
}
}
```

### Gemini CLI

Add to `~/.gemini/settings.json`. Note that Gemini CLI uses `httpUrl` instead of `url`:

```json
{
"mcpServers": {
"runpod-docs": {
"httpUrl": "https://docs.runpod.io/mcp"
}
}
}
```

### Other clients

For any other MCP-compatible client, use URL `https://docs.runpod.io/mcp` (HTTP transport).

### Usage examples

With the docs MCP server connected, you can ask questions about Runpod features:

```
Explain the Runpod Serverless model caching feature
```

```
How do I configure environment variables for a Serverless endpoint?
```

```
How does global networking work in Runpod?
```
11 changes: 6 additions & 5 deletions overview.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ If you're new to Runpod, start here to learn the essentials and deploy your firs
<Card title="Create an API key" href="/get-started/api-keys" icon="key" iconType="solid">
Create API keys to manage your access to Runpod resources.
</Card>
<Card title="Manage your account" href="/get-started/manage-accounts" icon="users" iconType="solid">
Learn how to manage your account, teams, and billing.
<Card title="Connect to MCP servers" href="/get-started/mcp-servers" icon="square-terminal" iconType="solid">
Connect your AI tools to Runpod's MCP servers to manage resources and access docs.
</Card>
</CardGroup>

Expand All @@ -48,12 +48,13 @@ Serverless provides pay-per-second computing with automatic scaling for producti
<Card title="Pricing" href="/serverless/pricing" icon="dollar-sign" iconType="solid">
Learn how Serverless billing works and how to optimize your costs.
</Card>
<Card title="Quickstart" href="/serverless/quickstart" icon="code" iconType="solid">
Write a handler function, build a worker image, create an endpoint, and send your first request.
</Card>
<Card title="vLLM quickstart" href="/serverless/vllm/get-started" icon="cloud-bolt" iconType="solid">
Deploy a large language model for text or image generation in minutes using vLLM.
</Card>
<Card title="Build your first worker" href="/serverless/workers/custom-worker" icon="code" iconType="solid">
Build a custom worker and deploy it as a Serverless endpoint.
</Card>

</CardGroup>

## Pods
Expand Down
6 changes: 6 additions & 0 deletions snippets/tooltips.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -155,6 +155,12 @@ export const NetworkVolumeTooltip = () => {
);
};

export const NetworkVolumesTooltip = () => {
return (
<Tooltip headline="Network volume" tip="Persistent storage that exists independently of your other compute resources. Can be attached to multiple Pods or Serverless endpoints to share data between machines." cta="Learn more about network volumes" href="/storage/network-volumes">network volumes</Tooltip>
);
};


export const VolumeDiskTooltip = () => {
return (
Expand Down