Android Texter

io.github.argosautomation由 GitHub 账号 argosautomation 发布v1.1.0更新于 Nov 6, 2026

Send and read SMS and MMS from your own Android phone and number via Android Texter.

已验证STDIO仅桌面效率与工作流沟通与协作

概览

AI 生成的概览

将助手连接到 Android Texter 账户,让它能通过用户自己配对的 Android 手机读取、搜索、发送和定时发送真实短信与彩信。

可以做什么
  • 列出已配对的手机及其状态、电量、号码和 SIM 卡
  • 浏览、读取和搜索会话与消息记录,包括群组会话
  • 立即或定时发送短信、图片消息,并可向最多 500 个号码群发
  • 查询消息状态,列出或取消定时消息
  • 列出、搜索和保存联系人及其标签
适用场景
适合希望助手用你自己的号码和运营商套餐起草、发送或定时发送短信,查看回复,或在聊天客户端内检索消息记录和联系人的场景。
运行要求
通过 npx 以 stdio 在本地运行(需 Node.js 18 或更高版本),也可下载脚本用 node 运行。需要 Android Texter 账户、已安装应用并配对手机,以及通过环境变量 ATX_API_KEY 提供的 API 密钥。另有可选的 ATX_API_BASE 和 ATX_CLIENT_NAME。
安装前请注意
发送类工具会用你的号码和运营商套餐向真人发送真实短信,群发最多可达 500 个收件人,发送前应先确认收件人和措辞。API 密钥是保存在客户端配置中的机密。save_contact 会写入联系人。免费套餐有每日发送上限,24 小时内未能发出的消息会被标记为失败。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Android Texter,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Android Texter MCP Server

Let Claude, Cursor, Windsurf, and any other MCP client send and read text messages through Android Texter.

Android Texter turns your own Android phone into an SMS and MMS gateway. Texts go out from the phone's real number over its carrier plan, and replies come back into your account. This server connects your AI assistant to that account, so you can say "text Sam that the meeting moved to 3pm" or "who replied to yesterday's broadcast?" and it happens on your phone.

  • Sends from your own number, not a shared short code or a rented line
  • Reads conversations, searches message history, and manages contacts
  • Schedules texts for later and cancels them
  • Runs locally over stdio; your API key stays on your computer

Before you start

  1. An Android Texter account with the app installed on an Android phone and paired to it. Sign up at androidtexter.com.
  2. An API key. In the dashboard, open Settings > API Keys (androidtexter.com/dashboard/settings/api-keys) and create one. Keys start with atx_.
  3. Node.js 18 or newer (node --version).

Install

The server runs with npx, so there is nothing to install by hand. Pick your client below and replace atx_YOUR_API_KEY with your key.

Claude Desktop

Open Settings > Developer > Edit Config (or edit claude_desktop_config.json directly: ~/Library/Application Support/Claude/ on macOS, %APPDATA%\Claude\ on Windows) and add:

json
{  "mcpServers": {    "android-texter": {      "command": "npx",      "args": ["-y", "android-texter-mcp"],      "env": {        "ATX_API_KEY": "atx_YOUR_API_KEY"      }    }  }}

Restart Claude Desktop. The Android Texter tools appear under the tools menu in a new chat.

Claude Code

bash
claude mcp add android-texter --scope user --env ATX_API_KEY=atx_YOUR_API_KEY -- npx -y android-texter-mcp

Run claude mcp list to check that it connected.

Cursor

Add to ~/.cursor/mcp.json (all projects) or .cursor/mcp.json (one project):

json
{  "mcpServers": {    "android-texter": {      "command": "npx",      "args": ["-y", "android-texter-mcp"],      "env": {        "ATX_API_KEY": "atx_YOUR_API_KEY"      }    }  }}

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json (or Settings > Cascade > MCP Servers > View raw config):

json
{  "mcpServers": {    "android-texter": {      "command": "npx",      "args": ["-y", "android-texter-mcp"],      "env": {        "ATX_API_KEY": "atx_YOUR_API_KEY"      }    }  }}

VS Code

Add to .vscode/mcp.json. VS Code asks for the key once and stores it securely:

json
{  "inputs": [    { "type": "promptString", "id": "atx-api-key", "description": "Android Texter API key", "password": true }  ],  "servers": {    "android-texter": {      "command": "npx",      "args": ["-y", "android-texter-mcp"],      "env": { "ATX_API_KEY": "${input:atx-api-key}" }    }  }}

Any other MCP client

Run npx -y android-texter-mcp as a stdio server with ATX_API_KEY in its environment.

On Windows, if your client cannot find npx, use "command": "cmd" with "args": ["/c", "npx", "-y", "android-texter-mcp"].

Without npm

The same server is available as a single file from the dashboard (Settings > Integrations > Download Script). Save it anywhere and use "command": "node" with "args": ["/absolute/path/to/android-texter-mcp.js"] in place of the npx lines above.

Environment variables

VariableRequiredDescription
ATX_API_KEYYesYour Android Texter API key, from Settings > API Keys.
ATX_API_BASENoAPI root URL. Default https://androidtexter.com/api. Only change it for a test backend.
ATX_CLIENT_NAMENoName shown for this connection on the API Keys activity log. Detected automatically for most clients.

Tools

