Skip to main content
Glama
tszaks

multimodal-imessage-mcp

by tszaks

Multimodales iMessage MCP

Der vollständigste iMessage MCP-Server für Claude. Lies vollständige Unterhaltungen, durchsuche Nachrichten, betrachte Bildanhänge, sende Nachrichten, suche Kontakte und reagiere auf Nachrichten – alles von Claude Desktop oder Claude Code aus.

Warum dieses Tool existiert

Jedes andere iMessage MCP-Tool fragt die Spalte text in Apples chat.db ab. Das Problem? Auf modernem macOS (14+) sind 93 % der Nachrichten in attributedBody statt in text gespeichert. Diese Tools geben stillschweigend leere oder unvollständige Unterhaltungen zurück.

Dieser Server hat Apples binäres NSAttributedString-Format rückentwickelt, um den tatsächlichen Nachrichteninhalt zu extrahieren und dir Zugriff auf deine vollständige Nachrichtenhistorie zu geben.

Related MCP server: jons-mcp-imessage

Funktionen

Tool

Beschreibung

read_recent_messages

Lies deine neuesten Nachrichten aus allen Unterhaltungen

search_messages

Volltextsuche über alle Nachrichten, Kontakte und Gruppennamen

get_conversation

Erhalte eine vollständige Unterhaltung mit einem beliebigen Kontakt (Name oder Nummer)

list_chats_structured

Erhalte Chat-IDs, Handles, letzten Absender, Vorschauen und Gruppenstatus als JSON

get_conversation_by_chat_id

Erhalte einen zuverlässigen strukturierten Thread anhand der Chat-ID

read_receipts release flag

Fügt bestmögliche Lesebestätigungs-Metadaten für ausgehende 1:1 iMessage-/RCS-Nachrichten hinzu

find_outreach_followups

Finde SMS-Outreach-Threads, die eine Nachverfolgung benötigen

get_attachment

Betrachte Bilder und Dateien aus Nachrichten – Claude kann Fotos sehen und analysieren

send_message

Sende iMessages oder SMS/RCS mit Bestätigungssicherheit und optionalem verifizierten Fallback

detect_message_service

Überprüfe einen Thread und empfehle iMessage, SMS/RCS oder automatisch vor dem Senden

send_message_batch

Vorschau und Sende geprüfte Batches mit einem Freigabe-Token

list_delivery_failures

Liste rote-Ballon-Sendefehler, ausstehende Sendungen und SMS/RCS-Wiederherstellungen auf

delete_messages

Lösche genaue lokale Nachrichten-Zeilen mit Backup-orientierter DB-Bereinigung

delete_threads

Vorschau und lösche vollständige lokale Threads mit einem genauen Batch-Freigabe-Token

edit_message

Bearbeite experimentell eine kürzlich gesendete ausgehende iMessage über die Nachrichten-UI-Automatisierung

undo_send_message

Mache experimentell das Senden einer kürzlichen ausgehenden iMessage über die Nachrichten-UI-Automatisierung rückgängig

list_recent_chats

Sieh deine aktivsten Unterhaltungen

lookup_contact

Finde Telefonnummern und E-Mails aus deinen Kontakten

react_to_message

Füge Tapback-Reaktionen zu Nachrichten hinzu

Multimodal: Claude kann deine Fotos sehen

Wenn du get_attachment verwendest, werden Bilder als base64-Inhaltsblöcke zurückgegeben, die Claude tatsächlich ansehen kann. HEIC-Fotos (iPhone-Standard) werden automatisch in JPEG konvertiert. Das bedeutet, Claude kann:

  • Beschreiben, was auf einem Foto ist, das dir jemand geschickt hat

  • Text/Screenshots aus Bildern lesen

  • Visuelle Inhalte in deinen Unterhaltungen analysieren

