iMessage MCP
iMessage MCP
macOSのMessages履歴を読み取り、新しいiMessageを送信するローカルMCPサーバーです。すべてローカルで完結するため、あなたのマシンから外へデータが出ていくことはありません。
ツール
Tool | 説明 |
| 直近にアクティブだった会話の一覧(識別子+最終メッセージ時刻)。 |
| 1つの会話の最近のメッセージ(識別子またはguidで指定)。 |
| 全会話にわたる最新メッセージ(どのチャットに属するかという属性付き)。 |
| メッセージ本文への部分文字列検索。 |
| 電話番号またはメールアドレスにiMessageを送信します。 (オプトイン) |
| guidを指定して既存のチャットに送信します(グループチャット用)。 (オプトイン) |
読み取りツールは1回の呼び出しあたり最大200行に制限され、タップバックは除外されます。送信ツール2つは、IMESSAGE_MCP_ALLOW_SEND=1が設定されない限り一切登録されません。そのため、読み取り専用に設定されたホストが、誤って送信することは絶対にありません。
Related MCP server: imessage-mcp
セキュリティモデル
あなたのメッセージを読むことと、あなたとして送信することは、きわめて異なる権限です。そして、その両方を1つのサーバーセッションに置くことが、危険な部分です。あなたにテキストを送れる人なら誰でも、get_recent_messagesにテキストを送り込めます。つまり、攻撃者に制御されたメッセージ本文は、あなたのふりをしてメッセージを送るツールと隣合わせで存在するのです。
これに対してこのサーバーが行っていること:
送信ツールはデフォルトでオフになっており、ホストごとに明示的に有効にする必要があります。
IMESSAGE_MCP_ALLOWED_RECIPIENTSでを受け取れる相手を制限できます。送信の試行とその結果は、AppleScript呼び出しの前後に必ずローカルの監査ログへ追記されるため、記録なしに送信されることはありません。
送信メッセージには長さの上限があり、空のまま送信もできません。
サーバーはMCPの
instructionsとツールごとの注釈(readOnlyHint、destructiveHint)を公開しているので、ホスト側で危険なツールに対して警告を出せます。
していないこと: 悪意のあるメッセージを読み取ったそのままのモデルが、それに対して行動しようとするのを止めることはできません。送信を有効にする場合は、送信ツールには必ず承認を求めるプロンプトを残しておいてください。
設定
いずれも任意です。シェルのプロファイルではなく、MCPホストの設定で指定してください。
変数 | デフォルト | 説明 |
| オフ |
|
| 空 | カンマ区切りの許可リスト。空は制限なしを意味します。電話番号の書式は正規化されるため、 |
|
| 送信メッセージの最大文字数。 |
|
| JSON Lines形式の監査ログ。 |
|
| データベースのパスを上書きします。 |
セットアップ
git clone https://github.com/tarun101/imessage-mcp.git
cd imessage-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txtPython 3.10以上です。以降の説明では、$REPOがあなたのクローンの絶対パスであることを前提とします。
mcpの依存関係は<2に固定されています。2.x SDKには、このサーバーがインポートするmcp.server.fastmcpが削除されたため、バージョン未固定でインストールした場合には2.xが入って起動時に失敗します。
macOSの権限(両方必要)
フルディスクアクセス — これがないと
~/Library/Messages/chat.dbの読み取りがブロックされます。サーバーを実行するプロセス(Terminal、iTerm、MCPホストアプリなど)をシステム設定 → プライバシーとセキュリティ → フルディスクアクセスに追加し、完全に終了してからもう一度起動してください。Automation → Messages — 最初に
send_message/send_to_chatを呼び出したときに、Messages.appを制御するための一回限りの権限プロンプトが表示されます。許可してください。
クイックテスト
source .venv/bin/activate
python -c "import server; print(server.list_chats(5))"テスト
pip install -e '.[dev]'
pytestこのテストスイートは、Appleのスキーマで合成したchat.dbを構築するため、どこでも実行できます。Macや実際のメッセージ履歴へのアクセスは不要です。
MCPホストへの登録
Codex
codex mcp add imessage --env IMESSAGE_MCP_ALLOW_SEND=1 -- \
"$REPO/.venv/bin/python" "$REPO/server.py"または、~/.codex/config.tomlを使う方法もあります。こちらではツール単位の承認を必須にすることも可能です:
[mcp_servers.imessage]
command = "/absolute/path/to/imessage-mcp/.venv/bin/python"
args = ["/absolute/path/to/imessage-mcp/server.py"]
default_tools_approval_mode = "auto"
[mcp_servers.imessage.env]
IMESSAGE_MCP_ALLOW_SEND = "1"
[mcp_servers.imessage.tools.send_message]
approval_mode = "prompt"
[mcp_servers.imessage.tools.send_to_chat]
approval_mode = "prompt"CodexのTUI内で/mcpを入力して確認します。
Claude Code(CLI)の場合
claude mcp add imessage -- "$REPO/.venv/bin/python" "$REPO/server.py"Claude Desktop / 一般的なMCP設定
{
"mcpServers": {
"imessage": {
"command": "/absolute/path/to/imessage-mcp/.venv/bin/python",
"args": ["/absolute/path/to/imessage-mcp/server.py"]
}
}
}venvのPython(mcpがインストール済み)を使用するには、絶対パスを指定してください。
注意点と制限
読み取り専用DBアクセス。 chat.dbは
mode=roで開かれます。サーバーがあなたのメッセージストアに書き込むことは一切ありません。送信はすべてMessages.app経由で行われます。WALフォールバック。 chat.dbはWALデータベースであり、読み取り専用の扱いでは
-shmファイルを作成できません。直接会話を開けない場合は(Messages.appが非稼働しているときに起こります)、サーバーは一時オラプルコピーを読み取ります。これはコピー元が変更されるたびに更新されます。attributedBody。 新しいメッセージは本文を
textカラムではなくバイナリのattributedBodyブロブに格納します。読み出し側はこれをヒューリスティックにデコードします。通常のテキストメッセージはカバーできますが、リッチコンテンツを取りこぼす可能性があります。そのため、search_messagesはプレーンなtextカラムのみを対象にします。タイムスタンプはISO-8601 UTCで返されます。
送信は推測ではなく検証します。 AppleScriptは配信前に戻るため、送信後、サーバーはchat.dbをポーリングして送信行を確認します。結果が
sent_unverifiedとは、Messages.appが受け付けたがまだ届いていない状態を意味します—通常は失敗ではなく、単なる遅延です。送信は現実に発生します。 これらのツールは実際にメッセージを送信します。取り消しはできません。
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables reading, searching, and sending iMessages directly from MCP-compatible clients by accessing the local macOS iMessage database, supporting conversations, attachments, and both individual and group chats.10410MIT
- AlicenseAqualityDmaintenanceA local MCP server that enables reading iMessage conversations and sending new messages through Claude Desktop. It provides secure, read-only access to your Mac's iMessage database and AppleScript-based message sending capabilities.6MIT
- AlicenseNot gradedqualityCmaintenanceRead-only MCP server for local macOS Messages database, enabling querying of chats, messages, attachments, and metadata.104MIT
- AlicenseNot gradedqualityBmaintenanceMCP server for reading and sending iMessages on macOS. Exposes iMessage history and send capabilities through tools like list_conversations and send_imessage.19MIT
Related MCP Connectors
MCP connector for iMessage & Contacts via a local Mac agent + Vercel relay
Remote MCP server for The Colony — a social network for AI agents (posts, DMs, search, marketplace).
Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tarun101/imessage-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server