Poke Voice MCP Server
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., "@Poke Voice MCP ServerCall +15551234567 to confirm appointment"
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.
Poke Voice MCP Server
A stateless TypeScript Model Context Protocol server that lets Poke trigger outbound AI phone calls through Vapi native telephony.
This version is designed for a server-managed Vapi setup: the deployed backend owns the Vapi credentials through environment variables, and Poke clients only provide the call target and assistant instructions.
Highlights
Streamable HTTP MCP endpoint for web-hosted agents.
One tool:
trigger_outbound_call.Vapi-native outbound calls through
POST https://api.vapi.ai/call.Server-side Vapi credentials only; no API keys in the MCP tool schema.
Low-cost default model:
openai/gpt-4.1-nano.Realistic default voice: Vapi
Clara, version2.Sanitized structured logs with tracking IDs, user IDs, status, and destination last four digits only.
Vercel-ready serverless entrypoint.
Related MCP server: Vapi MCP Server
Architecture
Poke
-> Streamable HTTP MCP request
-> /api/mcp on Vercel
-> MCP tool handler
-> Vapi /call using server env vars
-> outbound phone callThe backend is stateless per request, but Vapi credentials are deployment-level configuration.
See docs/architecture.md for the security model and request flow.
Tool Contract
trigger_outbound_call
{
"phoneNumber": "+15551234567",
"systemPrompt": "You are calling to confirm an appointment. Be concise and polite.",
"initialMessage": "Hi, this is the appointment assistant calling to confirm your visit."
}Required fields:
phoneNumber: destination number in E.164 format.systemPrompt: assistant instructions for the call.
Optional field:
initialMessage: first spoken message from the assistant.
Successful calls return structured JSON:
{
"ok": true,
"status": "created",
"trackingId": "call-id-from-vapi",
"provider": "vapi",
"message": "Outbound call initiated."
}Errors return ok: false with a stable error code, including:
missing_configurationinvalid_phone_numberauthentication_failedinvalid_call_requestvapi_request_failed
Required Environment Variables
VAPI_API_KEY=your_private_server_side_vapi_key
VAPI_PHONE_NUMBER_ID=your_vapi_phone_number_id
POKE_USER_ID=local-dev-userPOKE_USER_ID is a fallback for local development. In production, Poke can provide x-poke-user-id; the server uses it only for sanitized tracking logs.
Local Development
Requirements:
Node.js 20+
Private/server-side Vapi API key
Vapi phone number ID
Install and build:
npm install
npm run buildRun the HTTP server:
npm run devLocal endpoints:
GET http://localhost:3000/health
POST http://localhost:3000/api/mcp
POST http://localhost:3000/api/vapi-webhook
POST http://localhost:3000/api/vapi-inboundFor local testing:
cp .env.example .envNever commit .env or paste Vapi keys into recipe YAML, prompts, screenshots, logs, or chat messages.
Vercel Deployment
This repo includes:
api/index.ts: Vercel serverless adapter.api/vapi-inbound.ts: Vapi inbound assistant-request handler.vercel.json: rewrites for/api/mcp,/mcp,/health, the Vapi webhook, and inbound call handler.
Add production environment variables:
npx vercel env add VAPI_API_KEY production
npx vercel env add VAPI_PHONE_NUMBER_ID production
npx vercel env add POKE_USER_ID production
npx vercel env add VAPI_INBOUND_SYSTEM_PROMPT production
npx vercel env add VAPI_INBOUND_FIRST_MESSAGE productionDeploy:
npx vercel --prod --yesAfter deployment, your MCP endpoint is:
https://your-vercel-domain.vercel.app/api/mcpUpdate poke.recipe.yaml with your deployed endpoint before publishing the Recipe.
Inbound Vapi Calls
Inbound calls are handled by:
https://your-vercel-domain.vercel.app/api/vapi-inboundFor the current production deployment:
https://poke-voice-rho.vercel.app/api/vapi-inboundConfigure this URL as the Vapi phone number Server URL for:
+13267327987
6aa3552e-1802-46f5-ba58-1a8f1d66b62dWhen Vapi sends an assistant-request, the route returns a transient assistant using:
openai/gpt-4.1-nanoVapi voice
Clara, version2VAPI_INBOUND_SYSTEM_PROMPTif configuredVAPI_INBOUND_FIRST_MESSAGEif configured
Manual assistant fallback JSON:
{
"firstMessage": "Hi, this is Poke Voice. How can I help?",
"model": {
"provider": "openai",
"model": "gpt-4.1-nano",
"messages": [
{
"role": "system",
"content": "You are a concise, friendly inbound voice assistant for Poke Voice. Answer naturally, ask one question at a time, and help the caller with their request. If you do not know something, say so plainly."
}
]
},
"voice": {
"provider": "vapi",
"voiceId": "Clara",
"version": 2
}
}
## Poke Recipe
The included [poke.recipe.yaml](poke.recipe.yaml) is a template for Poke Kitchen. It declares:
- Streamable HTTP transport.
- No credential setup prompts.
- A confirmation prompt before `trigger_outbound_call` runs.
- Billing and compliance warnings.
Because credentials are server-side, calls bill to the Vapi account configured on the deployment.
## Testing
See [docs/testing.md](docs/testing.md) for MCP smoke tests, live `tools/list` checks, and safe failure-mode tests.
At minimum, run:
```bash
npm run buildThen verify tools/list exposes only call inputs:
phoneNumbersystemPromptinitialMessage
Compliance
This software can initiate real outbound phone calls. You are responsible for consent, TCPA compliance, local calling laws, Vapi billing, and any platform-specific usage rules.
The project intentionally does not bypass confirmation prompts, rate limits, provider compliance controls, or phone-number ownership requirements.
License
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- 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/ionnes69/poke-voice-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server