YOUR TEXTS, TO YOUR AGENT. OVER YOUR OWN WI-FI, AND NOWHERE ELSE.
An MCP server that lets Claude, or any client that speaks MCP, read your conversations, look up a contact and send a text, from your own phone and your own number. The phone is reached through KDE Connect, which you may already have paired: the server talks to the KDE Connect daemon on your computer over D-Bus, the daemon talks to the phone across your local network, and the phone sends the message as if you had typed it. No SMS gateway, no relay in somebody's cloud, no second number, no account to open. Four tools, and the one that sends will not be called until you have seen who it goes to and what it says.
find_contact and gets the number from the contacts your phone has synced.send_sms. The request goes to kdeconnectd on your machine.read_thread once the phone syncs it back, usually within the minute.WITHOUT YOUR YES
list_threadsconversations, newest first, with the latest message of each; filter by a name, a number fragment, or unreadread_threadthe last n messages of one conversation, oldest first, names in place of numbersfind_contacta name or part of a number against the contacts the phone shares with KDE Connectsend_smsone number, or several for a group text; marked destructive, and the server tells the model to wait for your approval of recipient and text
sudo pacman -S --needed kdeconnect uv # or your distro's packages kdeconnect-cli -l # phone: paired and reachable? # Claude Code, as a plugin /plugin marketplace add h-3303/phone-sms /plugin install phone-sms@phone-sms # or as a plain MCP server, in any client uvx phone-sms
On the phone: the KDE Connect app from F-Droid or Play, paired with the computer, with its SMS plugin
on (and Contacts, for names) and Android's SMS permission granted. Plasma is not needed; the daemon
runs under GNOME, Hyprland or Sway just the same. With several phones paired,
PHONE_SMS_DEVICE picks one.
The other ways to give an agent your texts all route them through someone: an SMS gateway with its own number,
a relay app that forwards your messages to a server, or a script that drives the phone's screen over USB.
KDE Connect already has the phone's conversations, keeps them on your network, and sends from the number
your friends know. The kdeconnect-sms desktop app uses the very same D-Bus interface; this server
is that app's other half, written for a model instead of a window.
$ phone-sms threads -n 2 [56] 2026-10-02 15:54 ← Sam <+14375550142>: see you at 7 [55] 2026-10-02 14:03 ← +18005550199: Your order shipped. $ phone-sms contact sam Sam: +1-437-555-0142 $ phone-sms send +14375550142 -m "running late" handed to phone for sending to Sam <+14375550142>
The CLI runs the same code paths as the tools, so when something goes wrong you can find out whether it is the model, the server, or the phone.
WHAT IT WILL NOT DO.
It will not send a text you have not approved, word for word, to a recipient you have not approved. It will not pass your messages to any server: they go from the phone to your computer and into the model's context, and the server asks the model to quote only what the task needs. It keeps no copy, no log, no database. It needs no number but yours and no account at all.
Built and used on a Pixel 7 running GrapheneOS, paired with a CachyOS laptop under Hyprland. Any Android phone KDE Connect supports should do.
github.com/h-3303/phone-sms · llms.txt · privacy · GPL-3.0-or-later