phone-sms

io.github.h-3303v0.1.0更新于 Oct 2, 2026

Read and send SMS through your own Android phone over KDE Connect on your LAN. No cloud relay.

已验证STDIO仅桌面Communication & Collaboration

概览

AI 生成的概览

通过局域网上的 KDE Connect,用你自己的 Android 手机读取和发送短信,无需云端中转。

功能
提供工具来按最新优先列出短信会话、读取某个会话最近 n 条消息、按姓名或号码片段从手机同步的联系人中查找联系人,以及向一个或多个号码发送短信。它通过 D-Bus 和局域网经 KDE Connect 连接手机,而不是短信网关。命令行界面提供相同操作,便于手动检查。
适用场景
适合在已与手机配对的 Linux 桌面上,让助手读取或起草以你自己号码发送的短信回复。也适合不希望短信经过云端中转的本地、注重隐私的场景。
运行要求
Linux,需有 D-Bus 会话总线以及较新的 KDE Connect(kdeconnectd);不要求 Plasma 桌面。Android 手机需安装 KDE Connect 应用并已配对且可达,启用短信插件并授予短信权限(如需姓名则启用联系人插件及权限)。需要 uv 和 Python 3.12+。配对多部手机时,用 PHONE_SMS_DEVICE 指定设备 id。
安装前请注意
send_sms 被标记为破坏性操作,会真正以你的号码发送短信;服务器要求模型在发送前等待你确认确切的收件人和内容,但这只是约定,并非强制保证。消息内容会进入模型上下文。发送成功仅表示请求已交给手机,并不代表已送达。联系人姓名依赖联系人插件及其同步的 vCard。

安装

在 SourceWeft 中

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

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

其他 MCP 客户端

参照 仓库 中的启动说明。

README

phone-sms

Site: https://phone-sms.vercel.app · Repo: https://github.com/h-3303/phone-sms

An MCP server that lets Claude (or any MCP client) read and send SMS through your own Android phone, from your own number. It talks to the phone over KDE Connect on your local network: no cloud relay, no SMS gateway account, no app to install beyond KDE Connect itself.

agent ──MCP──▶ phone-sms ──D-Bus──▶ kdeconnectd ──LAN──▶ KDE Connect (Android) ──▶ SMS

Tools:

ToolDoes
list_threadsconversations, newest first, with the latest message; filter by contact or unread
read_threadthe last n messages of one conversation
find_contactlook up a contact by name or number fragment (from the phone's synced contacts)
send_smssend a text, or a group text to several numbers

send_sms carries MCP's destructiveHint, and the server tells the model never to send until you have approved the exact recipient and text in the conversation. Message contents never leave your machine except as the model's context.

Requirements

  • Linux with a D-Bus session bus and KDE Connect (kdeconnectd, a current release; package kdeconnect). It does not need the Plasma desktop; it runs fine under GNOME, Hyprland, Sway…
  • An Android phone with the KDE Connect app (F-Droid / Play), paired with the computer. On the phone, enable the SMS plugin (and Contacts if you want names) and grant the SMS and contacts permissions it asks for.
  • uv and Python 3.12+.

Check the pairing: kdeconnect-cli -l should list your phone as paired and reachable.

Install

Claude Code, as a plugin (one step):

/plugin marketplace add h-3303/phone-sms/plugin install phone-sms@phone-sms

Claude Code, as a plain MCP server:

bash
claude mcp add --scope user phone-sms -- uvx phone-sms

Any other MCP client (Claude Desktop config shape, Cursor, Zed, …):

json
{  "mcpServers": {    "phone-sms": {      "command": "uvx",      "args": ["phone-sms"]    }  }}

From a checkout: uv run --directory /path/to/phone-sms -q phone-sms.

The server uses the first paired, reachable device. With several phones, pin one with PHONE_SMS_DEVICE=<id> (the id kdeconnect-cli -l prints).

CLI

The same code paths, for checking things by hand:

phone-sms threads [-n 20] [--unread]phone-sms read <thread_id> [-n 20]phone-sms contact <name>phone-sms send <number>... -m "text"phone-sms                              # MCP server on stdio

How sending works

  1. find_contact <name> gives the number; send_sms takes numbers, ideally in E.164 (+14375551234).
  2. The model shows you recipient and text and waits for your yes.
  3. send_sms answers handed to phone… once kdeconnectd has accepted the request. That is not delivery: the sent message shows up in list_threads / read_thread once the phone syncs it, usually within a minute.

Troubleshooting

  • "no paired, reachable device": open KDE Connect on the phone, same Wi-Fi, kdeconnect-cli -l.
  • Sent, but nothing arrives: on the phone, check that the SMS plugin is enabled for this computer and that Android granted KDE Connect the SMS permission. Watch the request leave the server with dbus-monitor --session "interface='org.kde.kdeconnect.device.conversations',member='sendWithoutConversation'".
  • Names missing: enable the Contacts plugin on both ends; vCards land in ~/.local/share/kpeoplevcard/kdeconnect-<device>/.
  • The kdeconnectd journal line Unimplemented conversation of type 'r' comes from the notification-forwarding plugin, not SMS.

Notes for hackers

It uses org.kde.kdeconnect.device.conversations, the interface the kdeconnect-sms app uses. The daemon object's introspection XML has duplicate methods, so device discovery is a raw D-Bus call. requestConversation first emits only cached messages, so read_thread waits for count messages or conversationLoaded, not for a quiet gap.

License

GPL-3.0-or-later, like KDE Connect.

来源:README.md,提交 58b443d

工具

0
工具元数据尚未被收录。

版本历史

1
  1. v0.1.0最新Oct 2, 2026