textbee SMS

io.github.textbee由 GitHub 帳號 textbee 發布v0.1.1更新於 Nov 6, 2026

Send and read SMS through your own Android phone via textbee.dev, the open-source SMS gateway.

已驗證STDIO僅桌面效率與工作流溝通與協作

概覽

AI 產生的概覽

透過使用者自己的 Android 手機與 textbee 收發簡訊,讓助理傳送簡訊、查看回覆並列出已配對的裝置。

可以做什麼
  • 向一個或多個電話號碼或簡碼傳送簡訊,可指定裝置、SIM 卡或排定傳送時間
  • 讀取帳號下所有裝置的簡訊,可依方向、關鍵字、批次 ID、裝置或時間範圍篩選
  • 列出帳號中的 Android 手機,包含 ID、啟用狀態、預設傳送裝置、最後上線時間與訊息數量
適用情境
適合讓助理用你自己的號碼傳簡訊,或查看收到的簡訊與一次性驗證碼,而不必依賴按則計費的商業簡訊服務。也適用於自架 textbee 執行個體的環境。
執行需求
以 npm 套件形式在本機透過 stdio 執行(npx @textbee/mcp),或使用 textbee 的託管端點。需要一個已配對 Android 手機的 textbee 帳號,以及透過 TEXTBEE_API_KEY 提供的 API 金鑰。自架執行個體可選用 TEXTBEE_BASE_URL,另有 TEXTBEE_TIMEOUT_MS。需要能連線至 textbee API 的網路。
安裝前請注意
此 API 金鑰擁有帳號的完整權限,應視同密碼保管;託管端點會讓金鑰經過 textbee 的伺服器,本機方式則把金鑰留在自己的電腦上。傳送會消耗方案額度且無法收回,送出前應確認收件人,也不要重試可能已成功的傳送。讀取範圍涵蓋帳號下的所有裝置。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 textbee SMS,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

@textbee/mcp

[npm version] [CI] [license]

MCP server for textbee.dev, the open source SMS gateway that turns an Android phone into an SMS API. Gives Claude, 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.ai, Claude Desktop, and the Claude mobile apps (no install)

These use the hosted endpoint at https://mcp.textbee.dev/mcp, which runs the same tools from this package.

  1. In claude.ai or Claude Desktop, open Customize, then Connectors, then + Add and Add custom connector.
  2. Enter the name textbee and the URL https://mcp.textbee.dev/mcp, then click Continue twice.
  3. Choose Sign in now, leave the OAuth client on the recommended option, and click Add.
  4. Paste your API key on the textbee sign-in page and click Connect.

One connection works on the web, in Claude Desktop, and in the Claude mobile apps (the mobile apps cannot add connectors themselves). On Team and Enterprise plans, an owner adds the connector for the organization first. It lasts 90 days, then Claude asks you to reconnect. textbee checks the key and does not store it, but the key does pass through textbee's server. Revoke the key in the dashboard to disconnect. To keep the key on your machine, use the local setup below.

Claude Code

Local, with the key in your own config:

bash
claude mcp add textbee -s user -e TEXTBEE_API_KEY=your-key -- npx -y @textbee/mcp

Or hosted, signing in with your key in the browser:

bash
claude mcp add --transport http -s user textbee https://mcp.textbee.dev/mcp

Then run /mcp in Claude Code, select textbee, and choose Authenticate.

Claude Desktop (local)

Add to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json, Windows: %APPDATA%\Claude\claude_desktop_config.json), then restart Claude Desktop:

json
{  "mcpServers": {    "textbee": {      "command": "npx",      "args": ["-y", "@textbee/mcp"],      "env": { "TEXTBEE_API_KEY": "your-key" }    }  }}

Cursor

The same object in ~/.cursor/mcp.json. Clients that support remote servers with headers can use https://mcp.textbee.dev/mcp instead and send the key as x-textbee-api-key or Authorization: Bearer <key>.

Full setup guide: textbee.dev/docs/agents/mcp.

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:

bash
npm install -g @textbee/mcp
json
{ "mcpServers": { "textbee": { "command": "textbee-mcp", "env": { "TEXTBEE_API_KEY": "your-key" } } } }

Tools

send_sms

Send an SMS to one or more phone numbers or short codes. International format with the country code (for example +15550100123) works everywhere. Local numbers and short codes only reach recipients in the sending phone's country. 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:

json
"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

VariableRequiredDefaultPurpose
TEXTBEE_API_KEYyesnoneAPI key from the textbee dashboard
TEXTBEE_BASE_URLnohttps://api.textbee.devYour instance's URL when self-hosting
TEXTBEE_TIMEOUT_MSno30000Per-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):

js
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.

來源:README.md,提交 6440135

工具

3

send_sms

Send SMS

Send an SMS through the user's own textbee account and Android phone. Recipients are phone numbers or short codes. Prefer international format with the country code, such as +15550100123. Local numbers and short codes are sent as given and only reach recipients in the sending phone's country. Sender names such as MYBANK cannot receive SMS. The sending phone is chosen automatically: the account default device, otherwise the enabled device with the most recent heartbeat. Only pass device_id when the user explicitly names a phone; ids come from list_devices. Sending costs the user a real message against their textbee plan quota, so do not send speculatively and do not retry a send that may already have gone out. When the account has SMS queueing enabled the result includes an sms_batch_id; pass it to get_messages as sms_batch_id to check per-recipient delivery status.

輸入參數message必填device_idrecipients必填scheduled_atsim_subscription_id

get_messages

Read messages

Read 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 direction "sent" to review what went out (each row carries its delivery status), or "all" for a conversation in order. Pass the sms_batch_id from a send to see that send's per-recipient delivery status. To poll for new messages without missing or repeating any: use order "asc" with a from bound, then keep calling with the next_cursor each result prints. from is inclusive and to is exclusive, so consecutive windows tile exactly. Reading does not consume the plan send quota. Messages reach textbee within a few seconds of arriving on the phone, so when waiting for a code, wait briefly and call again rather than tight-polling.

輸入參數tofromlimitordercursorsearchdirectiondevice_idssms_batch_id

list_devices

List devices

List 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 device error, when the user asks which phone will be used, or when you need a device_id. Takes no arguments and sends no SMS.

無需輸入參數。

版本歷史

3
  1. v0.1.1最新Nov 5, 2026
  2. v0.1.0Oct 29, 2026
  3. v0.0.2Sep 16, 2026

評分

已滿足適用檢查項的 90%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分
  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分