Vapi
STDIOSTREAMABLE HTTPHTTP-SSEMCP server for integrating with Vapi APIs through function calling for phone call management.
MCP server for integrating with Vapi APIs through function calling for phone call management.
The Vapi Model Context Protocol server allows you to integrate with Vapi APIs through function calling.
Claude Desktop and press CMD + , to go to Settings.Developer tab.Edit Config button.claude_desktop_config.json file in your file explorer.claude_desktop_config.json file. See here for more details.{ "mcpServers": { "vapi-mcp-server": { "command": "npx", "args": [ "-y", "@vapi-ai/mcp-server" ], "env": { "VAPI_TOKEN": "<your_vapi_token>" } } } }
{ "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 1: Request an immediate call
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
I need to schedule a call with Mary assistant for next Tuesday at 3:00 PM. My phone number is +1555123456.
Example 3: Make a call with dynamic variables
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
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}}.
Hello {{customerName}}, this is a reminder about your appointment on {{appointmentDate}} at {{appointmentTime}} with {{doctorName}}.
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 numberFor more details on default variables and advanced date/time formatting, see the official Vapi documentation.
To connect to Vapi's MCP server remotely:
The default and recommended way to connect is via Streamable HTTP Transport:
https://mcp.vapi.ai/mcp from any MCP client using Streamable HTTP TransportAuthorization: Bearer your_vapi_api_key_hereServer-Sent Events (SSE) Transport is still supported but deprecated:
https://mcp.vapi.ai/sse from any MCP client using SSE TransportAuthorization: Bearer your_vapi_api_key_hereThis connection allows you to access Vapi's functionality remotely without running a local server.
# Install dependencies npm install # Build the server npm run build # Use inspector to test the server npm run inspector
Update your claude_desktop_config.json to use the local server.
{ "mcpServers": { "vapi-local": { "command": "node", "args": [ "<path_to_vapi_mcp_server>/dist/index.js" ], "env": { "VAPI_TOKEN": "<your_vapi_token>" } }, } }
The project has two types of tests:
Unit tests use mocks to test the MCP server without making actual API calls to Vapi.
# Run unit tests npm run test:unit
E2E tests run the full MCP server with actual API calls to Vapi.
# Set your Vapi API token export VAPI_TOKEN=your_token_here # Run E2E tests npm run test:e2e
Note: E2E tests require a valid Vapi API token to be set in the environment.
To run all tests at once:
npm test
The Vapi MCP Server provides the following tools for integration:
list_assistants: Lists all Vapi assistantscreate_assistant: Creates a new Vapi assistantupdate_assistant: Updates an existing Vapi assistantget_assistant: Gets a Vapi assistant by IDlist_calls: Lists all Vapi callscreate_call: Creates an outbound call with support for:
assistantOverridesget_call: Gets details of a specific callNote: 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.
list_phone_numbers: Lists all Vapi phone numbersget_phone_number: Gets details of a specific phone numberlist_tools: Lists all Vapi toolsget_tool: Gets details of a specific tool