# Install by agent

> Set up the Upstash MCP server and Skills for your coding agent.

Pick your agent below. The first block in each section is the recommended setup: it connects the remote [MCP server](/agent-resources/mcp) at `https://mcp.upstash.com/mcp` and installs the [Upstash Skills](/agent-resources/skills). Neither needs credentials up front. The MCP server asks you to sign in over OAuth on the first tool call.

Everything else, such as editing the config file by hand or running the local (stdio) server with your email and a [Developer API key](/devops/developer-api/introduction#create-an-api-key), is under **Other options** in each section. See the [MCP server page](/agent-resources/mcp) for how the remote and local servers compare.

## Claude Code

From inside Claude Code:

```
/plugin marketplace add upstash/skills
/plugin install upstash@upstash
```

The plugin bundles the skills and the remote MCP server. Approve the consent screen on the first tool call.

<Accordion title="Other options">
  **MCP server only, without the plugin**

  ```sh
  claude mcp add --scope user --transport http upstash https://mcp.upstash.com/mcp
  ```

  Then run `/mcp` → **Authenticate**.

  **Local (stdio) server**

  ```sh
  claude mcp add --transport stdio upstash -- npx -y @upstash/mcp-server@latest --email YOUR_EMAIL --api-key YOUR_API_KEY
  ```

  See the [Claude Code plugin docs](https://code.claude.com/docs/en/plugins) and [MCP docs](https://docs.anthropic.com/en/docs/claude-code/mcp) for more info.
</Accordion>

## Claude Desktop

Go to **Customize → Plugins**, click **Add → Add marketplace**, choose **Add from a repository**, and enter `upstash/skills`. Install the **upstash** plugin from that marketplace.

The plugin bundles the skills and the remote MCP server. Approve the consent screen on the first tool call.

## Cursor

Add the MCP server with one click:

[![Install MCP Server](https://cursor.com/deeplink/mcp-install-dark.svg)](https://cursor.com/en/install-mcp?name=upstash&config=eyJ1cmwiOiJodHRwczovL21jcC51cHN0YXNoLmNvbS9tY3AifQ%3D%3D)

Then install the skills:

```bash
npx skills add upstash/skills --agent cursor
```

<Accordion title="Other options">
  **Add the MCP server by hand**

  Put this in `~/.cursor/mcp.json`, or in `.cursor/mcp.json` to scope it to one project:

  ```json
  {
    "mcpServers": {
      "upstash": { "url": "https://mcp.upstash.com/mcp" }
    }
  }
  ```

  **Local (stdio) server**

  ```json
  {
    "mcpServers": {
      "upstash": {
        "command": "npx",
        "args": ["-y", "@upstash/mcp-server@latest", "--email", "YOUR_EMAIL", "--api-key", "YOUR_API_KEY"]
      }
    }
  }
  ```
</Accordion>

## OpenAI Codex

```bash
codex plugin marketplace add upstash/skills
codex plugin add upstash@upstash
```

The plugin bundles the skills and the remote MCP server. Approve the consent screen on the first tool call.

<Accordion title="Other options">
  **MCP server only, without the plugin**

  Put this in `~/.codex/config.toml`, or in `.codex/config.toml` for one project:

  ```toml
  [mcp_servers.upstash]
  url = "https://mcp.upstash.com/mcp"
  ```

  **Local (stdio) server**

  ```sh
  codex mcp add upstash -- npx -y @upstash/mcp-server@latest --email YOUR_EMAIL --api-key YOUR_API_KEY
  ```

  See the [Codex plugin docs](https://developers.openai.com/codex/plugins/build) and [MCP docs](https://developers.openai.com/codex/mcp) for more info.
</Accordion>

## OpenCode

Add the MCP server to `opencode.json`, or `~/.config/opencode/opencode.json` for every project:

```json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "upstash": {
      "type": "remote",
      "url": "https://mcp.upstash.com/mcp",
      "enabled": true
    }
  }
}
```

Then install the skills (add `--global` to make them available in every project):

```bash
npx skills add upstash/skills --agent opencode
```

<Accordion title="Other options">
  **Local (stdio) server**

  ```json
  {
    "$schema": "https://opencode.ai/config.json",
    "mcp": {
      "upstash": {
        "type": "local",
        "command": ["npx", "-y", "@upstash/mcp-server@latest", "--email", "YOUR_EMAIL", "--api-key", "YOUR_API_KEY"],
        "enabled": true
      }
    }
  }
  ```

  See the [OpenCode skills](https://opencode.ai/docs/skills) and [MCP docs](https://opencode.ai/docs/mcp-servers) for more info.
</Accordion>

## Zed

Add the MCP server to `settings.json`, or through **Settings → AI → MCP Servers → Add Server → Add Remote Server**:

```json
{
  "context_servers": {
    "upstash": {
      "url": "https://mcp.upstash.com/mcp"
    }
  }
}
```

<Note>
  Context servers are project-scoped in Zed. Open a folder before testing, otherwise the server never starts.
</Note>

Then install the skills (add `--global` to make them available in every project):

```bash
npx skills add upstash/skills --agent zed
```

<Accordion title="Other options">
  **Local (stdio) server**

  The repo ships a Zed extension in [`zed-extension/`](https://github.com/upstash/skills/tree/main/zed-extension). Clone the repo, run `zed: install dev extension` from the command palette, and pick the `zed-extension/` directory. Zed then prompts for `upstash_email` and `upstash_api_key`.

  See the [Zed skills](https://zed.dev/docs/ai/skills) and [MCP docs](https://zed.dev/docs/ai/mcp) for more info.
</Accordion>

## GitHub Copilot

Add the MCP server to VS Code with one click:

[<img alt="Install in VS Code" src="https://img.shields.io/badge/Install%20in%20VS%20Code-0098FF?style=for-the-badge&logo=visualstudiocode&logoColor=white" />](https://insiders.vscode.dev/redirect?url=vscode%3Amcp%2Finstall%3F%7B%22name%22%3A%22upstash%22%2C%22type%22%3A%22http%22%2C%22url%22%3A%22https%3A%2F%2Fmcp.upstash.com%2Fmcp%22%7D)

Then install the skills:

```bash
npx skills add upstash/skills --agent github-copilot
```

<Accordion title="Other options">
  **Add the MCP server by hand**

  Put this in `.vscode/mcp.json`:

  ```json
  {
    "servers": {
      "upstash": {
        "type": "http",
        "url": "https://mcp.upstash.com/mcp"
      }
    }
  }
  ```

  **Local (stdio) server**

  ```json
  {
    "servers": {
      "upstash": {
        "type": "stdio",
        "command": "npx",
        "args": ["-y", "@upstash/mcp-server@latest", "--email", "YOUR_EMAIL", "--api-key", "YOUR_API_KEY"]
      }
    }
  }
  ```

  See the [VS Code MCP docs](https://code.visualstudio.com/docs/copilot/chat/mcp-servers) for more info.
</Accordion>

## Devin Desktop

Devin Desktop is the new name for Windsurf and keeps its settings. Add the MCP server to `~/.codeium/windsurf/mcp_config.json`:

```json
{
  "mcpServers": {
    "upstash": {
      "serverUrl": "https://mcp.upstash.com/mcp"
    }
  }
}
```

Then install the skills:

```bash
npx skills add upstash/skills --agent windsurf
```

<Accordion title="Other options">
  **Local (stdio) server**

  ```json
  {
    "mcpServers": {
      "upstash": {
        "command": "npx",
        "args": ["-y", "@upstash/mcp-server@latest", "--email", "YOUR_EMAIL", "--api-key", "YOUR_API_KEY"]
      }
    }
  }
  ```

  See the [Devin Desktop migration notes](https://devin.ai/desktop) for more info.
</Accordion>

## Gemini CLI

```bash
gemini extensions install https://github.com/upstash/skills
```

The extension bundles the skills and the remote MCP server. Approve the consent screen on the first tool call.

<Accordion title="Other options">
  **MCP server and skills separately**

  ```bash
  gemini mcp add --transport http upstash https://mcp.upstash.com/mcp
  npx skills add upstash/skills --agent gemini-cli
  ```

  Or add the server to `~/.gemini/settings.json` by hand:

  ```json
  {
    "mcpServers": {
      "upstash": {
        "httpUrl": "https://mcp.upstash.com/mcp"
      }
    }
  }
  ```

  **Local (stdio) server**

  ```json
  {
    "mcpServers": {
      "upstash": {
        "command": "npx",
        "args": ["-y", "@upstash/mcp-server@latest", "--email", "YOUR_EMAIL", "--api-key", "YOUR_API_KEY"]
      }
    }
  }
  ```

  See the [Gemini CLI extension](https://geminicli.com/docs/extensions/) and [MCP docs](https://google-gemini.github.io/gemini-cli/docs/tools/mcp-server.html) for more info.
</Accordion>

## Google Antigravity

Add the MCP server to your Antigravity MCP config. Antigravity registers itself as an OAuth client, so no credentials go in the file:

```json
{
  "mcpServers": {
    "upstash": {
      "serverUrl": "https://mcp.upstash.com/mcp"
    }
  }
}
```

Then install the skills:

```bash
npx skills add upstash/skills --agent antigravity
```

<Accordion title="Other options">
  **Local (stdio) server**

  ```json
  {
    "mcpServers": {
      "upstash": {
        "command": "npx",
        "args": ["-y", "@upstash/mcp-server@latest", "--email", "YOUR_EMAIL", "--api-key", "YOUR_API_KEY"]
      }
    }
  }
  ```

  See the [Antigravity MCP docs](https://antigravity.google/docs/mcp) for more info.
</Accordion>

## DeepSeek Harness

Requires `pnpm` on your `PATH`. Install the bundle into a profile (`web` is the one `dsh web` boots) and start the harness:

```bash
dsh plugin --profile web add github:upstash/skills
dsh web
```

The bundle loads the skills right away. It also mounts the local (stdio) MCP server, which starts once you store your credentials from inside a session:

```
/upstash-login YOUR_EMAIL YOUR_API_KEY
```

Credentials are saved to `~/.dsh/.credentials.yaml`. The server restarts whenever they change.

## Grok

```bash
grok mcp add --transport http upstash https://mcp.upstash.com/mcp
npx skills add upstash/skills --agent grok
```

Pass `--scope project` to `grok mcp add` to write the server to `.grok/config.toml` in the current directory. Run `grok mcp doctor upstash` to check the connection.

<Note>
  Grok Build also reads Claude Code plugins, so if you already installed the [Claude Code plugin](#claude-code), the skills are available without the second command.
</Note>

<Accordion title="Other options">
  **Add the MCP server by hand**

  Put this in `~/.grok/config.toml`:

  ```toml
  [mcp_servers.upstash]
  url = "https://mcp.upstash.com/mcp"
  ```

  **Local (stdio) server**

  ```toml
  [mcp_servers.upstash]
  command = "npx"
  args = ["-y", "@upstash/mcp-server@latest", "--email", "YOUR_EMAIL", "--api-key", "YOUR_API_KEY"]
  ```

  See the [Grok Build MCP docs](https://docs.x.ai/build/features/mcp-servers) for more info.
</Accordion>

## Kilo Code

Add the MCP server to `kilo.jsonc` in the project root, or `~/.config/kilo/kilo.jsonc` for every project:

```json
{
  "mcp": {
    "upstash": {
      "type": "remote",
      "url": "https://mcp.upstash.com/mcp",
      "enabled": true
    }
  }
}
```

Then install the skills:

```bash
npx skills add upstash/skills --agent kilo
```

<Accordion title="Other options">
  **Local (stdio) server**

  ```json
  {
    "mcp": {
      "upstash": {
        "type": "local",
        "command": ["npx", "-y", "@upstash/mcp-server@latest", "--email", "YOUR_EMAIL", "--api-key", "YOUR_API_KEY"],
        "enabled": true
      }
    }
  }
  ```
</Accordion>

## Copilot CLI

```bash
copilot mcp add --transport http upstash https://mcp.upstash.com/mcp
npx skills add upstash/skills --agent github-copilot
```

<Accordion title="Other options">
  **Add the MCP server by hand**

  Put this in `~/.copilot/mcp-config.json`:

  ```json
  {
    "mcpServers": {
      "upstash": {
        "type": "http",
        "url": "https://mcp.upstash.com/mcp"
      }
    }
  }
  ```

  **Local (stdio) server**

  ```json
  {
    "mcpServers": {
      "upstash": {
        "type": "local",
        "command": "npx",
        "args": ["-y", "@upstash/mcp-server@latest", "--email", "YOUR_EMAIL", "--api-key", "YOUR_API_KEY"]
      }
    }
  }
  ```
</Accordion>

## Warp

Go to **Settings → Agents → MCP servers → + Add** and paste:

```json
{
  "upstash": {
    "url": "https://mcp.upstash.com/mcp",
    "start_on_launch": true
  }
}
```

Then install the skills:

```bash
npx skills add upstash/skills --agent warp
```

<Accordion title="Other options">
  **Local (stdio) server**

  ```json
  {
    "upstash": {
      "command": "npx",
      "args": ["-y", "@upstash/mcp-server@latest", "--email", "YOUR_EMAIL", "--api-key", "YOUR_API_KEY"],
      "env": {},
      "working_directory": null,
      "start_on_launch": true
    }
  }
  ```
</Accordion>

## Qwen Code

```bash
qwen mcp add --transport http upstash https://mcp.upstash.com/mcp
npx skills add upstash/skills --agent qwen-code
```

<Accordion title="Other options">
  **Add the MCP server by hand**

  Put this in `~/.qwen/settings.json`, or `.qwen/settings.json` for one project:

  ```json
  {
    "mcpServers": {
      "upstash": {
        "httpUrl": "https://mcp.upstash.com/mcp"
      }
    }
  }
  ```

  **Local (stdio) server**

  ```bash
  qwen mcp add upstash -- npx -y @upstash/mcp-server@latest --email YOUR_EMAIL --api-key YOUR_API_KEY
  ```
</Accordion>

## Hermes

Add the MCP server to `~/.hermes/config.yaml`:

```yaml
mcp_servers:
  upstash:
    url: "https://mcp.upstash.com/mcp"
```

Then install the skills:

```bash
npx skills add upstash/skills --agent hermes-agent
```

<Accordion title="Other options">
  **Local (stdio) server**

  ```yaml
  mcp_servers:
    upstash:
      command: "npx"
      args: ["-y", "@upstash/mcp-server@latest", "--email", "YOUR_EMAIL", "--api-key", "YOUR_API_KEY"]
  ```
</Accordion>

## Factory

```bash
droid mcp add upstash https://mcp.upstash.com/mcp --type http
npx skills add upstash/skills --agent droid
```

<Accordion title="Other options">
  **Local (stdio) server**

  ```bash
  droid mcp add upstash "npx -y @upstash/mcp-server@latest --email YOUR_EMAIL --api-key YOUR_API_KEY"
  ```
</Accordion>

## fx

From inside an fx session:

```
/mcp add --transport http upstash https://mcp.upstash.com/mcp
/skills install upstash/skills --skill upstash
```

<Accordion title="Other options">
  **Add the MCP server by hand**

  Put this in `~/.fx/mcp.json`:

  ```json
  {
    "mcp": {
      "upstash": {
        "type": "http",
        "url": "https://mcp.upstash.com/mcp"
      }
    }
  }
  ```

  **Local (stdio) server**

  ```json
  {
    "mcp": {
      "upstash": {
        "type": "stdio",
        "command": ["npx", "-y", "@upstash/mcp-server@latest", "--email", "YOUR_EMAIL", "--api-key", "YOUR_API_KEY"]
      }
    }
  }
  ```

  See the [fx MCP docs](https://fx.sh/docs/capabilities/mcp) for more info.
</Accordion>

## Crush

Add the MCP server to your Crush config file:

```json
{
  "$schema": "https://charm.land/crush.json",
  "mcp": {
    "upstash": {
      "type": "http",
      "url": "https://mcp.upstash.com/mcp"
    }
  }
}
```

Then install the skills:

```bash
npx skills add upstash/skills --agent crush
```

<Accordion title="Other options">
  **Local (stdio) server**

  ```json
  {
    "$schema": "https://charm.land/crush.json",
    "mcp": {
      "upstash": {
        "type": "stdio",
        "command": "npx",
        "args": ["-y", "@upstash/mcp-server@latest", "--email", "YOUR_EMAIL", "--api-key", "YOUR_API_KEY"]
      }
    }
  }
  ```
</Accordion>

## Any other agent

Add the MCP server to your client's config. Most clients take this shape:

```json
{
  "mcpServers": {
    "upstash": {
      "url": "https://mcp.upstash.com/mcp"
    }
  }
}
```

Then install the skills. The [Agent Skills CLI](https://github.com/vercel-labs/skills) supports 70+ agents and detects the ones on your machine:

```bash
npx skills add upstash/skills
```

<Accordion title="Other options">
  **Skills CLI flags**

  Add `--global` (`-g`) to install for every project, `--agent` (`-a`) to target one agent, and `--skill` (`-s`) to install a single SDK skill, for example `--skill upstash-qstash-js`.

  **Transport type**

  Some clients want the transport named next to the URL: `"type": "http"` for most, `"type": "streamable-http"` for Roo Code, `"type": "remote"` for OpenCode and Kilo Code. Unrecognized keys are usually ignored, so start with the plain `url`.

  **Local (stdio) server**

  ```json
  {
    "mcpServers": {
      "upstash": {
        "command": "npx",
        "args": ["-y", "@upstash/mcp-server@latest", "--email", "YOUR_EMAIL", "--api-key", "YOUR_API_KEY"]
      }
    }
  }
  ```
</Accordion>

Where some other clients take it, with their Agent Skills CLI `id`:

| Client | Skills `id` | MCP server |
|--------|-------------|------------|
| Amp | `amp` | `amp mcp add upstash https://mcp.upstash.com/mcp` |
| Kiro | `kiro-cli` | `.kiro/settings/mcp.json`, or **Kiro → MCP Servers → + Add**; takes `url` |
| Cline | `cline` | **MCP Servers → Remote Servers → Edit Configuration**; takes `url` |
| Roo Code | `roo` | MCP settings file (`mcp_settings.json`); needs `"type": "streamable-http"` |
| Trae | `trae` | **MCP → Add manually**; takes `url` |
| Augment Code | `augment` | **Settings → MCP → + Add remote MCP**, connection type **HTTP** |
| Zencoder | `zencoder` | **Agent tools → Add custom MCP**, paste the `upstash` entry |
| Rovo Dev CLI | `rovodev` | `acli rovodev mcp` opens the config file; takes `url` |
