textbee
textbee · textbee/textbee
An MCP server that turns your Android phone into an SMS gateway, allowing your agent to send and receive text messages via API.
Open-source SMS gateway. Turn your Android phone into an SMS API: send and receive SMS from your apps over REST and webhooks. Self-hostable, with a free hosted plan.
Preview
What you can do with it
- Build an AI agent that sends SMS notifications for system alerts.
- Receive and process incoming SMS messages in your AI workflows.
- Send bulk SMS updates to a list of contacts from your coding agent.
Verified live · 3 tools
We started this MCP server in an isolated sandbox and it exposed these tools:
send_smsSend an SMS through the user's own textbee account and Android phone. Recipients must be in international E.164 format such as +15550100123. The sending phone is chosen automatically: the account defa
get_messagesRead the SMS messages on the user's textbee account, covering every device, no device id needed. direction defaults to "received": checking for a reply or a one-time code is the usual case. Pass direc
list_devicesList the Android phones registered to this textbee account: id, name, enabled state, which one is the default sender, when each last checked in, and message counts. Call this when a send fails with a
npx -y @textbee/mcp · 19/10/2026
Safety check
No risky patterns found in the files we scanned.
Automated scan of the repo files. Always review code you run.
From the README
textbee.dev - android sms gateway
Send and receive SMS messages using your own Android phone - no Twilio, no per-message fees. Free, open-source, and self-hostable.
The open-source SMS gateway for developers, automations, and AI agents. Manage SMS messages through a web dashboard, a REST API, or the MCP server for AI agents. textbee is ideal for businesses, developers, and hobbyists looking for a reliable and cost-effective solution to automate SMS messaging.
Website: https://textbee.dev
Why textbee?
| textbee | Twilio & similar APIs | |
|---|---|---|
| Cost per SMS | Your carrier plan (often free/unlimited) | ~$0.008+ per message |
| Phone number | Your own SIM | Rented number |
| Self-hostable | ✅ Full control over your data | ❌ |
| Open source | ✅ | ❌ |
| Setup time | ~2 minutes | Account approval, compliance forms |
Features
- Send & receive SMS messages via API & dashboard
- Use your own Android phone as an SMS gateway
- REST API for easy integration with apps & services
- Send bulk SMS with CSV file
- Multi-device support for higher SMS throughput
- Secure API authentication with API keys
- Webhook support for incoming messages
- Self-hosting support for full control over your data
Getting Started
- Go to textbee.dev and register or login with your account
- Install the app on your Android phone from textbee.dev/download
- Open the app and grant the permissions for SMS
- Go to textbee.dev/dashboard and click register device / generate API key
- Scan the QR code with the app or enter the API key manually
- You're ready to send SMS from the dashboard or from your application via the REST API
Sending an SMS
Messages go out through your default device, or otherwise the enabled device with the most recent heartbeat. Pass an optional deviceId in the request body to send from a specific device instead. The older /gateway/devices/{deviceId}/send-sms route still works but is deprecated.
const API_KEY = 'YOUR_API_KEY';
await axios.post('https://api.textbee.dev/api/v1/gateway/send-sms', {
recipients: [ '+12025550123' ],
message: 'Hello World!',
}, {
headers: { 'x-api-key': API_KEY },
});
Python
import requests
API_KEY = 'YOUR_API_KEY'
requests.post(
'https://api.textbee.dev/api/v1/gateway/send-sms',
json={
'recipients': ['+12025550123'],
'message': 'Hello World!',
},
headers={'x-api-key': API_KEY},
)
curl
curl -X POST "https://api.textbee.dev/api/v1/gateway/send-sms" \
-H 'x-api-key: YOUR_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"recipients": [ "+12025550123" ],
"message": "Hello World!"
}'
Receiving SMS
Enable SMS receiving in the mobile app, then access incoming messages via the REST API, the dashboard, or webhook notifications delivered to your preferred URL. Message history is account-level: one call covers every device, no device id needed.
const API_KEY = 'YOUR_API_KEY';
await axios.get('https://api.textbee.dev/api/v1/gateway/messages?direction=received', {
headers: { 'x-api-key': API_KEY },
});
curl
curl -X GET "https://api.textbee.dev/api/v1/gateway/messages?direction=received" \
-H "x-api-key: YOUR_API_KEY"
Use with AI agents (MCP)
The official textbee MCP server lets Claude, Cursor, and any MCP-compatible client send and read SMS through your account. Three tools: send_sms (send to one or many recipients), get_messages (read replies and verification codes, check delivery status), and list_devices. Plan limits apply server-side like any other send.
claude.ai, Claude Desktop, and the Claude mobile apps (nothing to install; the Free plan allows one custom connector):
- In claude.ai or Claude Desktop, open Customize, then Connectors, then + Add and Add custom connector.
- Enter the name
textbeeand the URLhttps://mcp.textbee.dev/mcp, then click Continue twice. - Choose Sign in now, leave the OAuth client on the recommended option, and click Add.
- Paste your API key on the textbee sign-in page and click Connect.
The mobile apps use connectors added on the web or desktop. On Team and Enterprise plans, an owner adds the connector for the organization first.
Claude Code:
# Hosted: run /mcp afterwards and choose Authenticate to sign in with your API key
claude mcp add --transport http -s user textbee https://mcp.textbee.dev/mcp
# Or local: the key stays on your machine
claude mcp add textbee -s user -e TEXTBEE_API_KEY=YOUR_API_KEY -- npx -y @textbee/mcp
Cursor and other MCP clients (local server, the key stays on your machine):
{
"mcpServers": {
"textbee": {
"command": "npx",
"args": ["-y", "@textbee/mcp"],
"env": { "TEXTBEE_API_KEY": "YOUR_API_KEY" }
}
}
}
With the hosted connector, textbee checks your key and does not store it. Self-hosted instances use the local server with TEXTBEE_BASE_URL. Full setup at textbee.dev/mcp and the MCP docs.
Use Cases
- OTP / 2FA delivery for your app
- Order and appointment notifications
- Alerts from servers, cron jobs, and home automation
- Form-to-SMS and lead follow-ups
- Bulk announcements to a contact list (CSV upload)
FAQ
Will my carrier block my number for sending too many messages? Carriers apply their own rate limits and anti-spam policies, which vary by country and plan. For personal and low-volume use this is rarely an issue. For higher throughput, use multiple devices/SIMs and keep sending rates reasonable. You are responsible for staying within your carrier's terms.