Skip to main content
Glama
tarun101

iMessage MCP

by tarun101

iMessage MCP

macOSのMessages履歴を読み取り、新しいiMessageを送信するローカルMCPサーバーです。すべてローカルで完結するため、あなたのマシンから外へデータが出ていくことはありません。

ツール

Tool

説明

list_chats

直近にアクティブだった会話の一覧(識別子+最終メッセージ時刻)。

get_messages

1つの会話の最近のメッセージ(識別子またはguidで指定)。

get_recent_messages

全会話にわたる最新メッセージ(どのチャットに属するかという属性付き)。

search_messages

メッセージ本文への部分文字列検索。

send_message

電話番号またはメールアドレスにiMessageを送信します。 (オプトイン)

send_to_chat

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とツールごとの注釈(readOnlyHintdestructiveHint)を公開しているので、ホスト側で危険なツールに対して警告を出せます。

していないこと: 悪意のあるメッセージを読み取ったそのままのモデルが、それに対して行動しようとするのを止めることはできません。送信を有効にする場合は、送信ツールには必ず承認を求めるプロンプトを残しておいてください。

設定

いずれも任意です。シェルのプロファイルではなく、MCPホストの設定で指定してください。

変数

デフォルト

説明

IMESSAGE_MCP_ALLOW_SEND

オフ

1を設定すると、2つの送信ツールが登録されます。

IMESSAGE_MCP_ALLOWED_RECIPIENTS

カンマ区切りの許可リスト。空は制限なしを意味します。電話番号の書式は正規化されるため、+15551234567(555) 123-4567も同じ番号としてマッチします。

IMESSAGE_MCP_MAX_CHARS

2000

送信メッセージの最大文字数。

IMESSAGE_MCP_SEND_LOG

~/.imessage-mcp/sent.log

JSON Lines形式の監査ログ。

IMESSAGE_MCP_DB

~/Library/Messages/chat.db

データベースのパスを上書きします。

セットアップ

git clone https://github.com/tarun101/imessage-mcp.git
cd imessage-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -r requirements.txt

Python 3.10以上です。以降の説明では、$REPOがあなたのクローンの絶対パスであることを前提とします。

mcpの依存関係は<2に固定されています。2.x SDKには、このサーバーがインポートするmcp.server.fastmcpが削除されたため、バージョン未固定でインストールした場合には2.xが入って起動時に失敗します。

macOSの権限(両方必要)

  1. フルディスクアクセス — これがないと~/Library/Messages/chat.dbの読み取りがブロックされます。サーバーを実行するプロセス(Terminal、iTerm、MCPホストアプリなど)をシステム設定 → プライバシーとセキュリティ → フルディスクアクセスに追加し、完全に終了してからもう一度起動してください。

  2. 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が受け付けたがまだ届いていない状態を意味します—通常は失敗ではなく、単なる遅延です。

  • 送信は現実に発生します。 これらのツールは実際にメッセージを送信します。取り消しはできません。

Install Server
A
license - permissive license
A
quality
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables 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.
    104
    10
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    A 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.
    6
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Read-only MCP server for local macOS Messages database, enabling querying of chats, messages, attachments, and metadata.
    104
    MIT
  • A
    license
    Not graded
    quality
    B
    maintenance
    MCP server for reading and sending iMessages on macOS. Exposes iMessage history and send capabilities through tools like list_conversations and send_imessage.
    19
    MIT

View all related MCP servers

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.

View all MCP Connectors

Latest Blog Posts

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