imessage-mcp について
imessage-mcpは、Mac上のMessages履歴を検索・分析する読み取り専用のMCPサーバーです。ローカルで動作し、会話の閲覧、添付ファイルの確認、変更フィード、データのプライバシーモードをMCPクライアントに提供します。
主な機能
- 01iMessage、SMS、MMS、RCSの検索
- 02会話とメッセージ詳細の閲覧
- 03位置情報を除いた写真の表示
- 04フィードによるメッセージ変更の同期
- 05件数・返信時間・連続記録の分析
- 06返却データのプライバシーレベル設定
活用シーン
- 01メッセージ履歴から予約内容を検索
- 02返信待ちの会話を把握
- 03返信時間や連絡パターンを確認
- 04新規・編集・削除メッセージを同期
MCP 対応
検索、会話の閲覧、同期、コミュニケーション分析などのMCPツールとリソースを通じて、ローカルのMessages履歴を提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
npx -y imessage-mcpIMESSAGE_PRIVACYMost any caller can see: full (default for stdio), redacted, or aggregate.IMESSAGE_CONTACTSlive (default) names handles from Contacts; none shows handles only.IMESSAGE_DBPath to a copy of chat.db instead of this Mac's Messages database.IMESSAGE_CACHESet to 0 to keep the search index in memory only.IMESSAGE_UPDATE_CHECKSet to 0 to turn off the npm version check.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
25掲載時のツール一覧 · 3 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| query | string | いいえ | 検索するテキスト(大文字と小文字を区別しない部分文字列一致) |
| contact | string | いいえ | 連絡先のハンドル(電話番号/メールアドレス)または名前で絞り込みます |
| date_from | string | いいえ | 開始日(ISO 形式、例:2024-01-01) |
| date_to | any | いいえ | 終了日(ISO 形式、例:2024-12-31) |
| sent_only | boolean | いいえ | 自分が送信したメッセージのみ |
| received_only | boolean | いいえ | 受信したメッセージのみ |
| group_chat | string | いいえ | グループチャット名または chat_identifier で絞り込みます |
| has_attachment | boolean | いいえ | 添付ファイルのあるメッセージのみ |
| include_all | boolean | いいえ | 返信したことのない相手も含め、すべての連絡先からのメッセージを含めます(デフォルト:false) |
| limit | number | いいえ | 結果の最大数(デフォルト:50、最大:500) |
| offset | number | いいえ | ページネーションのオフセット |
詳細
imessage-mcp
Claude、Codex、Cursor、VS Code、その他あらゆるMCPクライアントから、Messagesの履歴を検索して読むことができます。

