# Vapi MCP Server – Voice AI Integration for Claude & Model Context Protocol
**Vapi MCP Server** is an open-source [Model Context Protocol](https://modelcontextprotocol.com/) (MCP) server that connects [Vapi](https://vapi.ai) voice AI APIs with Claude Desktop and other MCP clients. Manage assistants, create and schedule phone calls, and control voice AI tools—all from your AI workflow.
[](https://smithery.ai/server/@VapiAI/vapi-mcp-server)
<a href="https://glama.ai/mcp/servers/@VapiAI/mcp-server">
<img width="380" height="200" src="https://glama.ai/mcp/servers/@VapiAI/mcp-server/badge" alt="Vapi Server MCP server" />
</a>
---
## Table of Contents
- [About This Project](#about-this-project)
- [Features](#features)
- [Prerequisites](#prerequisites)
- [Quick Start](#quick-start)
- [Claude Desktop Setup](#claude-desktop-setup)
- [Using Variable Values in Assistant Prompts](#using-variable-values-in-assistant-prompts)
- [Remote MCP](#remote-mcp)
- [Supported Actions & Tools](#supported-actions--tools)
- [Development](#development)
- [Testing](#testing)
- [References](#references)
- [Author & Contact](#author--contact)
---
## About This Project
This project provides a **Model Context Protocol (MCP) server for Vapi**, enabling:
- **Claude Desktop integration** – Use Claude to create calls, manage assistants, and work with Vapi phone numbers via natural language.
- **Voice AI tool calling** – Expose Vapi assistants, calls, phone numbers, and tools as MCP tools for any MCP-compatible client.
- **Streamable HTTP & SSE** – Connect locally (stdio) or remotely to Vapi’s MCP endpoint.
Ideal for developers building voice AI workflows, appointment schedulers, and AI-powered phone integrations with [Vapi](https://vapi.ai) and [Claude](https://www.anthropic.com).
---
## Features
- **Assistant management** – List, create, update, and get Vapi assistants
- **Call control** – Create outbound calls (immediate or scheduled) with dynamic variables
- **Phone numbers** – List and inspect Vapi phone numbers
- **Vapi tools** – List and get Vapi tool definitions
- **Claude Desktop** – Drop-in configuration for Claude Desktop
- **Remote MCP** – Connect via Streamable HTTP or SSE to Vapi’s hosted MCP server
---
## Prerequisites
- [Node.js](https://nodejs.org/) (see [.nvmrc](.nvmrc) for recommended version)
- A [Vapi](https://vapi.ai) account and [API key](https://dashboard.vapi.ai/org/api-keys)
- [Claude Desktop](https://claude.ai/download) (optional, for Claude integration)
---
## Quick Start
1. Get your **Vapi API key** from the [Vapi dashboard](https://dashboard.vapi.ai/org/api-keys).
2. Install and run the server (see [Claude Desktop Setup](#claude-desktop-setup) or [Development](#development)).
3. Use your MCP client to call Vapi assistants, create calls, and manage phone numbers.
---
## Claude Desktop Setup
1. Open **Claude Desktop** and press `Cmd + ,` (Mac) or `Ctrl + ,` (Windows) to open **Settings**.
2. Go to the **Developer** tab.
3. Click **Edit Config** to open `claude_desktop_config.json`.
4. Add the MCP server configuration below (see [Model Context Protocol user quickstart](https://modelcontextprotocol.io/quickstart/user) for details).
5. **Restart Claude Desktop** after saving the config.
### Local Configuration
Run the Vapi MCP server locally via `npx`:
```json
{
"mcpServers": {
"vapi-mcp-server": {
"command": "npx",
"args": [
"-y",
"@vapi-ai/mcp-server"
],
"env": {
"VAPI_TOKEN": "<your_vapi_token>"
}
}
}
}
```
### Remote Configuration
Connect to Vapi’s remote MCP server (no local install):
```json
{
"mcpServers": {
"vapi-mcp": {
"command": "npx",
"args": [
"mcp-remote",
"https://mcp.vapi.ai/mcp",
"--header",
"Authorization: Bearer ${VAPI_TOKEN}"
],
"env": {
"VAPI_TOKEN": "<your_vapi_token>"
}
}
}
}
```
### Example Usage with Claude Desktop
1. Create or import a **phone number** in the [Vapi dashboard](https://dashboard.vapi.ai/phone-numbers).
2. Create a new **assistant** (e.g. using the “Appointment Scheduler” template) in the [Vapi dashboard](https://dashboard.vapi.ai/assistants).
3. Ensure Claude Desktop is configured with the Vapi MCP server and restart the app.
4. Ask Claude to initiate or schedule a call. Examples:
**Example 1: Request an immediate call**
```text
I'd like to speak with my ShopHelper assistant to talk about my recent order. Can you have it call me at +1234567890?
```
**Example 2: Schedule a future call**
```text
I need to schedule a call with Mary assistant for next Tuesday at 3:00 PM. My phone number is +1555123456.
```
**Example 3: Call with dynamic variables**
```text
I want to call +1234567890 with my appointment reminder assistant. Use these details:
- Customer name: Sarah Johnson
- Appointment date: March 25th
- Appointment time: 2:30 PM
- Doctor name: Dr. Smith
```
---
## Using Variable Values in Assistant Prompts
The `create_call` action supports dynamic variables via `assistantOverrides.variableValues`. Use them in your assistant’s prompts with double curly braces: `{{variableName}}`.
### Example Assistant Prompt with Variables
```text
Hello {{customerName}}, this is a reminder about your appointment on {{appointmentDate}} at {{appointmentTime}} with {{doctorName}}.
```
### Default Variables
These variables are available in prompts without passing `variableValues`:
| Variable | Description |
|----------|-------------|
| `{{now}}` | Current date and time (UTC) |
| `{{date}}` | Current date (UTC) |
| `{{time}}` | Current time (UTC) |
| `{{month}}` | Current month (UTC) |
| `{{day}}` | Current day of month (UTC) |
| `{{year}}` | Current year (UTC) |
| `{{customer.number}}` | Customer’s phone number |
For default variables and date/time formatting, see the [Vapi documentation](https://docs.vapi.ai/assistants/dynamic-variables#default-variables).
---
## Remote MCP
You can use Vapi’s MCP server remotely from any MCP client.
### Streamable HTTP (Recommended)
- **Endpoint:** `https://mcp.vapi.ai/mcp`
- Use **Streamable HTTP** transport and send your Vapi API key as a Bearer token.
- Example header: `Authorization: Bearer your_vapi_api_key_here`
### SSE (Deprecated)
- **Endpoint:** `https://mcp.vapi.ai/sse`
- Use **SSE** transport and send your Vapi API key as a Bearer token.
- Example header: `Authorization: Bearer your_vapi_api_key_here`
---
## Supported Actions & Tools
The Vapi MCP Server exposes these tools:
### Assistant Tools
| Tool | Description |
|------|-------------|
| `list_assistants` | List all Vapi assistants |
| `create_assistant` | Create a new Vapi assistant |
| `update_assistant` | Update an existing Vapi assistant |
| `get_assistant` | Get a Vapi assistant by ID |
### Call Tools
| Tool | Description |
|------|-------------|
| `list_calls` | List all Vapi calls |
| `create_call` | Create an outbound call (immediate or scheduled; supports `assistantOverrides.variableValues`) |
| `get_call` | Get details of a specific call |
### Phone Number Tools
| Tool | Description |
|------|-------------|
| `list_phone_numbers` | List all Vapi phone numbers |
| `get_phone_number` | Get details of a specific phone number |
### Vapi Tools
| Tool | Description |
|------|-------------|
| `list_tools` | List all Vapi tools |
| `get_tool` | Get details of a specific tool |
> **Note:** `create_call` supports scheduling (immediate or future) and dynamic variables via `assistantOverrides.variableValues`.
---
## Development
```bash
# Install dependencies
npm install
# Build the server
npm run build
# Run with MCP inspector (for testing)
npm run inspector
```
To use your local build with Claude Desktop, point the config to the built file:
```json
{
"mcpServers": {
"vapi-local": {
"command": "node",
"args": [
"<path_to_vapi_mcp_server>/dist/index.js"
],
"env": {
"VAPI_TOKEN": "<your_vapi_token>"
}
}
}
}
```
---
## Testing
### Unit Tests
Uses mocks; no real Vapi API calls.
```bash
npm run test:unit
```
### End-to-End Tests
Requires a valid `VAPI_TOKEN` and performs real API calls.
```bash
export VAPI_TOKEN=your_token_here
npm run test:e2e
```
### Run All Tests
```bash
npm test
```
---
## References
- [Vapi Remote MCP Server](https://mcp.vapi.ai/)
- [Vapi MCP Tool Documentation](https://docs.vapi.ai/tools/mcp)
- [Vapi MCP Server SDK](https://docs.vapi.ai/sdk/mcp)
- [Model Context Protocol](https://modelcontextprotocol.com/)
- [Claude Desktop – MCP Quickstart](https://modelcontextprotocol.io/quickstart/user)
---
## Author & Contact
**KuchikiRenji**
| | |
|---|---|
| **GitHub** | [github.com/KuchikiRenji](https://github.com/KuchikiRenji) |
| **Email** | KuchikiRenji@outlook.com |
| **Discord** | `kuchiki_renji` |
For issues, feature requests, or contributions, please open an [issue](https://github.com/KuchikiRenji/mcp-server/issues) or reach out via the channels above.