signal-mcp
signal-mcp
Signal Desktopのメッセージ用の、ローカル・読み取り専用のModel Context Protocolサーバー。
MCP対応エージェントに、スコープを絞った4つのツールを提供します:
signal_list_conversations— メッセージ本文を返さずに、最近のダイレクト会話とグループ会話を検索します。signal_get_messages— 1つの正確な会話から、上限付きの時系列ウィンドウを取得します。signal_search_messages— リテラル部分文字列検索。会話と時刻で任意に範囲を限定できます。signal_get_message— 引用と添付ファイルのメタデータを含む、1つの正確なメッセージを取得します。
このサーバーはメッセージを送信せず、Signalのデータベースにも書き込みません。stdioを介してローカルで実行され、HTTPリスナーはありません。
重要なプライバシー警告
このサーバーは、接続先のMCPホストとモデルに、あなたのプライベートなSignal履歴を公開する可能性があります。そのホストのデータ処理ポリシーを確認し、リクエストのスコープを狭く保ち、信頼できないエージェントにはこのサーバーを設定しないでください。
Signal Desktopのローカルデータベースは実装の詳細であり、公開APIではありません。Signalのスキーマ更新により、このプロジェクトが一時的に動作しなくなる可能性があります。このプロジェクトは非公式であり、Signal Messenger LLCとは提携しておらず、その承認も受けていません。
Related MCP server: msteams-local-mcp
現在の対応状況
Windows
同じWindowsユーザー向けにインストールされたSignal Desktop
Node.js 20以降
ローカルstdio MCPホスト
現在、自動キーリカバリにはWindowsが必要です。SignalはChromium OSCryptマスターキーを現在のユーザーのDPAPI資格情報で保護しているためです。
インストール
git clone https://github.com/NathanDai5287/signal-mcp.git
cd signal-mcp
npm install
npm run buildデフォルトでは、サーバーは%APPDATA%\Signalの下でSignalを検出します。通常、設定は不要です。
MCPホストを設定せずに接続をテストするには:
npx @modelcontextprotocol/inspector node dist/src/index.jsInspectorは、実際のプライベートメッセージを返すツールを呼び出すことができます。そのブラウザセッションもそれに応じて取り扱ってください。
MCPホスト設定
プロジェクトをビルドし、ホストが絶対パスでコンパイル済みエントリポイントを起動するように設定します:
{
"mcpServers": {
"signal": {
"command": "node",
"args": ["C:\\path\\to\\signal-mcp\\dist\\src\\index.js"]
}
}
}MCP設定を変更した後、ホストを再起動してください。正確な設定ファイルの場所はホストによって異なります。
オプション設定
環境変数はMCPホストのサーバー設定を通じて渡されます:
変数 | 目的 | デフォルト |
| Signal SQLCipherデータベースのパス |
|
| Signal |
|
| Signal Chromium |
|
| 明示的な64文字のSQLCipherキー | DPAPIで回復 |
| メッセージ/検索呼び出しのハード上限 |
|
| 会話一覧取得のハード上限 |
|
SIGNAL_MCP_KEYをコミット済みファイルに含めないでください。Windowsでは自動回復が推奨されます。
データベースアクセスの仕組み
Signal Desktopは、AES-256-GCMで暗号化されたSQLCipherキーをconfig.jsonに保存します。そのラッピングキーはChromiumのLocal Stateにあり、Windows DPAPIで保護されています。起動時に、このサーバーは次の処理を行います:
現在のWindowsユーザーのOSCryptマスターキーをDPAPIで保護解除します。
SignalのSQLCipherキーをメモリ内で復号します。
SQLCipher互換レベル4でデータベースを開きます。
ツール呼び出しを処理する前に、SQLiteの
query_onlyモードを有効にします。
キーが出力されたり、MCPを通じて返されたり、このプロジェクトによって永続化されたりすることはありません。
すべての検索入力はバインドされたSQLパラメータです。%、_、\はエスケープされるため、検索語は呼び出し元が制御するSQLパターンではなく、リテラル部分文字列になります。すべての結果セットには上限があります。
返されるデータ
メッセージ結果には以下を含めることができます:
SignalのメッセージIDと会話ID
ミリ秒単位のタイムスタンプ
受信/送信の方向
送信者のサービスIDと表示名
メッセージ本文
非正規化された引用返信テキスト
添付ファイルのメタデータとローカルダウンロードの可否
このマイルストーンでは、添付ファイルのバイト列の復号や返却、永続的なアーカイブの作成、セマンティック検索、メッセージの送信は行いません。Signalがすでに削除した消えるメッセージは復元できません。
開発
npm test
npm run check
npm run buildテストスイートはインメモリのフェイクリーダーを使用し、Signalデータにはアクセスしません。Signalのプライベートデータベーススキーマの変更を検出するには、手動によるローカルスモークテストが依然として必要です。
運用ログはstderrに出力されます。stdoutはMCP JSON-RPCトラフィック用に予約されているためです。
セキュリティ
メッセージ本文、データベースファイル、キー、サービスID、電話番号、ローカルパスを含む公開Issueを開かないでください。脆弱性を非公開で報告する方法については、SECURITY.mdを参照してください。
ライセンス
プロジェクトのソースコードはMITライセンスです。依存関係はそれぞれのライセンスを保持します。特に、@signalapp/sqlcipherはAGPL-3.0-onlyで配布されています。
This server cannot be deployed
Maintenance
Related MCP Connectors
Explore your Messages SQLite database to browse tables and inspect schemas with ease. Run flexible…
Read-only MCP access to authorized Vocci sessions, notes, files, and memory search.
Search your AI chat history (ChatGPT, Claude, Codex) from any MCP client. Remote, private, read-only
Hosted MCP messaging across owners, tools, and machines, with readable transcripts.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceEnables querying Signal Desktop chats and messages by reading the encrypted SQLite database directly, providing tools for listing chats, searching messages, and running read-only SQL queries.MIT
- AlicenseBqualityBmaintenanceReads the local Microsoft Teams (v2) message cache and exposes it over MCP, enabling AI assistants to list accounts/conversations and search/read messages without Graph API or network.83MIT
- AlicenseAqualityCmaintenanceA read-only MCP server that lets AI search a user's own LINE Desktop chat history on macOS, providing tools to list chats, retrieve messages, and search conversations directly from the local encrypted database.5MIT
- AlicenseNot gradedqualityCmaintenanceEnables AI agents to read the entire Apple Messages (iMessage/SMS) history on a Mac through a read-only, batched tool that supports listing chats, retrieving transcripts, polling recent messages, and searching message bodies via REST or streamable HTTP MCP.MIT