読み取り専用です。Mac上で動作します。アカウントもクラウドサービスも、コンパイルも不要です。
- iMessage、SMS、MMS、RCSのメッセージを、単語、完全一致テキスト、フレーズで検索できます
- 編集済みメッセージ、送信取り消しされたメッセージ、リアクション、返信、開封確認を含む会話全体を読み取れます
- 送られてきた写真を、位置情報を削除した状態で表示します
- 変更フィードで新着メッセージを追跡し、件数や返信時間に関する質問にも答えます
インストール
要件: macOS 14以降。npxでインストールする場合はNode.js 24.16以降(Claude Desktopには同梱されています)。暗号化キャッシュをサポートするにはNode 24 LTSを使用してください。Node 25など、SQLiteのチェックポイントAPIを備えていないランタイムでは、メモリ内で検索し、再起動後に再構築します。このことはdoctorで確認できます。
mcpServers JSONを読み込むすべてのクライアントで使える標準設定:
{
"mcpServers": {
"imessage": {
"command": "npx",
"args": ["-y", "imessage-mcp@latest"]
}
}
}
続いて、実行するアプリにフルディスクアクセスを許可します:「システム設定」>「プライバシーとセキュリティ」>「フルディスクアクセス」で、アプリ(Claude、ターミナル、Cursor、VS Codeなど)をオンにし、アプリを完全に終了してから再度開いてください。どのアプリか分からない場合は、そのアプリのターミナルからnpx -y imessage-mcp@latest doctorを実行してください。対象のアプリが表示されます。アクセスが許可されるまでは、どのツールも同じ手順を案内します。
Amp
amp mcp add imessage -- npx -y imessage-mcp@latest
Claude Code
claude mcp add --scope user imessage -- npx -y imessage-mcp@latest
または、プラグインをインストールします:/plugin marketplace add anipotts/imessage-mcpを実行し、続いて/plugin install imessage-mcp@anipottsを実行してください。
Claude Desktop
imessage-mcp.mcpbをダウンロードしてダブルクリックするか、「設定」>「拡張機能」に表示されていれば、そこからiMessage Historyをインストールしてください。自分でインストールしたバンドルを更新するには、最新のバンドルをダウンロードし、もう一度ダブルクリックしてください。
続いて、フルディスクアクセスでClaudeをオンにして、Claudeを終了してから再度開いてください。
Cline
標準設定をcline_mcp_settings.jsonに追加してください(ドキュメント)。
Codex
codex mcp add imessage -- npx -y imessage-mcp@latest
または、~/.codex/config.tomlに追加します:
[mcp_servers.imessage]
command = "npx"
args = ["-y", "imessage-mcp@latest"]
Copilot CLI
/mcp addを実行するか、"type": "local"を指定して標準設定を~/.copilot/mcp-config.jsonに追加してください。
Gemini CLI
標準設定を~/.gemini/settings.jsonに追加してください。
JetBrains(Junie)
Add the standard config to `.junie/mcp/mcp.json`, or type `/mcp` in Junie CLI.opencode
~/.config/opencode/opencode.json に記述します:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"imessage": { "type": "local", "command": ["npx", "-y", "imessage-mcp@latest"], "enabled": true }
}
}
Warp、Windsurf、Zed など
クライアントの MCP 設定に標準の設定を追加します。Zed では "source": "custom" とともに context_servers を使用します。
GUI アプリで npx が見つからないと表示される場合、そのアプリから Node のインストールを参照できていません。which npx で確認したフルパスを command として使用してください。
使い方
「テキストメッセージの状況を教えて」「夕食の予約についてのメッセージを探して」「Sam の返信は通常どのくらい早い?」のように、自然な言葉で尋ねます。クライアントのプロンプトメニューには、次の 3 つのプロンプトもあります:
| プロンプト | 内容 |
|---|---|
catch_up | あなたからの返信を待っている人と、その人が必要としていること |
draft_reply | あなた自身のメッセージの文体に合わせた返信です。送信するのはあなたです。このサーバーから送信することはできません。 |
recap | メッセージで振り返る今週の状況:メッセージ量、最も活発な会話、返信を待っている人 |
リソースをアタッチするクライアントでは、imessage://conversations と imessage://conversations/{chat_id} を使用できます。
ツール
| ツール | 機能 |
|---|---|
search_messages | 部分文字列、完全一致のテキスト、トークン、フレーズで検索します。デフォルトではメッセージ本文を検索します。会話名と添付ファイル名はオプションで検索できます。サービス、送信または受信、日付で絞り込めます |
get_conversation | chat_id、連絡先名、グループ名で会話を読み込みます。編集、リアクション、配信確認、返信、グループイベント、添付ファイルを含みます。カーソルを使って古いイベントをページ送りします |
list_conversations | 連絡先、サービス、種類、返信状況、日付で会話を検索します。各会話の最新メッセージも表示され、最新順またはテキストのやり取りが最も多い相手順で並べ替えられます |
get_attachment | get_conversation の添付ファイルを1つ表示します。画像は位置情報とカメラのメタデータを削除したJPEGとして、テキストファイルはテキストとして表示します。プライバシーモードを full にする必要があります |
sync_messages | カーソル以降のすべての変更(新規、編集、未送信、削除されたメッセージ、会話への参加、リアクション、配信確認)を取得します |
analyze_communication | 時間帯別・曜日別のメッセージ数、応答時間、連続記録、会話を開始した人を分析します |
resolve_contact | Macのアドレスブックで名前、電話番号、メールアドレスに一致する連絡先を特定し、推測せずに曖昧さを報告します |
server_status | バージョン、更新の有無、プライバシーモード、インデックスとキャッシュの状態、スキーマのサポート状況、会話への参加数、連絡先へのアクセス状況を表示します |
すべてのツールは読み取り専用で、readOnlyHint が設定されています。結果ではプレーンなID(message_id、chat_id、attachment_id)を使用し、ツール間で受け渡せます。
Appleは同じメッセージを複数の会話に記録することがあります。検索ではそのメッセージを1回だけ返し、すべての正規の chat_ids と、それぞれに対応する conversations ラベルを含めます。参加先が1つだけの場合も chat_id と conversation が含まれます。共有された結果の場合は、chat_ids の該当するIDを get_conversation に渡してください。チャットのエイリアスが統合されるのは、Appleの明示的な照合情報がある場合に限られます。共有メッセージによって、無関係な会話が統合されることはありません。
全体および連絡先ごとのメッセージ数では、指定した範囲内の共有レコードが重複除外されます。会話のタイムラインとシーケンス指標では記録された各参加情報が保持されるため、会話ごとの件数を合計すると全体の件数を上回ることがあります。同期では変更内容に chat_ids が含まれ、previous_chat_ids を伴う message_membership_changed が出力されます。Appleはこれらの紐づけにタイムスタンプを付けないため、changed_at はnullです。記録された参加情報は変更が確認された時点の内容を示します。利用可能な本文、送信者、配信確認の各フィールドは、現在のソースの状態を示します。インデックス形式をアップグレードするとキャッシュが一度再構築され、古い同期カーソルは無効になります。DATABASE_CHANGED が返された場合は、新しい同期を開始してください。
連絡先名を指定すると、選択した人物のアドレスが検索対象に含まれます。連絡先に競合するラベルがある場合でも、電話番号またはメールアドレスを完全一致で指定すると、そのアドレスだけが対象になります。resolve_contact は引き続き、人物の特定に曖昧さがある場合に報告します。アドレスを対象に絞り込んでも、人物が統合されたり、他のアドレスが含まれたりすることはありません。グループ名がアドレス形式の場合は、conversation_names スコープで検索し、選択した chat_id を使用してください。
各ツールの出力スキーマは、成功時のエンベロープと構造化されたエラーエンベロープの両方を受け付けます。そのため、厳格なクライアントでも、元の理由と復旧のヒントを提示できます。
会話の読み込みはデフォルトで厳格に行われます。本文または関連情報を完全に復元できない場合、エラーに allow_partial: true を指定して再試行する方法が示されます。部分的な結果には completeness、警告、各イベントの row_status が含まれます。根拠を引用する前に、これらを確認してください。日付の範囲を狭めるか、around_message_id を指定すると、無関係な破損イベントを避けられる場合があります。構造上の障害がある場合は、引き続き処理を失敗させます。
設定
args にオプションを追加します。例:["-y", "imessage-mcp@latest", "--privacy", "redacted"]。
| オプション | 説明 |
|---|---|
--privacy <mode> | 呼び出し元に表示できる情報の最大範囲です。full(デフォルト)、redacted(名前とマスクされたハンドル、暦日を表示し、メッセージ本文とファイル名は表示しません)、または aggregate(件数のみ)を指定します。呼び出し時に、これより厳しいモードは指定できますが、緩いモードは指定できません。環境変数 IMESSAGE_PRIVACY |
--contacts <mode> | live(デフォルト)では連絡先に登録された名前とハンドルを表示し、none ではハンドルのみを表示します。環境変数 IMESSAGE_CONTACTS |
--database <path> | この Mac のメッセージの代わりに、chat.db のコピーを読み込みます。環境変数 IMESSAGE_DB |
--transport http --port <n> | stdio の代わりに、127.0.0.1 で HTTP 経由の MCP を提供します。IMESSAGE_API_TOKEN または IMESSAGE_API_TOKEN_FILE が必要です。IMESSAGE_ALLOWED_HOSTS と IMESSAGE_ALLOWED_ORIGINS には、カンマ区切りのリストを指定します。どちらもデフォルトは localhost です。 |
IMESSAGE_CACHE=0 | 検索インデックスをメモリ内のみに保持します |
IMESSAGE_WARM_SEARCH=0 | 起動時ではなく、最初の検索時に検索インデックスを構築します |
IMESSAGE_UPDATE_CHECK=0 | バージョンチェックを無効にします |
プライバシーとセキュリティ
- 読み取り専用です。 サーバーはメッセージデータベースを読み取り専用で開き、送信、編集、リアクション、既読にするためのツールはありません。
- ローカルで動作します。 アカウント、テレメトリー、分析はありません。ネットワークリクエストは、任意の npm レジストリへのバージョンチェックのみです。
- クライアントに表示されるのは、要求した内容です。 結果は、利用する MCP クライアントとそのモデルプロバイダーに、それぞれのポリシーに従って渡されます。
--privacy redactedまたはaggregateを指定すると、サーバー外に出る情報が制限されます。 - 検索インデックス。 Mac 上で構築され、SQLite のチェックポイント API が利用可能な場合は、
~/Library/Caches/imessage-mcpに暗号化してキャッシュされます。キーはメッセージデータベースを基に生成されるため、メッセージをすでに読み取れるアプリでのみ開けます。削除しても問題ありません。キャッシュが利用できないか失敗した場合、server_statusがその状態を報告しますが、検索はメモリから続行されます。 - 信頼できないコンテンツ。 メッセージには、AI を操作するために書かれたテキストが含まれている場合があります。サーバーは、すべてのメッセージ内容を指示ではなくデータとして扱うよう、クライアントに伝えます。
詳細:SECURITY.md と PRIVACY.md。
開発
npm ci
npm test # unit tests on synthetic Messages databases
npm run e2e # launches the built server over stdio and HTTP
npm run perf # one-million-message performance gates
テストには合成データのみを使用します。CONTRIBUTING.md を参照してください。
依存関係に関する PR は、個人用トークンを更新することなく、リポジトリに限定された GitHub App を通じて保護された自動マージを行います。毎日のヘルスチェックで、認証エラーや更新の停滞を検出します。メンテナンスと復旧を参照してください。
- App への移行を確認し、ロールバックが不要になった後で、未使用のオーナートークンのコピーを削除します。
- 長期間利用がなかった場合は、GitHub がスケジュールされたワークフローを無効にしていないことを確認します。依存関係のマージによってリリースが公開されることはありません。
ライセンス
MIT
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。