The Vapi MCP Server enables integration with Vapi APIs through the Model Context Protocol for managing:
Assistants: List, create, update, and retrieve assistants with customizable LLM, voice, transcriber, and first message configurations.
Calls: List, create, and retrieve calls, including scheduling outbound calls for immediate or future execution.
Phone Numbers: List and retrieve Vapi phone numbers.
Tools: List and retrieve Vapi tools.
Remote Connectivity: Connect to the server remotely using Server-Sent Events (SSE) for seamless integration.
Development & Testing: Supports local development with unit and end-to-end tests.
Allows the MCP server to be installed and run via NPX, making it easy to integrate Vapi's capabilities through the NPM package ecosystem.
Vapi MCP Server
The Vapi Model Context Protocol server allows you to integrate with Vapi APIs through function calling.
Claude Desktop Setup
Open
Claude Desktopand pressCMD + ,to go toSettings.Click on the
Developertab.Click on the
Edit Configbutton.This will open the
claude_desktop_config.jsonfile in your file explorer.Get your Vapi API key from the Vapi dashboard (https://dashboard.vapi.ai/org/api-keys).
Add the following to your
claude_desktop_config.jsonfile. See here for more details.Restart the Claude Desktop after editing the config file.
Local Configuration
Remote Configuration
Example Usage with Claude Desktop
Create or import a phone number using the Vapi dashboard (https://dashboard.vapi.ai/phone-numbers).
Create a new assistant using the existing 'Appointment Scheduler' template in the Vapi dashboard (https://dashboard.vapi.ai/assistants).
Make sure to configure Claude Desktop to use the Vapi MCP server and restart the Claude Desktop app.
Ask Claude to initiate or schedule a call. See examples below:
Example 1: Request an immediate call
Example 2: Schedule a future call
Example 3: Make a call with dynamic variables
Related MCP server: MCP Server
Using Variable Values in Assistant Prompts
The create_call action supports passing dynamic variables through assistantOverrides.variableValues. These variables can be used in your assistant's prompts using double curly braces: {{variableName}}.
Example Assistant Prompt with Variables
Default Variables
The following variables are automatically available (no need to pass in variableValues):
{{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 more details on default variables and advanced date/time formatting, see the official Vapi documentation.
Remote MCP
To connect to Vapi's MCP server remotely:
Streamable HTTP (Recommended)
The default and recommended way to connect is via Streamable HTTP Transport:
Connect to
https://mcp.vapi.ai/mcpfrom any MCP client using Streamable HTTP TransportInclude your Vapi API key as a bearer token in the request headers
Example header:
Authorization: Bearer your_vapi_api_key_here
SSE (Deprecated)
Server-Sent Events (SSE) Transport is still supported but deprecated:
Connect to
https://mcp.vapi.ai/ssefrom any MCP client using SSE TransportInclude your Vapi API key as a bearer token in the request headers
Example header:
Authorization: Bearer your_vapi_api_key_here
This connection allows you to access Vapi's functionality remotely without running a local server.
Development
Update your claude_desktop_config.json to use the local server.
Testing
The project has two types of tests:
Unit Tests
Unit tests use mocks to test the MCP server without making actual API calls to Vapi.
End-to-End Tests
E2E tests run the full MCP server with actual API calls to Vapi.
Note: E2E tests require a valid Vapi API token to be set in the environment.
Running All Tests
To run all tests at once:
References
Supported Actions
The Vapi MCP Server provides the following tools for integration:
Assistant Tools
list_assistants: Lists all Vapi assistantscreate_assistant: Creates a new Vapi assistantupdate_assistant: Updates an existing Vapi assistantget_assistant: Gets a Vapi assistant by ID
Call Tools
list_calls: Lists all Vapi callscreate_call: Creates an outbound call with support for:Immediate or scheduled calls
Dynamic variable values through
assistantOverrides
get_call: Gets details of a specific call
Note: The
create_callaction supports scheduling calls for immediate execution or for a future time. You can also pass dynamic variables usingassistantOverrides.variableValuesto personalize assistant messages.
Phone Number Tools
list_phone_numbers: Lists all Vapi phone numbersget_phone_number: Gets details of a specific phone number
Vapi Tools
list_tools: Lists all Vapi toolsget_tool: Gets details of a specific tool