phone-sms について
phone-smsは、ペアリング済みのAndroid端末を通じてSMSを読み書きする、Linuxユーザー向けのMCPサーバーです。KDE Connectをローカルネットワークで使い、クラウド中継を介しません。
主な機能
- 01SMS会話の一覧表示と絞り込み
- 02会話内の直近メッセージの取得
- 03同期済み連絡先の検索
- 04個別またはグループへの送信
- 05送信前の承認要求
活用シーン
- 01未読SMS会話の確認
- 02返信前の連絡先検索
- 03SMSの作成と承認
MCP 対応
MCPクライアントに、SMS会話・メッセージ・連絡先検索・送信のツールを提供します。送信は破壊的操作として示され、正確な宛先と本文の承認を求めます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
4掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| limit | integer | いいえ | |
| contact | string | いいえ | |
| unread_only | boolean | いいえ |
詳細
phone-sms
サイト: https://phone-sms.vercel.app · リポジトリ: https://github.com/h-3303/phone-sms
Claude(または任意のMCPクライアント)が、あなた自身のAndroidスマートフォンを使い、あなた自身の電話番号からSMSを読んだり送信したりできるMCPサーバーです。ローカルネットワーク上の KDE Connect を介してスマートフォンと通信します。クラウド中継も、SMSゲートウェイアカウントも不要で、KDE Connect以外のアプリをインストールする必要もありません。
agent ──MCP──▶ phone-sms ──D-Bus──▶ kdeconnectd ──LAN──▶ KDE Connect (Android) ──▶ SMS