ToolWhat it does
list_devicesYour paired phones, with online status, battery, number, and SIMs.
list_conversationsRecent conversations, filtered by folder: all, inbox (replied), outbox (no reply yet), archived, spam.
get_conversationThe messages in one conversation, by phone number or thread (groups too).
search_messagesSearch every sent and received text by words, number, or contact name.
send_messageSend a text or picture message (MMS) now or at a scheduled time, from a chosen phone and SIM. Several numbers make a group text.
send_broadcastSend one text to up to 500 numbers, each as its own message, with {{name}}-style personalization.
get_message_statusWhether a sent message is queued, sent, delivered, or failed.
list_scheduled_messagesMessages waiting to go out later.
cancel_scheduled_messageCall off a scheduled message before it sends.
list_contactsList or search contacts, or everyone with a tag.
list_contact_tagsEvery tag in use on your contacts.
save_contactCreate a contact or update one by phone number. Fields you leave out are kept; tags are added.

Sending tools send real texts to real people from your number. Good clients ask before calling them; you can also set them to always ask in your client's tool settings.

Example prompts

  • "Which of my phones are online?"
  • "Show my last 10 conversations that got a reply."
  • "Read my conversation with +1 555 123 4567 and draft a reply."
  • "Text +15551234567: Running 10 minutes late, see you soon."
  • "Schedule a text to +15559876543 for tomorrow at 9am Eastern: Good morning!"
  • "Find anyone who texted the word interested this week."
  • "Add +15551112222 as Dana Lee from Acme with the tag vip."
  • "Send everyone tagged vip: Hi {{first_name|there}}, early access opens today."

Troubleshooting

  • "ATX_API_KEY is not set" or "Invalid API key": check the key in your client config and that it has not been deleted on the API Keys page.
  • "No devices registered": pair a phone in the Android Texter app first.
  • Messages stay queued: the phone is offline or the app is not running. Open the app on the phone. A message that cannot go out within 24 hours is marked failed.
  • "Daily message limit reached": the free plan has a daily cap. Upgrade in the dashboard under Billing.

Help: [email protected]. API reference: androidtexter.com/docs.

Development

bash
npm installnpm run typechecknpm run build            # build/index.js, the npm binnpm run build:download   # also copies it to the dashboard download in the Android Texter monorepo

License

MIT

来源:mcp/README.md,提交 e9196e6

工具

12

list_devices

List paired phones

List the Android phones paired to your Android Texter account. Each entry has its id, name, phone_number, status (online or offline), battery_level, last_seen, and its SIMs (slot, label, number) on dual-SIM phones. Texts are sent from these phones with their own numbers and carrier plans, so check that one is online before sending.

无需输入参数。

list_conversations

List conversations

List your text conversations, most recent activity first. Each entry has phone (the other party, or a group's members joined by commas), last_message, last_direction, last_at, message_count, thread_type (direct or group), thread_ref, and the device it is on. Use get_conversation to read one in full.

输入参数viewlimit

get_conversation

Read a conversation

Read the messages in the conversation with one phone number, newest first. Each message has direction (inbound or outbound), body, status, created_at, and media_url for picture messages. For a group conversation, pass the thread_ref from list_conversations.

输入参数pagelimitphone必填thread_ref

search_messages

Search messages

Search all of your texts, sent and received, for a word or phrase. Matches the message text, the phone number, and the contact's name. Newest first.

输入参数q必填pagelimit

send_message

Send a text

Send a text message from one of your paired Android phones, using that phone's own number and carrier plan, to a real person. Confirm the recipient and wording with the user before sending. The call returns once the message is queued and pushed to the phone, not when it is delivered: use get_message_status with the returned message_id to follow it. Pass scheduled_at to send it later instead of now. Free plans have a daily sending limit.

输入参数phone必填message必填sim_slotdevice_idmedia_urlscheduled_at

send_broadcast

Send one text to many people

Send the same text to a list of phone numbers (up to 500), each as its own one-to-one message from your paired phone's own number. Only use this when the user has asked to text a list of people, and confirm the list and wording first: every recipient gets a real text. The message can be personalized from each recipient's contact record with {{name}}, {{first_name}}, {{last_name}}, {{full_name}}, {{company}}, {{city}} or {{state}}, and {{first_name|there}} gives a fallback when the field is empty. {{name}} is the name set by save_contact; first_name and last_name are only filled for contacts imported with those fields. Broadcasts send now and cannot be scheduled. Returns sent and failed counts and a message_id per recipient.

输入参数phones必填message必填device_idmedia_urlround_robin

get_message_status

Check a message's status

Check where an outbound message is: queued (waiting for the phone), sent (the phone handed it to the carrier), delivered, or failed. Pass the message_id returned by send_message or send_broadcast.

输入参数message_id必填

list_scheduled_messages

List scheduled messages

List the messages that are scheduled to go out later and have not been sent or cancelled yet, soonest first. Use this before scheduling more, and to get the id needed by cancel_scheduled_message.

无需输入参数。

cancel_scheduled_message

Cancel a scheduled message

Cancel a message that is scheduled for a future send, so it never goes out. Only works while it is still pending; a message that has already been released to the phone cannot be recalled.

输入参数message_id必填

list_contacts

List contacts

List or search your Android Texter contacts. Each contact has id, phone, name, email, company, notes, tags, and line type and carrier when a lookup has been run. Filter by tag to build a list for send_broadcast.

输入参数tagpagelimitsearch

list_contact_tags

List contact tags

List every tag used on your contacts, for filtering list_contacts.

无需输入参数。

save_contact

Create or update a contact

Create a contact, or update the one that already has this phone number. Only the fields you pass are changed; fields you leave out keep their current values. Tags are added to the contact's existing tags, never removed.

输入参数nametagsemailnotesphone必填company

版本历史

1
  1. v1.1.0最新Nov 6, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分