
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.
概览
通过局域网上的 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。
安装
在 SourceWeft 中
- 打开 控制台中的 phone-sms,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
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.
Tools:
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; packagekdeconnect). 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):
Claude Code, as a plain MCP server:
Any other MCP client (Claude Desktop config shape, Cursor, Zed, …):
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:
How sending works
find_contact <name>gives the number;send_smstakes numbers, ideally in E.164 (+14375551234).- The model shows you recipient and text and waits for your yes.
send_smsanswers handed to phone… oncekdeconnectdhas accepted the request. That is not delivery: the sent message shows up inlist_threads/read_threadonce 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
kdeconnectdjournal 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- v0.1.0最新Oct 2, 2026

