mcpField
P
phone-sms

phone-sms

ローカル
phone-sms.vercel.appコミュニケーション13 週間前に更新

phone-sms について

phone-smsは、ペアリング済みのAndroid端末を通じてSMSを読み書きする、Linuxユーザー向けのMCPサーバーです。KDE Connectをローカルネットワークで使い、クラウド中継を介しません。

主な機能

  1. 01SMS会話の一覧表示と絞り込み
  2. 02会話内の直近メッセージの取得
  3. 03同期済み連絡先の検索
  4. 04個別またはグループへの送信
  5. 05送信前の承認要求

活用シーン

  1. 01未読SMS会話の確認
  2. 02返信前の連絡先検索
  3. 03SMSの作成と承認

MCP 対応

MCPクライアントに、SMS会話・メッセージ・連絡先検索・送信のツールを提供します。送信は破壊的操作として示され、正確な宛先と本文の承認を求めます。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"h-3303-phone-sms": {
"command": "uvx",
"args": [
"phone-sms"
],
"env": {
"PHONE_SMS_DEVICE": "<PHONE_SMS_DEVICE>"
}
}
}
}
起動コマンドuvx phone-sms
設定が必要な環境変数
PHONE_SMS_DEVICEKDE Connect device id to use when several phones are paired (kdeconnect-cli -l)

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypiphone-sms0.1.0

ツール

4

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
limitintegerいいえ
contactstringいいえ
unread_onlybooleanいいえ

詳細

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

Claudeが未読メッセージを一覧表示し、歯医者とのスレッドを読み、返信内容と宛先を正確に表示して確認を待ってから、ユーザー自身のスマートフォンから送信するスクリプト付きデモ。電話番号は例です

ツール:

ツール内容
list_threads最新のものから順に、最新メッセージとともに会話を表示します。連絡先または未読で絞り込めます
read_thread1つの会話の直近 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-smsTextBee、SimLink、SMS8ADB / TermuxサーバーTwilio系MCPmac Messages MCP
自分の電話番号はいはい、自分のSIMはいいいえ、レンタルした番号はい、iPhone経由
クラウド中継なし相手側のサーバー、またはセルフホストなしありなし
必要なものLinux + KDE ConnectAndroidアプリ + アカウントまたは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サーバー

送信の仕組み

  1. find_contact <name> で電話番号を取得します。send_sms には電話番号を渡します。E.164 形式(+14375551234)が理想的です。
  2. モデルが宛先と本文を表示し、あなたの承認を待ちます。
  3. 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 が開発しました。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。