Voraussetzungen

  • macOS (dieses liest die lokale iMessage-Datenbank)

  • Node.js >= 18 und < 26. Node 24 LTS wird empfohlen, da die gesperrte native SQLite-Abhängigkeit nicht mit Node 26 kompatibel ist.

  • Voller Festplattenzugriff für deine Terminal-App (Systemeinstellungen > Datenschutz & Sicherheit > Voller Festplattenzugriff). Dies deckt sowohl die iMessage-Datenbank als auch die für die Kontaktnamensauflösung verwendete Adressbuch-Datenbank ab – die Kontakte-App muss nicht geöffnet sein.

Installation

git clone https://github.com/tszaks/imessage-mcp.git
cd imessage-mcp
npm install

Konfiguration

Claude Desktop

Füge zu deiner ~/Library/Application Support/Claude/claude_desktop_config.json hinzu:

{
  "mcpServers": {
    "imessage": {
      "command": "/opt/homebrew/bin/node",
      "args": ["/path/to/imessage-mcp/index.js"]
    }
  }
}

Wichtig: Verwende den vollständigen Pfad zu deiner Node.js-Binärdatei (z. B. /opt/homebrew/bin/node), nicht nur node. macOS-Desktop-Apps übernehmen nicht die PATH-Variable deiner Shell, und die Verwendung eines bloßen node-Befehls führt oft zu einer älteren System-Node, die native Modulabstürze verursacht.

Claude Code

Füge zu deiner .mcp.json hinzu:

{
  "mcpServers": {
    "imessage": {
      "command": "node",
      "args": ["/path/to/imessage-mcp/index.js"]
    }
  }
}

In Claude Code wird node typischerweise korrekt aufgelöst, da es die Shell-Umgebung übernimmt.

Verwendungsbeispiele

"Zeig mir meine neuesten Nachrichten" – liest deine letzten Unterhaltungen

"Was hat Mama mir heute geschrieben?" – löst "Mama" über dein Adressbuch in eine Telefonnummer auf und ruft die Unterhaltung ab

"Durchsuche meine Nachrichten nach 'Flugbestätigung'" – Volltextsuche über alle Nachrichten

"Finde Outreach-Kandidaten aus den letzten 7 Tagen, die geantwortet haben und eine Nachverfolgung benötigen" – gibt strukturierte Outreach-Kandidaten mit Risikobewertungen zurück

"Zeige eine Vorschau dieses Batches von 10 Folgetexten" – gibt genaue Empfänger, Nachrichten, Warnungen und einen Freigabe-Token zurück, bevor etwas gesendet wird

"Zeige kürzliche Sendefehler" – meldet ausgehende Nachrichten, die von Nachrichten als fehlgeschlagen oder ausstehend markiert wurden, einschließlich ob eine spätere SMS/RCS-Sendung den Thread wiederhergestellt hat

"Zeig mir das Foto von Nachricht 538516" – gibt das tatsächliche Bild zurück, damit Claude es ansehen und beschreiben kann

"Sende 'Komme 10 Min zu spät' an +1234567890" – sendet eine iMessage (erfordert Bestätigung)

Release-Flags

Release-Flags sind opt-in über die MCP-Server-Umgebung:

{
  "mcpServers": {
    "imessage": {
      "command": "node",
      "args": ["/path/to/imessage-mcp/index.js"],
      "env": {
        "IMESSAGE_MCP_RELEASES": "auto_sms_fallback,cleanup_failed_imessage_after_sms_fallback,message_mutation_tools,experimental_message_ui_actions,read_receipts"
      }
    }
  }
}

Flag

Verhalten

auto_sms_fallback

send_message und send_message_batch überprüfen nach einem automatischen iMessage-Sendevorgang kürzliche ausgehende Zeilen. Wenn Nachrichten die blaue Blase als fehlgeschlagen markieren und der Empfänger telefonbasiert ist, wiederholt der MCP den Vorgang über SMS/RCS.

cleanup_failed_imessage_after_sms_fallback

Nachdem auto_sms_fallback erfolgreich per SMS/RCS wiederholt hat, führt der MCP einen bestmöglichen UI-Bereinigungsschritt aus, um die fehlgeschlagene blaue iMessage-Blase zu löschen, und meldet, ob die Bereinigung verifiziert wurde. Dies ändert niemals direkt chat.db.

message_mutation_tools

