Telnyx Mcp Server — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited Telnyx Mcp Server (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
A comprehensive Model Context Protocol (MCP) server for TELNYX integration, enabling AI assistants to send SMS messages, make voice calls, and handle incoming communications via webhooks.
git clone https://github.com/tomaitagaki/telnyx-mcp-server.git
cd telnyx-mcp-servernpm installCopy the example environment file:
cp .env.example .envEdit .env and add your TELNYX credentials:
TELNYX_API_KEY=your_api_key_here
TELNYX_PUBLIC_KEY=your_public_key_here
TELNYX_PROFILE_ID=your_messaging_profile_id
WEBHOOK_SECRET=your_webhook_secret
WEBHOOK_URL=https://your-domain.com/webhooks/telnyx
PORT=3000npm run buildnpm startFor development with auto-reload:
npm run dev.env file as TELNYX_API_KEY.env as TELNYX_PROFILE_IDhttps://your-domain.com/webhooks/telnyx)message.receivedmessage.sentmessage.finalizedcall.initiatedcall.answeredcall.hangup.envAdd this to your Claude Desktop configuration file:
Edit ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"telnyx": {
"command": "node",
"args": ["/absolute/path/to/telnyx-mcp-server/build/index.js"],
"env": {
"TELNYX_API_KEY": "your_api_key_here",
"TELNYX_PROFILE_ID": "your_profile_id_here",
"WEBHOOK_SECRET": "your_webhook_secret"
}
}
}
}Edit %APPDATA%\Claude\claude_desktop_config.json:
{
"mcpServers": {
"telnyx": {
"command": "node",
"args": ["C:\\path\\to\\telnyx-mcp-server\\build\\index.js"],
"env": {
"TELNYX_API_KEY": "your_api_key_here",
"TELNYX_PROFILE_ID": "your_profile_id_here",
"WEBHOOK_SECRET": "your_webhook_secret"
}
}
}
}After saving the configuration, completely restart Claude Desktop to load the MCP server.
#### send_sms Send an SMS message to a phone number.
Parameters:
to (required): Destination phone number in E.164 format (e.g., +14155551234)message (required): Message text to send (max 1600 characters)from (optional): Sender phone number (uses default if not specified)#### get_message_status Get the delivery status of a sent message.
Parameters:
messageId (required): TELNYX message ID#### make_call Initiate an outbound voice call with text-to-speech.
Parameters:
to (required): Destination phone number in E.164 formatfrom (required): Your TELNYX phone numbermessage (required): Text to speak using TTSvoice (optional): TTS voice (male, female, default: female)#### hangup_call Hang up an active call.
Parameters:
callControlId (required): Call control ID from call initiation#### list_phone_numbers List all TELNYX phone numbers on your account.
Returns: Array of phone numbers with their capabilities and status.
#### get_number_details Get detailed information about a specific phone number.
Parameters:
phoneNumber (required): Phone number to query// In Claude Desktop, simply ask:
"Send an SMS to +14155551234 saying 'Hello from TELNYX MCP!'"// In Claude Desktop:
"Call +14155551234 from my TELNYX number and say 'This is an automated reminder about your appointment'"// After sending a message:
"What's the status of message ID abc123?"docker build -t telnyx-mcp-server .docker run -d \
-p 3000:3000 \
-e TELNYX_API_KEY=your_key \
-e TELNYX_PROFILE_ID=your_profile \
-e WEBHOOK_SECRET=your_secret \
--name telnyx-mcp \
telnyx-mcp-serverThis server is designed to be deployed on Zo hosting similar to the x-link-fetcher pattern:
Ensure all files are committed:
git add .
git commit -m "Prepare for Zo deployment"
git push origin mainFollow the deployment workflow in deploy.yml or use Zo CLI:
zo deploy --config deploy.ymlAfter deployment, update your TELNYX webhook URL to point to your Zo-hosted endpoint:
https://your-app.zo.dev/webhooks/telnyxtelnyx-mcp-server/
├── src/
│ ├── index.ts # Main MCP server implementation
│ ├── telnyx-client.ts # TELNYX API client wrapper
│ ├── tools/
│ │ ├── sms.ts # SMS tool implementations
│ │ ├── voice.ts # Voice call tool implementations
│ │ └── numbers.ts # Number management tools
│ ├── webhooks/
│ │ ├── handler.ts # Webhook request handler
│ │ └── validators.ts # Webhook signature validation
│ └── types/
│ └── index.ts # TypeScript type definitions
├── examples/
│ ├── send-sms.ts # Example: Send SMS
│ ├── make-call.ts # Example: Make voice call
│ └── webhook-server.ts # Example: Standalone webhook server
├── package.json # NPM dependencies
├── tsconfig.json # TypeScript configuration
├── Dockerfile # Docker container definition
├── deploy.yml # Zo deployment configuration
├── .env.example # Environment variable template
└── README.md # This filenpm testnpm run lintnpm run type-checkThe server automatically processes incoming webhooks from TELNYX:
When an SMS is received, the webhook handler:
webhooks/handler.ts)Call events are logged and can trigger custom logic:
call.initiated: Call is being set upcall.answered: Call was answeredcall.hangup: Call endedThe server implements comprehensive error handling:
.envclaude_desktop_config.json is absolutenpm run build)MIT License - See LICENSE file for details
Contributions are welcome! Please:
For issues and questions:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.