ツール:
| ツール | 内容 |
|---|---|
list_threads | 最新のものから順に、最新メッセージとともに会話を表示します。連絡先または未読で絞り込めます |
read_thread | 1つの会話の直近 n 件のメッセージを読み取ります |
find_contact | 名前または電話番号の一部から連絡先を検索します(スマートフォンと同期された連絡先から検索) |
send_sms | テキストメッセージ、または複数の電話番号へのグループメッセージを送信します |
send_sms にはMCPの destructiveHint が設定されており、会話内で正確な宛先とメッセージの内容が承認されるまで送信しないよう、サーバーがモデルに指示します。メッセージの内容がマシンの外に出るのは、モデルのコンテキストとして渡される場合のみです。
必要条件
- D-Busセッションバスと KDE Connect(
kdeconnectd、現行リリース、パッケージkdeconnect)を備えたLinux環境。Plasmaデスクトップは不要です。GNOME、Hyprland、Swayなどでも問題なく動作します。 - コンピューターとペアリング済みの KDE Connect アプリをインストールしたAndroidスマートフォン(F-Droid / Play)。スマートフォンで SMS プラグイン(名前を使う場合は Contacts も)を有効にし、求められるSMSと連絡先の権限を許可してください。
- uv と Python 3.12以降。
ペアリングを確認するには、kdeconnect-cli -l を実行します。スマートフォンが paired and reachable と表示されている必要があります。
インストール
Claude Codeのプラグインとしてインストールする場合(1ステップ):
/plugin marketplace add h-3303/phone-sms
/plugin install phone-sms@phone-sms
Claude Codeで通常のMCPサーバーとして使う場合:
claude mcp add --scope user phone-sms -- uvx phone-sms
その他のMCPクライアントの場合(Claude Desktopの設定形式、Cursor、Zedなど):
{
"mcpServers": {
"phone-sms": {
"command": "uvx",
"args": ["phone-sms"]
}
}
}
スキル(承認ルール、OTPの手順、ダイジェストの手順を含め、エージェントにツールの使用タイミングと使用方法を伝えます)。上記のClaude Codeプラグインには含まれています。Cursor、Codex、Copilot、Gemini CLIなどで使う場合:
npx skills add h-3303/phone-sms
スキルファイルはMITライセンスです(plugin/skills/phone-sms/ を参照)。スキルのマーケットプレイスにも掲載されています。サーバーは引き続きGPLライセンスで、上記のコマンドによりPyPIからインストールされます。
中継サービスではなく、これを選ぶ理由
| phone-sms | TextBee、SimLink、SMS8 | ADB / Termuxサーバー | Twilio系MCP | mac Messages MCP | |
|---|---|---|---|---|---|
| 自分の電話番号 | はい | はい、自分のSIM | はい | いいえ、レンタルした番号 | はい、iPhone経由 |
| クラウド中継 | なし | 相手側のサーバー、またはセルフホスト | なし | あり | なし |
| 必要なもの | Linux + KDE Connect | Androidアプリ + アカウントまたはAPIキー | USBデバッグ、またはスマートフォン上のTermux | アカウント、米国内の通信にはA2P 10DLC登録、メッセージごとの料金 | macOS、フルディスクアクセス |
| 受信トレイの読み取り | はい | はい | はい | レンタルした番号の通信のみ | はい |
製品用の電話番号が必要なら、中継サービスを選んでください。Linuxを使っていて、自分のエージェントに 自分宛ての メッセージを読んだり返信したりさせたいなら、phone-smsを選んでください。
チェックアウト済みのディレクトリから実行する場合:uv run --directory /path/to/phone-sms -q phone-sms。
サーバーは、ペアリング済みで到達可能な最初のデバイスを使用します。スマートフォンが複数ある場合は、kdeconnect-cli -l に表示されるIDを指定して固定できます:PHONE_SMS_DEVICE=<id>。
CLI
手動で確認する場合も、同じコードパスを使用します:
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 # stdio上のMCPサーバー
送信の仕組み
find_contact <name>で電話番号を取得します。send_smsには電話番号を渡します。E.164 形式(+14375551234)が理想的です。- モデルが宛先と本文を表示し、あなたの承認を待ちます。
kdeconnectdがリクエストを受け付けると、send_smsは 端末に引き渡しました… と応答します。これは配信完了を意味しません。端末がメッセージを同期すると、通常は1分以内に送信済みメッセージがlist_threads/read_threadに表示されます。
セキュリティとプライバシー
- ローカルのみです。 サーバーは D-Bus セッションバスと通信するだけで、それ以外とは通信しません。ネットワークを経由するのは、LAN 上のコンピューターと端末を結ぶ KDE Connect 独自の暗号化リンクだけです。サーバーはソケットを開かず、アカウントや API キー、テレメトリーもありません。
- モデルに表示される情報。 あなたが依頼した内容に対して、ツールが返す情報のみです。スレッドの一覧と、読み取るよう依頼したメッセージが対象です。連絡先の名前は、KDE Connect がすでに同期した vCard(
~/.local/share/kpeoplevcard/)から取得します。サーバーがディスクに書き込むことはありません。 - 送信には二重の確認があります。
send_smsにはdestructiveHintの注釈が付いています。サーバーの指示とスキルのどちらも、モデルが正確な宛先と本文を表示し、会話内であなたの承認を待つよう求めています。また、Claude Code ではツールの権限確認も二つ目のゲートになります。複数人へのグループテキスト送信には対応していますが、リストへの一斉送信は意図的に対応していません。 - サプライチェーン。 純粋な Python 製で、依存関係は2つ(
mcp、dbus-next)です。GitHub Actions から PyPI Trusted Publishing を使って公開され、プラグインでは正確なバージョンを固定しています。監査する場合はsrc/の340行をご確認ください。 - プライバシーページ:https://phone-sms.vercel.app/privacy。問題はイシュートラッカーで報告してください。
トラブルシューティング
- 「ペアリング済みで到達可能なデバイスがありません」:端末で KDE Connect を開き、同じ Wi-Fi に接続してから、
kdeconnect-cli -lを実行してください。 - 送信済みなのに届かない:端末で、このコンピューターに対して SMS プラグインが有効になっていること、および Android が KDE Connect に SMS の権限を付与していることを確認してください。
dbus-monitor --session "interface='org.kde.kdeconnect.device.conversations',member='sendWithoutConversation'"を実行すると、リクエストがサーバーから送信される様子を確認できます。 - 名前が表示されない:両方の端末で連絡先プラグインを有効にしてください。vCard は
~/.local/share/kpeoplevcard/kdeconnect-<device>/に保存されます。 kdeconnectdのジャーナルに表示される Unimplemented conversation of type 'r' という行は、SMS ではなく通知転送プラグインに由来します。
開発者向けメモ
このアプリは、kdeconnect-sms アプリが使用するインターフェース org.kde.kdeconnect.device.conversations を使用します。デーモンオブジェクトのイントロスペクション XML には重複したメソッドがあるため、デバイスの検出には D-Bus の生の呼び出しを使います。requestConversation はまずキャッシュ済みメッセージのみを出力するため、read_thread は一定時間何も届かない状態ではなく、count 件のメッセージまたは conversationLoaded を待ちます。
ライセンス
サーバーは KDE Connect と同様に GPL-3.0-or-later です。plugin/skills/phone-sms/ のスキルファイルは、スキルマーケットプレイスで再配布できるよう MIT ライセンスです。
Moïrai Digital が開発しました。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。