Skip to content

Repository files navigation

Vapi MCP Server

Build AI voice assistants and phone agents with Vapi using the Model Context Protocol.

Setup

The MCP server requires a Vapi API key. Get one from the Vapi dashboard.

Local Server (stdio)

Configure any MCP client that supports local stdio servers to run:

npx -y @vapi-ai/mcp-server

Set VAPI_TOKEN in the server environment. MCP client configuration formats vary, but the server definition generally looks like this:

{
  "mcpServers": {
    "vapi": {
      "command": "npx",
      "args": ["-y", "@vapi-ai/mcp-server"],
      "env": {
        "VAPI_TOKEN": "<your_vapi_token>"
      }
    }
  }
}

Remote Server (Streamable HTTP)

Clients that support remote MCP servers can connect directly:

  • URL: https://mcp.vapi.ai/mcp
  • Header: Authorization: Bearer your_vapi_api_key_here

Client-Specific Examples

Claude Code

claude mcp add -e VAPI_TOKEN=your_vapi_token vapi -- npx -y @vapi-ai/mcp-server

Claude Desktop

Use the local server configuration above in the Claude Desktop configuration file. To connect to the hosted server through an stdio bridge instead:

{
  "mcpServers": {
    "vapi": {
      "command": "npx",
      "args": [
        "mcp-remote",
        "https://mcp.vapi.ai/mcp",
        "--header",
        "Authorization: Bearer ${VAPI_TOKEN}"
      ],
      "env": {
        "VAPI_TOKEN": "<your_vapi_token>"
      }
    }
  }
}

Optional Agent Skill

The skill directory contains reusable instructions for AI coding agents that support Agent Skills. Install it using your host's skill installation process.

For Claude Code:

mkdir -p ~/.claude/skills/vapi
curl -o ~/.claude/skills/vapi/SKILL.md https://raw.githubusercontent.com/VapiAI/mcp-server/main/skill/SKILL.md

Example Usage

Create a Voice Assistant

Ask your MCP-enabled agent:

I want to build a voice assistant that can schedule appointments

Make an Outbound Call

Call +1234567890 using my appointment reminder assistant with these details:
- Customer name: Sarah Johnson
- Appointment date: March 25th
- Appointment time: 2:30 PM

Schedule a Future Call

Schedule a call with my support assistant for next Tuesday at 3:00 PM to +1555123456

Using Variable Values in Assistant Prompts

The create_call action supports passing dynamic variables through assistantOverrides.variableValues. Use double curly braces in your assistant's prompts: {{variableName}}.

Example Prompt with Variables

Hello {{customerName}}, this is a reminder about your appointment on {{appointmentDate}} at {{appointmentTime}} with {{doctorName}}.

Default Variables

These are automatically available (no need to pass):

  • {{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

See Vapi documentation for advanced date/time formatting.


Remote MCP Server

Connect to Vapi's hosted MCP server from any MCP client:

Streamable HTTP (Recommended)

  • URL: https://mcp.vapi.ai/mcp
  • Header: Authorization: Bearer your_vapi_api_key_here

SSE (Deprecated)

  • URL: https://mcp.vapi.ai/sse
  • Header: Authorization: Bearer your_vapi_api_key_here

Available Tools

Assistants

Tool Description
list_assistants List all assistants
get_assistant Get assistant by ID
create_assistant Create new assistant
update_assistant Update assistant

Calls

Tool Description
list_calls List call history
get_call Get call details
create_call Start outbound call (immediate or scheduled)

Phone Numbers

Tool Description
list_phone_numbers List phone numbers
get_phone_number Get phone number details

Tools (Function Calling)

Tool Description
list_tools List custom tools
get_tool Get tool details
create_tool Create tool for API integration
update_tool Update tool

Development

# Install dependencies
npm install

# Build
npm run build

# Test with MCP inspector
npm run inspector

Local Development Config

{
  "mcpServers": {
    "vapi-local": {
      "command": "node",
      "args": ["<path>/dist/index.js"],
      "env": {
        "VAPI_TOKEN": "<your_vapi_token>"
      }
    }
  }
}

Testing

# Safe default suite (build, mocked execution, contract, and stdio compatibility)
npm test

# Unit tests (mocked public tool execution and catalog contract)
npm run test:unit

# Documentation/tool-catalog consistency lint
npm run test:docs

# Full TypeScript check (production and test code)
npm run typecheck

# Build and run local stdio protocol compatibility tests (no Vapi API calls)
npm run test:stdio

# Pack, install, and launch the package from a clean temporary consumer
npm run test:package

# Live read-only API tests
export VAPI_TOKEN=your_token_here
npm run test:live:readonly

# Live mutating tests (creates and cleans up disposable assistants and tools)
export VAPI_TOKEN=your_test_org_token_here
npm run test:live:mutating

References

About

Vapi MCP Server

Topics

Resources

Stars

57 stars

Watchers

2 watching

Forks

Releases

Packages

Used by

Contributors

Languages