Skip to main content
Glama
tarun101

iMessage MCP

by tarun101

iMessage MCP

Ein lokaler MCP-Server, der deinen macOS-Messages-Verlauf liest und neue iMessages sendet. Alles läuft lokal — nichts verlässt deinen Rechner.

Tools

Tool

Funktion

list_chats

Zuletzt aktive Unterhaltungen (Kennungen + Zeitpunkt der letzten Nachricht).

get_messages

Aktuelle Nachrichten aus einer Unterhaltung (nach Kennung oder guid).

get_recent_messages

Neueste Nachrichten aus allen Unterhaltungen, mit Zuordnung zum Chat.

search_messages

Teilstring-Suche im Nachrichtentext.

send_message

Sendet eine iMessage an eine Telefonnummer oder E-Mail-Adresse. (Opt-in)

send_to_chat

Sendet an einen bestehenden Chat per guid, für Gruppenchats. (Opt-in)

Lese-Tools sind auf 200 Zeilen pro Aufruf begrenzt und schließen Tapbacks aus. Die beiden Sende-Tools sind überhaupt nicht registriert, solange nicht IMESSAGE_MCP_ALLOW_SEND=1 gesetzt ist — ein Host, der nur fürs Lesen konfiguriert ist, kann also nicht einmal versehentlich senden.

Related MCP server: imessage-mcp

Sicherheitsmodell

Das Lesen deiner Nachrichten und das Senden in deinem Namen sind sehr unterschiedliche Fähigkeiten, und beides in einer Agent-Sitzung zu vereinen ist der riskante Teil. Jeder, der dir eine Nachricht schicken kann, kann Text in get_recent_messages einschleusen — Nachrichteninhalte sind also Angreifer-kontrollierte Eingaben, die direkt neben einem Tool liegen, das in deinem Namen Nachrichten sendet.

Was dieser Server dagegen tut:

  • Sende-Tools sind standardmäßig deaktiviert und müssen pro Host aktiviert werden.

  • IMESSAGE_MCP_ALLOWED_RECIPIENTS schränkt ein, wer überhaupt angeschrieben werden kann.

  • Jeder Sendeversuch und jedes Ergebnis wird vor und nach dem AppleScript-Aufruf in ein lokales Audit-Log geschrieben, sodass kein Senden ohne Protokolleintrag möglich ist.

  • Ausgehende Nachrichten sind in der Länge begrenzt und dürfen nicht leer sein.

  • Der Server macht MCP-instructions und Tool-spezifische Annotationen (readOnlyHint, destructiveHint) verfügbar, damit Hosts bei den gefährlichen Tools eine Rückfrage stellen können.

Was er nicht tut: Er kann ein Modell nicht davon abhalten, nach dem Lesen einer bösartigen Nachricht zu entscheiden, darauf zu reagieren. Wenn du Senden aktivierst, behalte eine Genehmigungsabfrage für die Sende-Tools bei.

Konfiguration

Alle optional. Setze sie in der Konfiguration deines MCP-Hosts, nicht in deinem Shell-Profil.

Variable

Standard

Bedeutung

IMESSAGE_MCP_ALLOW_SEND

aus

1 registriert die beiden Sende-Tools.

IMESSAGE_MCP_ALLOWED_RECIPIENTS

leer

Kommagetrennte Allowlist. Leer bedeutet keine Einschränkung. Telefonnummernformatierung wird normalisiert, sodass +15551234567 und (555) 123-4567 übereinstimmen.

IMESSAGE_MCP_MAX_CHARS

2000

Maximale Länge ausgehender Nachrichten.

IMESSAGE_MCP_SEND_LOG

~/.imessage-mcp/sent.log

Audit-Log im JSON-Lines-Format.

IMESSAGE_MCP_DB

~/Library/Messages/chat.db

Überschreibt den Datenbankpfad.

Setup

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 oder neuer. Alles unten geht davon aus, dass $REPO der absolute Pfad zu deinem Klon ist.

Die mcp-Abhängigkeit ist auf <2 festgelegt. Das 2.x-SDK hat mcp.server.fastmcp entfernt, das dieser Server importiert; eine Installation ohne Pinning zieht 2.x und schlägt beim Start fehl.

macOS-Berechtigungen (beide erforderlich)

  1. Voller Festplattenzugriff — ohne ihn ist das Lesen von ~/Library/Messages/chat.db blockiert. Füge den Prozess, der den Server ausführt (Terminal, iTerm oder deine MCP-Host-App), unter Systemeinstellungen → Datenschutz & Sicherheit → Voller Festplattenzugriff hinzu und beende und öffne ihn dann vollständig neu.

  2. Automation → Nachrichten — der erste send_message/send_to_chat-Aufruf löst eine einmalige Berechtigungsabfrage zur Steuerung der Messages.app aus. Erlaube sie.

Schnelltest

source .venv/bin/activate
python -c "import server; print(server.list_chats(5))"

Tests

pip install -e '.[dev]'
pytest

Die Suite erstellt eine synthetische chat.db mit Apples Schema und läuft daher überall — ohne Mac und ohne Zugriff auf deinen echten Nachrichtenverlauf.

Bei einem MCP-Host registrieren

Codex

codex mcp add imessage --env IMESSAGE_MCP_ALLOW_SEND=1 -- \
  "$REPO/.venv/bin/python" "$REPO/server.py"

Oder in ~/.codex/config.toml, was dir auch erlaubt, pro Tool eine Genehmigung zu verlangen:

[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"

Überprüfe mit /mcp in der Codex-TUI.

Claude Code (CLI)

claude mcp add imessage -- "$REPO/.venv/bin/python" "$REPO/server.py"

Claude Desktop / generische MCP-Konfiguration

{
  "mcpServers": {
    "imessage": {
      "command": "/absolute/path/to/imessage-mcp/.venv/bin/python",
      "args": ["/absolute/path/to/imessage-mcp/server.py"]
    }
  }
}

Verwende absolute Pfade, damit das Python der venv (mit installiertem mcp) verwendet wird.

Hinweise & Einschränkungen

  • Nur-Lese-Datenbankzugriff. chat.db wird mit mode=ro geöffnet; der Server schreibt nie in deinen Nachrichtenspeicher. Senden läuft ausschließlich über Messages.app.

  • WAL-Fallback. chat.db ist eine WAL-Datenbank, und ein Nur-Lese-Handle kann die benötigte -shm-Datei nicht erstellen. Wenn ein direkter Öffnungsversuch fehlschlägt — was passiert, wenn Messages.app nicht läuft — liest der Server stattdessen transparent eine temporäre Snapshot-Kopie, die bei jeder Änderung der Quelle aktualisiert wird.

  • attributedBody. Neuere Nachrichten speichern ihren Inhalt in einem binären attributedBody-Blob statt in der text-Spalte. Der Reader dekodiert diese heuristisch — er erfasst normale Textnachrichten, kann aber Rich Content übersehen. Deshalb durchsucht search_messages nur die reine text-Spalte.

  • Zeitstempel werden als ISO-8601-UTC zurückgegeben.

  • Senden wird verifiziert, nicht vorausgesetzt. AppleScript kehrt vor der Zustellung zurück, daher fragt der Server nach dem Senden chat.db nach der ausgehenden Zeile ab. Ein Ergebnis von sent_unverified bedeutet, dass Messages.app es angenommen hat, es aber noch nicht angekommen ist — meist Verzögerung statt Fehler.

  • Senden ist real. Diese Tools senden echte Nachrichten, die nicht zurückgeholt werden können.

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