mcpField
I
imessage-mcp

imessage-mcp

ローカル
github.com/anipottsコミュニケーション285 日前に更新

imessage-mcp について

imessage-mcpは、Mac上のMessages履歴を検索・分析する読み取り専用のMCPサーバーです。ローカルで動作し、会話の閲覧、添付ファイルの確認、変更フィード、データのプライバシーモードをMCPクライアントに提供します。

主な機能

  1. 01iMessage、SMS、MMS、RCSの検索
  2. 02会話とメッセージ詳細の閲覧
  3. 03位置情報を除いた写真の表示
  4. 04フィードによるメッセージ変更の同期
  5. 05件数・返信時間・連続記録の分析
  6. 06返却データのプライバシーレベル設定

活用シーン

  1. 01メッセージ履歴から予約内容を検索
  2. 02返信待ちの会話を把握
  3. 03返信時間や連絡パターンを確認
  4. 04新規・編集・削除メッセージを同期

MCP 対応

検索、会話の閲覧、同期、コミュニケーション分析などのMCPツールとリソースを通じて、ローカルのMessages履歴を提供します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"imessage-mcp-anipotts": {
"command": "npx",
"args": [
"-y",
"imessage-mcp"
],
"env": {
"IMESSAGE_PRIVACY": "<IMESSAGE_PRIVACY>",
"IMESSAGE_CONTACTS": "<IMESSAGE_CONTACTS>",
"IMESSAGE_DB": "<IMESSAGE_DB>",
"IMESSAGE_CACHE": "<IMESSAGE_CACHE>",
"IMESSAGE_UPDATE_CHECK": "<IMESSAGE_UPDATE_CHECK>"
}
}
}
}
起動コマンドnpx -y imessage-mcp
設定が必要な環境変数
IMESSAGE_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 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npmimessage-mcp3.3.1

ツール

25

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

パラメーター型必須説明
querystringいいえ検索するテキスト(大文字と小文字を区別しない部分文字列一致)
contactstringいいえ連絡先のハンドル(電話番号/メールアドレス)または名前で絞り込みます
date_fromstringいいえ開始日(ISO 形式、例:2024-01-01)
date_toanyいいえ終了日(ISO 形式、例:2024-12-31)
sent_onlybooleanいいえ自分が送信したメッセージのみ
received_onlybooleanいいえ受信したメッセージのみ
group_chatstringいいえグループチャット名または chat_identifier で絞り込みます
has_attachmentbooleanいいえ添付ファイルのあるメッセージのみ
include_allbooleanいいえ返信したことのない相手も含め、すべての連絡先からのメッセージを含めます(デフォルト:false)
limitnumberいいえ結果の最大数(デフォルト:50、最大:500)
offsetnumberいいえページネーションのオフセット

詳細

README の画像

imessage-mcp

npm MCP Registry CI License: MIT

Claude、Codex、Cursor、VS Code、その他あらゆるMCPクライアントから、Messagesの履歴を検索して読むことができます。

imessage-mcpを使って、ハッカソンについての実際の会話の内容をClaude Codeが確認している様子

読み取り専用です。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に追加してください。

Cursor

Cursorにインストール

または、標準設定を~/.cursor/mcp.jsonに追加してください。

Gemini CLI

標準設定を~/.gemini/settings.jsonに追加してください。

Goose

Gooseにインストール

JetBrains(Junie) Add the standard config to `.junie/mcp/mcp.json`, or type `/mcp` in Junie CLI.
Kiro

Add to Kiro

opencode

~/.config/opencode/opencode.json に記述します:

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "imessage": { "type": "local", "command": ["npx", "-y", "imessage-mcp@latest"], "enabled": true }
  }
}
VS Code

VS Code にインストール VS Code Insiders にインストール

code --add-mcp '{"name":"imessage","command":"npx","args":["-y","imessage-mcp@latest"]}'
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_conversationchat_id、連絡先名、グループ名で会話を読み込みます。編集、リアクション、配信確認、返信、グループイベント、添付ファイルを含みます。カーソルを使って古いイベントをページ送りします
list_conversations連絡先、サービス、種類、返信状況、日付で会話を検索します。各会話の最新メッセージも表示され、最新順またはテキストのやり取りが最も多い相手順で並べ替えられます
get_attachmentget_conversation の添付ファイルを1つ表示します。画像は位置情報とカメラのメタデータを削除したJPEGとして、テキストファイルはテキストとして表示します。プライバシーモードを full にする必要があります
sync_messagesカーソル以降のすべての変更(新規、編集、未送信、削除されたメッセージ、会話への参加、リアクション、配信確認)を取得します
analyze_communication時間帯別・曜日別のメッセージ数、応答時間、連続記録、会話を開始した人を分析します
resolve_contactMacのアドレスブックで名前、電話番号、メールアドレスに一致する連絡先を特定し、推測せずに曖昧さを報告します
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

コメント

MCP は初めてですか?

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

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