voice_callLABSCO SUMMARY
Real calls and real messages — the account is yours and so is the bill.
Both tools reach the live Vonage APIs, so a wrong number is a number that actually rings. The part people miss is the callback side: voice events only come back if CALLBACK_SERVER_URL points at something Vonage can reach from the internet, which on a laptop means a tunnel rather than localhost.
What it is
A Python server that puts two Vonage telephony actions in front of an assistant: dialling a number and speaking to it, and sending a text message. A callback server runs alongside it on port 8080 to receive Vonage's voice events.
What you get
- A voice call placed to a number, with language and style parameters so the spoken text can carry a chosen accent —
voice_call - A text message sent from your Vonage virtual number —
send_sms - A record of what Vonage reported back: the callback server stores voice events and exposes them at
GET /events,GET /events/{event_id}andDELETE /events
Requirements
A Vonage account with an API key, secret, application ID and private key. Environment variables carry them and the endpoints: VONAGE_API_KEY, VONAGE_API_SECRET, VONAGE_APPLICATION_ID, VONAGE_PRIVATE_KEY_PATH, VONAGE_LVN, VONAGE_API_URL, VONAGE_SMS_URL and CALLBACK_SERVER_URL. Python 3.13+. Run python telephony_server.py, or the bundled docker compose up --build. In production CALLBACK_SERVER_URL has to be a public URL Vonage can reach; in development it defaults to http://localhost:8080.
Setup effort
Run a container — build the image from the repository, then point your client at it
USE CASES
Calling someone with a message you just drafted
Ask for the call in plain language and have the assistant read out the text it wrote a moment ago, with the accent and speaking style passed as parameters.
Falling back to text when a call is the wrong move
Send the same content as a text message from your Vonage number instead of dialling.
Checking what actually happened on a call
Read the stored Vonage events for that call — initiated, completed, or error — instead of inferring it from the tool's return value.
2 tools
Listed in project docs. Your client may show a different list.
send_smsBEFORE YOU INSTALL
What to know first
Tools you get
2 tools named in the project's documentation. voice_call places a real phone call and send_sms sends a real SMS, billed to your Vonage account. Call events go to a separate callback server on port 8080, not an MCP tool.
Requires
- docker on PATH
- A Vonage account: API key, API secret, application ID, private key and a virtual number (VONAGE_LVN) in the .env file
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
Build the image from the repository, then point your client at it.
Server setup
git clone https://github.com/Vonage-Community/telephony-mcp-server
cd telephony-mcp-serverCreate a .env file in the clone with your Vonage credentials (VONAGE_API_KEY, VONAGE_API_SECRET, VONAGE_APPLICATION_ID, VONAGE_PRIVATE_KEY_PATH, VONAGE_LVN), and put your Vonage application's private.key next to it — the Dockerfile copies both into the image.
docker build -t telephony-mcp-server .MCP Clients
Claude Desktop
{
"mcpServers": {
"telephony": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"--init",
"-e",
"DOCKER_CONTAINER=true",
"telephony-mcp-server"
]
}
}
}The client configuration passes no Vonage credentials: the image reads them from the .env file and private.key that the Dockerfile copies in at build time, so create both before docker build.