Stellt delete_messages und delete_threads bereit. Diese Tools erstellen ein zeitgestempeltes Backup von chat.db, chat.db-wal und chat.db-shm, bevor sie die lokale Nachrichten-Datenbank direkt bereinigen. delete_messages löscht genaue Nachrichten-Zeilen-IDs ohne Bestätigung. delete_threads erfordert einen genauen Batch-Freigabe-Token für die vollständig angeforderte Chat-ID-Liste.

experimental_message_ui_actions

Stellt edit_message und undo_send_message bereit. Diese Tools verwenden die Nachrichten-UI-Automatisierung, validieren, dass das Ziel eine kürzlich gesendete ausgehende iMessage ist, und überprüfen nach der Aktion gegen chat.db. Sie scheitern klar, wenn Nachrichten die Menüaktion nicht bereitstellt oder die Nachricht außerhalb des von Apple erlaubten Fensters liegt.

read_receipts

Fügt Lesebestätigungsfelder zu strukturierten Unterhaltungsergebnissen und Lesestatus-Hinweise zur Textausgabe von get_conversation hinzu. Unterstützt ausgehende 1:1 iMessage- und RCS-Zeilen, wenn macOS date_read synchronisiert hat. SMS, Gruppenchats und eingehende Nachrichten werden als nicht unterstützt gemeldet. Fehlendes date_read bedeutet nicht gelesen oder nicht verfügbar, was auch bedeuten kann, dass Bestätigungen deaktiviert oder nicht synchronisiert sind.

Mutationstools

delete_messages akzeptiert genaue Nachrichten-ROWIDs:

{ "message_ids": ["538516", "538517"] }

Es erfordert keine Bestätigung. Es meldet gelöschte IDs, fehlende IDs, Backup-Speicherort und alle verbleibenden Zeilen, die während der Überprüfung gefunden wurden.

delete_threads ist ein zweistufiger genauer Batch-Ablauf:

{ "chat_ids": [101, 102] }

Die Vorschau gibt einen approval_token für diese geordnete Liste und die in der Vorschau angezeigten Thread-Metadaten zurück. Zum Löschen sende die gleiche geordnete chat_ids, confirm: true und diesen Token:

{ "chat_ids": [101, 102], "confirm": true, "approval_token": "..." }

Eine Änderung der Reihenfolge, der Liste oder des Tokens führt zum Fehlschlagen der Anfrage.

edit_message und undo_send_message sind experimentell, da Nachrichten keine erstklassigen AppleScript-Befehle für diese Aktionen bereitstellt. Sie öffnen die Unterhaltung, finden die sichtbare ausgehende Blase anhand eines Textausschnitts, verwenden das Kontextmenü und überprüfen dann das Ergebnis. Sie sollen das tatsächliche Nachrichten-Verhalten beeinflussen, keine gefälschten lokalen DB-Bearbeitungen.

Optionale Anpassung:

IMESSAGE_MCP_SEND_VERIFY_DELAY_MS=2500

Dies steuert, wie lange der MCP wartet, bevor er die lokale Nachrichten-Datenbank auf die neue ausgehende Zeile überprüft.

Wie es funktioniert

Die attributedBody-Korrektur

Apples iMessage-Datenbank (~/Library/Messages/chat.db) hat zwei Spalten für Nachrichteninhalte:

  • text – die alte Klartext-Spalte (von älteren macOS-Versionen verwendet)

  • attributedBody – ein serialisierter NSAttributedString-Blob (von macOS 14+ verwendet)

Auf modernem macOS hat Apple nach und nach die Nachrichtenspeicherung auf attributedBody umgestellt, um Rich Text, Erwähnungen und Formatierung zu unterstützen. Die Spalte text ist zunehmend nur ein Legacy-Fallback, der oft NULL ist.

Dieser Server erkennt Nachrichten mit NULL-text und extrahiert den Inhalt aus attributedBody, indem er das binäre NSTypedStream-Format parst:

  1. Findet den NSString-Marker im binären Blob

  2. Liest über die Typ-Header-Bytes (01 94 84 01 2b) hinweg

  3. Dekodiert das Längenpräfix (ein Byte für kurze Nachrichten, mehrere Bytes für längere)

  4. Extrahiert die UTF-8-Textnutzlast

