Vapi
# Vapi MCP Server
The Vapi [Model Context Protocol](https://modelcontextprotocol.com/) server allows you to integrate with Vapi APIs through function calling.
## Claude Desktop Setup
1. Open `Claude Desktop` and press `CMD + ,` to go to `Settings`.
2. Click on the `Developer` tab.
3. Click on the `Edit Config` button.
4. This will open the `claude_desktop_config.json` file in your file explorer.
5. Get your Vapi API key from the Vapi dashboard (<https://dashboard.vapi.ai/org/api-keys>).
6. Add the following to your `claude_desktop_config.json` file. See [here](https://modelcontextprotocol.io/quickstart/user) for more details.
7. Restart the Claude Desktop after editing the config file.
```json
{
"mcpServers": {
"vapi-mcp-server": {
"command": "npx",
"args": [
"-y",
"@vapi-ai/mcp-server"
],
"env": {
"VAPI_TOKEN": "<your_vapi_token>"
}
}
}
}
```
### Example Usage with Claude Desktop
1. Create or import a phone number using the Vapi dashboard (<https://dashboard.vapi.ai/phone-numbers>).
2. Create a new assistant using the existing 'Appointment Scheduler' template in the Vapi dashboard (<https://dashboard.vapi.ai/assistants>).
3. Make sure to configure Claude Desktop to use the Vapi MCP server and restart the Claude Desktop app.
4. Ask Claude to initiate or schedule a call. See examples below:
**Example 1:** Request an immediate call
```md
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
```md
I need to schedule a call with Mary assistant for next Tuesday at 3:00 PM. My phone number is +1555123456.
```
## Remote SSE Connection
To connect to Vapi's MCP server via Server-Sent Events (SSE) Transport:
- Connect to `https://mcp.vapi.ai/sse` from any MCP client using SSE Transport
- Include 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
```bash
# Install dependencies
npm install
# Build the server
npm run build
```
Update your `claude_desktop_config.json` to use the local server.
```json
{
"mcpServers": {
"vapi-local": {
"command": "node",
"args": [
"<path_to_vapi_mcp_server>/dist/index.js"
],
"env": {
"VAPI_TOKEN": "<your_vapi_token>"
}
},
}
}
```
### 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.
```bash
# Run unit tests
npm run test:unit
```
#### End-to-End Tests
E2E tests run the full MCP server with actual API calls to Vapi.
```bash
# 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.
#### Running All Tests
To run all tests at once:
```bash
npm test
```
## References
- [VAPI Remote MCP Server](https://mcp.vapi.ai/)
- [VAPI MCP Tool](https://docs.vapi.ai/tools/mcp)
- [Model Context Protocol](https://modelcontextprotocol.com/)
- [Claude Desktop](https://modelcontextprotocol.io/quickstart/user)
## Supported Actions
The Vapi MCP Server provides the following tools for integration:
### Assistant Tools
- `list_assistants`: Lists all Vapi assistants
- `create_assistant`: Creates a new Vapi assistant
- `get_assistant`: Gets a Vapi assistant by ID
### Call Tools
- `list_calls`: Lists all Vapi calls
- `create_call`: Creates an outbound call
- `get_call`: Gets details of a specific call
> **Note:** The `create_call` action supports scheduling calls for immediate execution or for a future time.
### Phone Number Tools
- `list_phone_numbers`: Lists all Vapi phone numbers
- `get_phone_number`: Gets details of a specific phone number