iMessage MCP
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 |
| Zuletzt aktive Unterhaltungen (Kennungen + Zeitpunkt der letzten Nachricht). |
| Aktuelle Nachrichten aus einer Unterhaltung (nach Kennung oder guid). |
| Neueste Nachrichten aus allen Unterhaltungen, mit Zuordnung zum Chat. |
| Teilstring-Suche im Nachrichtentext. |
| Sendet eine iMessage an eine Telefonnummer oder E-Mail-Adresse. (Opt-in) |
| 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_RECIPIENTSschrä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-
instructionsund 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 |
| aus |
|
| leer | Kommagetrennte Allowlist. Leer bedeutet keine Einschränkung. Telefonnummernformatierung wird normalisiert, sodass |
|
| Maximale Länge ausgehender Nachrichten. |
|
| Audit-Log im JSON-Lines-Format. |
|
| Ü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.txtPython 3.10 oder neuer. Alles unten geht davon aus, dass $REPO der absolute Pfad zu deinem Klon ist.
Die
mcp-Abhängigkeit ist auf<2festgelegt. Das 2.x-SDK hatmcp.server.fastmcpentfernt, das dieser Server importiert; eine Installation ohne Pinning zieht 2.x und schlägt beim Start fehl.
macOS-Berechtigungen (beide erforderlich)
Voller Festplattenzugriff — ohne ihn ist das Lesen von
~/Library/Messages/chat.dbblockiert. 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.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]'
pytestDie 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=rogeö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 dertext-Spalte. Der Reader dekodiert diese heuristisch — er erfasst normale Textnachrichten, kann aber Rich Content übersehen. Deshalb durchsuchtsearch_messagesnur die reinetext-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_unverifiedbedeutet, 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.
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