# Vapi MCP server

> Manage Vapi voice assistants, phone numbers, custom tools and outbound or scheduled calls from your AI assistant.

- Listing: https://mcp.tc/i/vapi
- Connect: use the server's own URL `https://mcp.vapi.ai/mcp` (with your API key); clients connect to it directly. The listing link is a page, not an MCP endpoint.
- Type: remote (Streamable HTTP)
- Auth: API key
- Category: [Communication & Meetings](https://mcp.tc/c/communication)
- Vendor: Vapi
- Homepage: <https://docs.vapi.ai/sdk/mcp-server>
- Repository: <https://github.com/VapiAI/mcp-server>
- Package: npm `@vapi-ai/mcp-server`

## About

Connects to the Vapi voice agent platform and exposes its API as MCP tools. You can list, create and update voice assistants, review call history, start outbound calls (immediately or scheduled), look up phone numbers, and manage custom function-calling tools.

It runs as a hosted Streamable HTTP endpoint at https://mcp.vapi.ai/mcp, or locally with npx -y @vapi-ai/mcp-server. Both need a Vapi API key: send it as a Bearer token in the Authorization header for the hosted server, or set VAPI\_TOKEN for the local one.

## What it can do

- List, view, create and update voice assistants
- Start outbound calls now or schedule them
- Pass dynamic variables into assistant prompts per call
- Browse call history and call details
- List phone numbers and view their details
- Create and update custom tools for API integration

## Example prompts

- "List my Vapi assistants."
- "Create a voice assistant that can schedule appointments."
- "Call +1234567890 using my appointment reminder assistant."
- "Show details for my most recent Vapi call."

## Install

### Claude Code

1. Run this in a terminal, in your project folder:

```bash
claude mcp add --transport http vapi https://mcp.vapi.ai/mcp --header "Authorization: Bearer <YOUR_API_KEY>"
```

2. Replace the placeholder with your key before you run it, then check it with `/mcp` inside Claude Code.

Add `--scope user` to make it available in every project, not just this one.

### Claude Desktop

1. Custom connectors can’t send this server’s key header, so use the `mcp-remote` bridge. Open **Settings → Developer → Edit Config** and add:

`claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "vapi": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://mcp.vapi.ai/mcp",
        "--header",
        "Authorization: Bearer <YOUR_API_KEY>"
      ]
    }
  }
}
```

2. Replace the placeholder with your key and restart Claude Desktop.

The bridge needs Node.js on your computer.

### Cursor

[Add to Cursor](<https://cursor.com/install-mcp?name=vapi&config=eyJ1cmwiOiJodHRwczovL21jcC52YXBpLmFpL21jcCIsImhlYWRlcnMiOnsiQXV0aG9yaXphdGlvbiI6IkJlYXJlciA8WU9VUl9BUElfS0VZPiJ9fQ%3D%3D>) (opens Cursor)

Or add it by hand to `~/.cursor/mcp.json` (all projects) or `.cursor/mcp.json` (this project):

`mcp.json`:

```json
{
  "mcpServers": {
    "vapi": {
      "url": "https://mcp.vapi.ai/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
```

### VS Code

Add it to `.vscode/mcp.json`. VS Code asks for the key the first time and stores it securely:

`.vscode/mcp.json`:

```json
{
  "servers": {
    "vapi": {
      "type": "http",
      "url": "https://mcp.vapi.ai/mcp",
      "headers": {
        "Authorization": "Bearer ${input:api-key}"
      }
    }
  },
  "inputs": [
    {
      "type": "promptString",
      "id": "api-key",
      "description": "API key",
      "password": true
    }
  ]
}
```

### Devin Desktop

1. Add it to `~/.config/devin/mcp_config.json` (macOS and Linux) or `%APPDATA%\devin\mcp_config.json` (Windows):

`mcp_config.json`:

```json
{
  "mcpServers": {
    "vapi": {
      "serverUrl": "https://mcp.vapi.ai/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
```

2. Refresh the MCP server list in Cascade.

Devin Desktop is the new name for Windsurf. It reads `serverUrl` (or `url`) for remote servers.

### Codex

```bash
codex mcp add vapi --url https://mcp.vapi.ai/mcp --bearer-token-env-var VAPI_API_KEY
```

Or edit `~/.codex/config.toml` directly:

`config.toml`:

```toml
[mcp_servers.vapi]
url = "https://mcp.vapi.ai/mcp"
bearer_token_env_var = "VAPI_API_KEY"
```

Set `VAPI_API_KEY` to your key in the shell that runs Codex.

### Gemini CLI

```bash
gemini mcp add --transport http --header "Authorization: Bearer <YOUR_API_KEY>" vapi https://mcp.vapi.ai/mcp
```

This adds it to the current project. Add `-s user` to use it everywhere.

### Any client

Most clients accept this shape. Some name the URL field differently: `serverUrl` in Devin Desktop, `httpUrl` in Gemini CLI’s settings file.

```json
{
  "mcpServers": {
    "vapi": {
      "type": "http",
      "url": "https://mcp.vapi.ai/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_API_KEY>"
      }
    }
  }
}
```

Zed puts servers under `context_servers` in its settings. Cline needs `"type": "streamableHttp"`, or it assumes SSE.

Client only starts local servers? Bridge it with `npx -y mcp-remote https://mcp.vapi.ai/mcp`.

## Details

- Server version: 0.0.11
- Last checked: 2026-10-03 (reachable, asks for credentials)
- Listed: 2026-10-03
- Updated: 2026-10-03

---
Source: https://mcp.tc/i/vapi (mcp.tc is an independent directory, not affiliated with this server's publisher). Corrections: https://mcp.tc/report
