vapi-mcp
Supplies Twilio phone numbers for inbound Vapi assistants, allowing the server to bind a Twilio number to a client assistant for answering and call handling.
Supplies Vonage phone numbers for inbound Vapi assistants, allowing the server to configure a Vonage number as the client's inbound line and bind it to the assistant.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@vapi-mcpProvision a new client assistant for Acme HVAC"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Vapi client MCP
A local stdio MCP server for provisioning client-level Vapi inbound answering assistants. It wraps the Vapi REST API rather than the smaller hosted Vapi MCP tool set.
The first template answers immediately, identifies itself as AI, captures the caller's name, callback number, reason, and callback window, then offers an available transfer or a clearly explained callback. End-of-call data can go to a public webhook or remain in Vapi for later CRM handling.
What is implemented
MCP tool | Vapi operation |
| Render the answering template, |
| Render and |
| Targeted assistant prompt, model, first-message, and voice update |
|
|
|
|
|
|
| Confirmed |
| Read assistant, bound number, and latest call; report partial errors |
Client records live at clients/<slug>.json. They contain Vapi resource IDs and non-secret business configuration, never the Vapi key or provider credentials. These JSON files are suitable for config-as-code if the business metadata itself is acceptable to commit.
Related MCP server: RetellAI MCP Server
Install and run
Requires Node.js 20 or newer.
cd /home/blaine/projects/vapi-mcp
npm install
npm run check
npm run build
export VAPI_API_KEY="your private server-side Vapi key"
npm startThe server speaks MCP over stdio, so its standard output is reserved for protocol messages. Logs go to standard error.
For an MCP host, copy examples/mcp-client.json, replace the absolute paths, and put the real key only in the host's private configuration or secret manager. The checked-in example and .env.example contain placeholders only. This project does not automatically load .env files.
First client workflow
Call the tools in this order:
provision_clientset_structured_outputsattach_phoneattach_toolsfor transfer, callback, calendar, or CRM actionssmoke_test_calllist_client_status
Example provision_client arguments:
{
"clientSlug": "acme-hvac",
"businessName": "Acme HVAC",
"trade": "HVAC",
"timezone": "America/New_York",
"businessHours": "Monday-Friday 08:00-17:00; closed federal holidays",
"transferNumber": "+12125550123",
"crm": "GoHighLevel",
"webhookUrl": "https://example.com/webhooks/vapi/end-of-call"
}With no outputDefinitions, set_structured_outputs installs the schema from templates/inbound-answering.json. It extracts:
callerNamecallbackNumberreasoncallbackWindowtransferOutcomecomplete
Bind an existing number:
{
"clientSlug": "acme-hvac",
"phoneNumberId": "00000000-0000-4000-8000-000000000000"
}Or pass a provider-specific POST /phone-number body as phoneConfiguration. The server overrides any supplied assistantId with the client's assistant ID. Prefer Vapi credential IDs over raw Twilio, Telnyx, Vonage, or SIP secrets; transient MCP arguments are not written to the client record.
attach_tools accepts complete Vapi POST /tool definitions, existing tool UUIDs, or both. This intentionally preserves Vapi's provider-specific tool unions instead of inventing a narrower local schema. A successful Vapi tool response is required before its ID is attached to the assistant.
Smoke path
smoke_test_call creates a real outbound phone call and may incur Vapi and carrier charges. It will not run unless confirmBillableCall is exactly true.
{
"clientSlug": "acme-hvac",
"customerNumber": "+12125550999",
"waitSeconds": 45,
"confirmBillableCall": true
}At waitSeconds: 0, the tool returns the queued call immediately. At 1–55 seconds, it polls GET /call/:id and returns current status, ended reason, transcript, and structured data when available. Test only numbers you are authorized to call and follow applicable calling, recording-consent, and privacy rules.
Template behavior and limits
The template uses an assistant-first message so disclosure is immediate. The prompt uses spoken intent routing and tells the model not to claim a transfer, booking, callback, or CRM write succeeded without tool confirmation. When open/closed status is uncertain, it captures a callback rather than guessing.
The included hours are prompt context, not a deterministic holiday/calendar engine. Actual transfer and callback execution require attached Vapi tools. A webhook must be public and able to accept Vapi end-of-call-report payloads. For regulated businesses, add the required recording-consent, retention, and professional-advice controls before production.
Verification
npm run checkThe focused tests enumerate all eight MCP tools, inspect the template contract, exercise the REST workflow against a mock Vapi client, and verify bearer-key redaction. They do not make a real Vapi call because no private key, provisioned number, or consented destination is included in this repository.
Sources
Implementation contracts follow Vapi's current official documentation for assistants, phone numbers, custom tools, structured outputs, calls, and server events.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables integration with Vapi's voice AI platform to manage assistants, create and schedule phone calls with dynamic variables, and manage phone numbers through function calling.900MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to manage RetellAI voice services including calls, agents, phone numbers, and voices through natural language.185ISC
- AlicenseAqualityBmaintenanceManage voice AI agents, make calls, run campaigns, and control phone numbers through natural language.58201MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to manage Davoxi voice agent platform resources such as businesses, agents, call logs, webhooks, analytics, and billing through natural language conversations.26MIT
Related MCP Connectors
Manage AI assistants, history, calls, campaigns, contacts, knowledge, messaging, and automations.
Manage Voice Logica agents, calls, phones, workflows, messaging, and integrations.
List, configure, chat with, analyse and embed your Echo AI assistants.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/BlaineHeffron/vapi-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server