textbee/textbee-mcp
FreeMaintainedSend and read SMS through your own Android phone via textbee.dev, the open-source SMS gateway. Three tools: sendsms, getmessages (replies, codes, delivery statu
About
Send and read SMS through your own Android phone via textbee.dev, the open-source SMS gateway. Three tools: sendsms, getmessages (replies, codes, delivery status), listdevices. Self-hosted friendly. npx -y @textbee/mcp
README
MCP server for textbee.dev, the open source SMS gateway that turns an Android phone into an SMS API. Gives Claude Desktop, Claude Code, Cursor, and any MCP client the ability to send and read SMS through your own phone and your own number.
Three tools, no per-message markup, works with self-hosted textbee instances.
Setup
You need a textbee account with a paired Android device and an API key from the dashboard. The key has full account access; treat it like a password.
Claude Code
claude mcp add textbee -s user -e TEXTBEE_API_KEY=your-key -- npx -y @textbee/mcp
Claude Desktop
Add to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"textbee": {
"command": "npx",
"args": ["-y", "@textbee/mcp"],
"env": { "TEXTBEE_API_KEY": "your-key" }
}
}
}
Cursor
The same object in ~/.cursor/mcp.json.
Slow first start
npx downloads the package on first run. If your client times out waiting, install globally once and point the config at the binary:
npm install -g @textbee/mcp
{ "mcpServers": { "textbee": { "command": "textbee-mcp", "env": { "TEXTBEE_API_KEY": "your-key" } } } }
Tools
send_sms
Send an SMS to one or more recipients (E.164 format, for example +15550100123). The sending phone is chosen automatically: your default device, otherwise the enabled device with the most recent heartbeat. Optional device_id, sim_subscription_id, and scheduled_at. Returns an sms_batch_id for delivery checks when the account uses the SMS queue.
get_messages
Read messages across every device on the account. Defaults to received messages, newest first. Filter by direction (received, sent, all), free-text search, sms_batch_id (per-recipient delivery status of a send), device_ids, and a from/to time window. Supports cursor pagination for polling without duplicates or gaps.
list_devices
The phones on the account: ids, enabled state, which one sends by default, last check-in, and message counts.
Self-hosted textbee
Point the server at your own instance:
"env": {
"TEXTBEE_API_KEY": "your-key",
"TEXTBEE_BASE_URL": "https://sms.example.com"
}
The /api/v1 suffix is optional and added automatically. Subpath deployments like https://example.com/textbee work too. An invalid URL is an error rather than a silent fallback, so a typo never sends your key to the public API.
Environment variables
| Variable | Required | Default | Purpose |
|---|---|---|---|
TEXTBEE_API_KEY |
yes | none | API key from the textbee dashboard |
TEXTBEE_BASE_URL |
no | https://api.textbee.dev |
Your instance's URL when self-hosting |
TEXTBEE_TIMEOUT_MS |
no | 30000 |
Per-request timeout in milliseconds |
Notes
- Your key stays on your machine: this server talks only to the textbee API at the base URL above.
- Sends count against your textbee plan quota, and the plan's rate limits apply server-side.
- All diagnostics go to stderr; stdout is reserved for the MCP protocol.
Using it as a library
The package also exports its tool definitions for embedding in another MCP host (this is how the hosted remote endpoint reuses them):
import { createTextbeeMcpServer, staticCredentials, loadConfig } from '@textbee/mcp'
const server = createTextbeeMcpServer({
credentials: staticCredentials(loadConfig(process.env)),
})
Credentials are resolved per tool call, so a multi-tenant host can inject a different key per request. See credentialsFromAuthInfoExtra.
License
MIT. Part of the textbee project.
Installing textbee/textbee-mcp
This server has no published package — it is built from source. Open the repository and follow its README.
▸ github.com/textbee/textbee-mcpFAQ
Is textbee/textbee-mcp MCP free?
Yes, textbee/textbee-mcp MCP is free — one-click install via Unyly at no cost.
Does textbee/textbee-mcp need an API key?
Yes, it requires environment variables: TEXTBEE_API_KEY, TEXTBEE_BASE_URL. Unyly injects them into the config during install.
Is textbee/textbee-mcp hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install textbee/textbee-mcp in Claude Desktop, Claude Code or Cursor?
Open textbee/textbee-mcp on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
GitHub
PRs, issues, code search, CI status
by GitHubFilesystem
Secure file operations with configurable access controls.
Memory
Knowledge graph-based persistent memory system.
Template MCP Server
A CLI tool to create a new Model Context Protocol server project with TypeScript support, dual transport options, and an extensible structure
by mcpdotdirectAmap Maps Mcp Server
MCP server for using the AMap Maps API
by duxiaohuiSupabase
Database, auth and storage
by SupabaseEverything
Reference / test server with prompts, resources, and tools.
Git
Tools to read, search, and manipulate Git repositories.
Sequential Thinking
Dynamic and reflective problem-solving through thought sequences.
Time
Time and timezone conversion capabilities.
Compare textbee/textbee-mcp with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All development MCPs
