Vapi MCP for Cursor
by matthewdcage
This project implements a Model Context Protocol (MCP) server for integrating Vapi's voice AI capabilities with Cursor. It allows Cursor to utilize Vapi's voice AI tools.
Last updated: N/A
Vapi MCP for Cursor
This project implements a Model Context Protocol (MCP) server for integrating Vapi's voice AI capabilities with Cursor.
Setup Instructions
1. Project Structure
The Vapi MCP server is structured as follows:
vapi-mcp-server/
- Main server codesrc/
- TypeScript source filesdist/
- Compiled JavaScript output.env
- Environment variables for API keys
2. Environment Configuration
Create a .env
file in the vapi-mcp-server
directory with the following variables:
# Vapi API Keys
VAPI_ORG_ID=your-org-id
VAPI_PRIVATE_KEY=your-private-key
VAPI_KNOWLEDGE_ID=your-knowledge-id
VAPI_JWT_PRIVATE=your-jwt-private
# Environment
NODE_ENV=development
3. Building the Server
To build the server:
cd vapi-mcp/vapi-mcp-server
npm install
npm run build
4. Configuration in Cursor
Important: Avoiding "Client Closed" Errors
When configuring the Vapi MCP server in Cursor's MCP settings, pay attention to the following crucial details:
-
Working Directory: The
cwd
parameter is required to ensure the server runs in the correct directory and can access the.env
file properly. -
Environment Variables: Must be explicitly provided in the configuration, even if they exist in the
.env
file. -
Module Type: The server uses ES modules, so the
package.json
must include"type": "module"
.
Here's the correct configuration for .cursor/mcp.json
:
"Vapi Voice AI Tools": {
"command": "node",
"type": "stdio",
"args": [
"/Users/matthewcage/Documents/AA-GitHub/MCP/vapi-mcp/vapi-mcp-server/dist/index.js"
],
"cwd": "/Users/matthewcage/Documents/AA-GitHub/MCP/vapi-mcp/vapi-mcp-server",
"env": {
"VAPI_ORG_ID": "your-org-id",
"VAPI_PRIVATE_KEY": "your-private-key",
"VAPI_KNOWLEDGE_ID": "your-knowledge-id",
"VAPI_JWT_PRIVATE": "your-jwt-private",
"NODE_ENV": "development"
}
}
Troubleshooting
"Client Closed" Error in Cursor
If you see "Client Closed" in the Cursor MCP Tools panel:
- Check Working Directory: Ensure the
cwd
parameter is set correctly in your mcp.json - Verify Environment Variables: Make sure all required environment variables are passed in the configuration
- Check Module Type: Ensure
package.json
has"type": "module"
- Inspect Permissions: Make sure the dist/index.js file is executable (
chmod +x dist/index.js
) - Test Server Directly: Run the server manually to check for errors:
cd vapi-mcp/vapi-mcp-server node --trace-warnings dist/index.js
Module Not Found Errors
If you get "Error: Cannot find module" when running:
- Check Working Directory: Are you running from the correct directory?
- Rebuild: Try rebuilding the project with
npm run build
- Dependencies: Ensure all dependencies are installed with
npm install
Available Tools
The Vapi MCP server provides the following tools:
- vapi_call - Make outbound calls using Vapi's voice AI
- vapi_assistant - Manage voice assistants (create, get, list, update, delete)
- vapi_conversation - Retrieve conversation details from calls
Lessons Learned
-
When integrating with Cursor's MCP:
- Always specify the
cwd
parameter to ensure the server runs in the correct directory - Pass all required environment variables directly in the MCP configuration
- For ES modules, ensure package.json has
"type": "module"
and tsconfig.json uses appropriate module settings - Test the server directly before configuring in Cursor
- Always specify the
-
The server command path must be absolute and correctly formed in the Cursor MCP config
-
Using stdio transport type is required for proper integration with Cursor