Twilio Messaging MCP Server
by deshartman
Verified
# Twilio Messaging MCP Server
An MCP (Model Context Protocol) server that enables sending SMS messages via the Twilio API.
## Features
- Send SMS messages via Twilio
- Integrates with MCP clients like Claude Desktop
- Secure credential handling without environment variables
- Uses Twilio API Keys for improved security
## Installation
You can use this server directly via npx:
```bash
npx twilio-messaging-mcp-server <accountSid> <apiKey> <apiSecret> <number>
```
Or install it globally:
```bash
npm install -g twilio-messaging-mcp-server
twilio-messaging-mcp-server <accountSid> <apiKey> <apiSecret> <number>
```
## Configuration
The server requires the following parameters:
- `accountSid`: Your Twilio Account SID (must start with 'AC', will be validated)
- `apiKey`: Your Twilio API Key (starts with 'SK')
- `apiSecret`: Your Twilio API Secret
- `number`: The Twilio phone number to send messages from (in E.164 format, e.g., +1234567890)
### Security Note
This server uses API Keys and Secrets instead of Auth Tokens for improved security. This approach provides better access control and the ability to revoke credentials if needed. For more information, see the [Twilio API Keys documentation](https://www.twilio.com/docs/usage/requests-to-twilio).
## Usage with Claude Desktop
### Local Development
For local development (when the package is not published to npm), add the following to your Claude Desktop configuration file (`~/Library/Application Support/Claude/claude_desktop_config.json` on macOS or `%APPDATA%\Claude\claude_desktop_config.json` on Windows):
```json
{
"mcpServers": {
"twilio-messaging": {
"command": "node",
"args": [
"/PATHTONODE/twilio-messaging-mcp-server/build/index.js",
"your_account_sid_here",
"your_api_key_here",
"your_api_secret_here",
"+1234567890"
]
}
}
}
```
Replace the values with your actual Twilio credentials:
- First argument: Your Twilio Account SID (starts with "AC")
- Second argument: Your Twilio API Key (starts with "SK")
- Third argument: Your Twilio API Secret
- Fourth argument: Your Twilio phone number in E.164 format
You can get the absolute path by running the following command in your project directory:
```bash
# On macOS/Linux
echo "$(pwd)/build/index.js"
# On Windows (PowerShell)
Write-Output "$((Get-Location).Path)\build\index.js"
```
### After Publishing to npm
Once the package is published to npm, you can use the following configuration:
```json
{
"mcpServers": {
"twilio-messaging": {
"command": "npx",
"args": [
"-y",
"twilio-messaging-mcp-server",
"your_account_sid_here",
"your_api_key_here",
"your_api_secret_here",
"+1234567890"
]
}
}
}
```
## Available Tools
### send-sms
Sends an SMS message via Twilio.
Parameters:
- `to`: Destination phone number in E.164 format (e.g., +1234567890)
- `message`: Message content to send
Example usage in Claude:
```
Can you send an SMS to +1234567890 saying "Hello from MCP!"
```
## Development
To build the project:
```bash
npm install
npm run build
```
### Running the Server Manually
To start the server manually for testing (outside of Claude Desktop):
```bash
# Run with actual credentials
node build/index.js "your_account_sid_here" "your_api_key_here" "your_api_secret" "+1234567890"
# Or use the npm script (which uses ts-node for development)
npm run dev -- "your_account_sid_here" "your_api_key_here" "your_api_secret" "+1234567890"
```
The server will start and wait for MCP client connections. You should see output like:
```
[TwilioMessagingServer] Server started successfully
```
When using with Claude Desktop, the server is started automatically when Claude loads the configuration file. You don't need to manually start it.
## License
MIT