telephony
A very simple no-fuss minimalist MCP Server with telephony tools like voice call and sms. This MCP Server can be integrated with LLM applications. Vonage API is used for calls, SMS, Speech-to-Text and Speech Recognition.
claude mcp add --transport stdio khan2a-telephony-mcp-server python telephony_server.py \ --env VONAGE_LVN="your_virtual_number" \ --env VONAGE_API_KEY="your_api_key" \ --env VONAGE_API_URL="https://api.nexmo.com/v1/calls" \ --env VONAGE_SMS_URL="https://rest.nexmo.com/sms/json" \ --env VONAGE_API_SECRET="your_api_secret" \ --env CALLBACK_SERVER_URL="https://your-public-url" \ --env VONAGE_APPLICATION_ID="your_app_id" \ --env VONAGE_PRIVATE_KEY_PATH="path/to/private.key"
How to use
The Telephony MCP Server exposes tools for performing real-world telephony actions such as making voice calls and sending SMS messages via the Vonage API. This enables LLM-powered applications to extend their capabilities beyond text generation by invoking these tools to interact with the real world (e.g., placing calls or sending updates via SMS) as part of a larger workflow. The server is designed to integrate with MCP-compatible clients (like LangChain adapters or Claude Desktop) so that prompts can trigger tool calls like voice_call and send_sms and then relay results back to the user. Additionally, the server includes a Vonage Callback Server that receives event notifications for call status and other events, which you can query or view to monitor activity.
How to install
Prerequisites:
- Python 3.13+ installed on your system
- MCP CLI and dependencies (e.g., mcp[cli], FastAPI, httpx, pyjwt, python-dotenv, uvicorn, pydantic) as described in the project setup
- Vonage API credentials (API key, API secret, Application ID, Private Key)
- A publicly accessible callback URL for Vonage event notifications (or a tunneling solution for development)
Install steps:
- Clone the repository and navigate to the Telephony MCP server folder.
- Create a Python virtual environment (optional but recommended):
python -m venv venv source venv/bin/activate # on macOS/Linux .\venv\Scripts\activate # on Windows - Install dependencies:
Or, if using Poetry:pip install -r requirements.txtpoetry install - Configure environment variables (example):
- Create a .env file with your Vonage credentials and callback URL as shown in the README.
- Run the MCP server:
python telephony_server.py - Optional: Run with Docker (if you prefer containerized deployment):
docker compose up --build
Additional notes
Tips and tips:
- Ensure your Vonage credentials are correct and that your application is configured to accept callbacks at the public URL specified in CALLBACK_SERVER_URL.
- For local development, you can use a tunneling service to expose your local callback server (e.g., ngrok) and set CALLBACK_SERVER_URL accordingly.
- The Vonage Callback Server listens on port 8080; ensure that port is accessible if deploying behind a firewall.
- If you change environment variables (e.g., API URL or LVN), restart the MCP server to apply changes.
- When integrating with LLMs, expose tool names like voice_call and send_sms and ensure the input prompts map to the required parameters for each tool.
- If you use the Claude Desktop integration example, you can configure your MCP client to run the telephony server inside a docker container using a suitable mcpServers entry.
- Monitor logs via docker compose logs -f or your local run to troubleshoot issues with authentication, callback delivery, or network access.
Related MCP Servers
web-eval-agent
An MCP server that autonomously evaluates web applications.
mcp-neo4j
Neo4j Labs Model Context Protocol servers
Gitingest
mcp server for gitingest
zotero
Model Context Protocol (MCP) server for the Zotero API, in Python
fhir
FHIR MCP Server – helping you expose any FHIR Server or API as a MCP Server.
unitree-go2
The Unitree Go2 MCP Server is a server built on the MCP that enables users to control the Unitree Go2 robot using natural language commands interpreted by a LLM.