Anhangbehandlung

iMessage-Anhänge werden in ~/Library/Messages/Attachments/ gespeichert, wobei die Pfade in der Tabelle attachment verfolgt werden. Das Tool get_attachment:

  1. Fragt die Anhangsmetadaten für eine bestimmte Nachrichten-ID ab

  2. Löst den Pfad ~/Library/Messages/... in einen absoluten Pfad auf

  3. Für JPEG/PNG/GIF/WebP: liest die Datei und gibt base64-Bildinhalt zurück

  4. Für HEIC (iPhone-Standard): konvertiert mit macOS sips in JPEG vor der Rückgabe

  5. Für andere Dateien: gibt Metadaten und den Dateipfad zurück

Fehlerbehebung

"Fehler beim Öffnen der iMessage-Datenbank" Gewähre deiner Terminal-App vollen Festplattenzugriff: Systemeinstellungen > Datenschutz & Sicherheit > Voller Festplattenzugriff.

Kontaktsuche liefert keine Ergebnisse Die Kontaktauflösung liest direkt die macOS-Adressbuch-SQLite-Datenbanken (keine Kontakte-App erforderlich). Stelle sicher, dass voller Festplattenzugriff gewährt wurde. Wenn ein Kontakt gerade erst hinzugefügt wurde, starte den MCP-Server neu, um den Cache zu aktualisieren.

Nativer Modulabsturz / "NODE_MODULE_VERSION mismatch" Baue native Abhängigkeiten neu: npm rebuild. Dies passiert, wenn sich deine Node.js-Version ändert. Stelle außerdem sicher, dass deine Claude Desktop-Konfiguration den vollständigen Pfad zu node verwendet (siehe Konfiguration oben).

Fehlende Nachrichten aus einer Unterhaltung Dies ist genau der Fehler, den dieser Server behebt. Stelle sicher, dass du die neueste Version ausführst, die die attributedBody-Extraktion enthält.

Lizenz

MIT

Kurzanleitung TL;DR

npm install
node index.js

Fügen Sie dann den Server zu Ihrer MCP-Client-Konfiguration hinzu und gewähren Sie Ihrer Terminal-App Full Disk Access.

So funktioniert es (TL;DR)

  • Liest die macOS iMessage SQLite-Datenbank aus

  • Dekodiert moderne attributedBody-Payloads für vollständigen Nachrichtentext

  • Stellt Konversations-/Such-/Anhang-Tools über MCP bereit

  • Verwendet AppleScript für Nachrichten-Sende-/Reaktions-Aktionen mit expliziten Bestätigungen

LLM-Schnellkopie

Verwenden Sie die Kopier-Schaltfläche auf diesem Codeblock in GitHub.

Repo: imessage-mcp
Goal: Full iMessage MCP including attachments and send/reaction actions.
Setup:
1) npm install
2) Grant Full Disk Access to terminal app
3) Add MCP config entry for index.js
Use:
- read_recent_messages, search_messages, get_conversation
- list_chats_structured, get_conversation_by_chat_id, find_outreach_followups
- get_attachment for image/file analysis
- send_message/send_message_batch/react_to_message with explicit confirm flag
How it works:
- SQLite + attributedBody decoding + AppleScript actions wrapped as MCP tools
Install Server
A
license - permissive license
B
quality
A
maintenance

Maintenance

Maintainers
Response time
1wRelease cycle
3Releases (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.
    207
    10
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to read iMessage history and send messages on macOS. Supports conversation listing, message search with keyword and semantic modes, contact lookup, and sending messages to existing conversations.
    13
    11
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    Enables reading, searching, and sending iMessages on macOS by accessing the local messages database and utilizing AppleScript. Users can list conversations, search message history, and send messages to individuals or group chats directly through the Model Context Protocol.
    6

View all related MCP servers

Related MCP Connectors

  • MCP connector for iMessage & Contacts via a local Mac agent + Vercel relay

  • Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.

  • Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.

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/tszaks/imessage-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server