iMessage MCP
iMessage MCP
Ein Deno-Monorepo mit Paketen für den iMessage-Zugriff unter macOS:
@wyattjoh/imessage – Kernbibliothek für den schreibgeschützten Zugriff auf die iMessage-Datenbank
@wyattjoh/imessage-mcp – Model Context Protocol (MCP)-Server für die LLM-Integration
Funktionen
Nachrichten nach Textinhalt, Kontakt oder Datumsbereich durchsuchen
Neueste Nachrichten abrufen
Alle Chats/Unterhaltungen auflisten
Alle Kontakte/Handles abrufen
Nachrichten aus bestimmten Chats abrufen
macOS-Kontakte nach Namen durchsuchen, mit Korrelation der iMessage-Handle-ID
Related MCP server: imessage-mcp
Voraussetzungen
macOS (iMessage ist nur unter macOS verfügbar)
Deno 2.x oder neuer
Lesezugriff auf
~/Library/Messages/chat.dboder auf eine benutzerdefinierte Datenbank, die mitIMESSAGE_DB_PATHkonfiguriert wurdeLesezugriff auf
~/Library/Application Support/AddressBook/(für die Kontaktsuche)
Pakete
@wyattjoh/imessage
Kernbibliothek für den Zugriff auf iMessage-Daten:
deno add @wyattjoh/imessageimport { openMessagesDatabase, searchMessages } from "@wyattjoh/imessage";
const db = await openMessagesDatabase();
const results = await searchMessages(db, { query: "hello" });
db.close();Vollständige Dokumentation ansehen
@wyattjoh/imessage-mcp
MCP-Server für die LLM-Integration:
# Run directly from JSR
deno run --allow-read --allow-env --allow-sys --allow-ffi jsr:@wyattjoh/imessage-mcp
# Or install globally
deno install --global --allow-read --allow-env --allow-sys --allow-ffi -n imessage-mcp jsr:@wyattjoh/imessage-mcpFür die Integration in die Claude-Desktop-App fügen Sie dies zu Ihrer claude_desktop_config.json hinzu:
{
"mcpServers": {
"imessage": {
"command": "deno",
"args": [
"run",
"--allow-read",
"--allow-env",
"--allow-sys",
"--allow-ffi",
"jsr:@wyattjoh/imessage-mcp"
]
}
}
}Benutzerdefinierte Nachrichtendatenbank
Setzen Sie IMESSAGE_DB_PATH, um eine schreibgeschützte SQLite-Datenbank an einem anderen Speicherort zu öffnen, z. B. eine regelmäßig aktualisierte Kopie von chat.db:
{
"mcpServers": {
"imessage": {
"command": "deno",
"args": [
"run",
"--allow-read",
"--allow-env=IMESSAGE_DB_PATH",
"--allow-sys",
"--allow-ffi",
"jsr:@wyattjoh/imessage-mcp"
],
"env": {
"IMESSAGE_DB_PATH": "/tmp/imessage-snapshot.sqlite"
}
}
}
}Der Prozess benötigt Lesezugriff auf die benutzerdefinierte Datei. Wenn Deno keine Berechtigung zum Lesen von IMESSAGE_DB_PATH hat oder die Variable leer oder nicht gesetzt ist, verwendet die Bibliothek ~/Library/Messages/chat.db, ohne nach einem Umgebungszugriff zu fragen.
Option 2: Aus dem Quellcode
Klonen Sie dieses Repository
Abhängigkeiten installieren:
deno cache src/index.tsServer ausführen:
deno run --allow-read --allow-env --allow-sys --allow-ffi src/index.ts # Or use the task: deno task start
Verfügbare Werkzeuge
search_messages – Nachrichten mit Filtern durchsuchen
query(optional): Zu suchender Texthandle(optional): Telefonnummer oder E-Mail-Adresse zum FilternstartDate(optional): ISO-Datumszeit-String für das StartdatumendDate(optional): ISO-Datumszeit-String für das Enddatumlimit(optional): Maximale Anzahl der Ergebnisse (1–200, Standard: 100)offset(optional): Seitenversatz für die Paginierung (Standard: 0)
get_recent_messages – Die neuesten Nachrichten abrufen
limit(optional): Anzahl der Nachrichten (1–100, Standard: 20)offset(optional): Seitenversatz für die Paginierung (Standard: 0)
get_chats – Alle Unterhaltungen auflisten
limit(optional): Anzahl der Chats (1–200, Standard: 50)offset(optional): Seitenversatz für die Paginierung (Standard: 0)
get_handles – Alle Kontakte/Handles abrufen
limit(optional): Anzahl der Handles (1–200, Standard: 100)offset(optional): Seitenversatz für die Paginierung (Standard: 0)
get_messages_from_chat – Nachrichten aus einem bestimmten Chat abrufen
chatGuid(erforderlich): Die Chat-GUIDlimit(optional): Anzahl der Nachrichten (1–200, Standard: 50)offset(optional): Seitenversatz für die Paginierung (Standard: 0)
search_contacts – macOS-Kontakte nach Namen durchsuchen und Telefonnummern abrufen
firstName(erforderlich): Zu suchender Vorname (z. B. „Max“)lastName(optional): Zu suchender Nachname (z. B. „Mustermann“). Wenn nicht angegeben, wird in allen Namensfeldern gesuchtlimit(optional): Maximale Anzahl der Ergebnisse (1–200, Standard: 50)offset(optional): Seitenversatz für die Paginierung (Standard: 0)Gibt Kontaktinformationen mit Telefonnummern und E-Mail-Adressen zurück, die als Handle-Parameter verwendet werden können
Durchsucht direkt die macOS-Adressbuchdatenbank für bessere Leistung und Zuverlässigkeit
Beispiele für die Paginierung
Alle Werkzeuge unterstützen jetzt die Paginierung über die Parameter limit und offset und geben Metadaten zur Paginierung zurück:
// Get first 20 recent messages
get_recent_messages({ limit: 20, offset: 0 });
// Get next 20 recent messages (page 2)
get_recent_messages({ limit: 20, offset: 20 });
// Get first 10 chats
get_chats({ limit: 10, offset: 0 });
// Get messages 51-100 from a specific chat
get_messages_from_chat({
chatGuid: "iMessage;-;+15551234",
limit: 50,
offset: 50,
});
// Search with pagination
search_messages({
query: "meeting",
limit: 100,
offset: 200,
});
// Search contacts with pagination
search_contacts({
firstName: "John",
lastName: "Smith",
limit: 50,
offset: 0,
});Antwortformat mit Paginierungs-Metadaten
Alle paginierten Werkzeuge geben Antworten jetzt in folgendem Format zurück:
{
"data": [
// Array of results (messages, chats, handles, etc.)
],
"pagination": {
"total": 1250, // Total number of results available
"limit": 100, // Current page size
"offset": 200, // Current offset
"hasMore": true, // Whether there are more results to fetch
"page": 3, // Current page number (1-indexed)
"totalPages": 13 // Total number of pages
}
}Diese Metadaten helfen Ihnen dabei:
Die Gesamtzahl der Ergebnisse zu ermitteln, ohne alle abzurufen
Festzustellen, ob es weitere Seiten zum Abrufen gibt (
hasMore)Zu berechnen, auf welcher Seite Sie sich befinden und wie viele Seiten es gibt
Passende Paginierungs-UI-Komponenten zu erstellen
Sicherheitshinweise
Dieser Server läuft mit schreibgeschütztem Zugriff auf die iMessage-Datenbank
Es können keine Nachrichten gesendet oder geändert werden
Der Server greift nur auf lokale Daten zu
Entwicklung
Dies ist ein Deno-Workspace-Monorepo. Alle Befehle, die vom Stammverzeichnis aus ausgeführt werden, wirken sich auf alle Pakete aus.
# Clone the repository
git clone https://github.com/wyattjoh/imessage-mcp.git
cd imessage-mcp
# Cache dependencies
deno cache packages/*/mod.ts
# Format all code
deno task fmt
# Lint all packages
deno task lint
# Type check all packages
deno task check
# Run tests
deno task test
# Run MCP server locally
cd packages/imessage-mcp
deno run --allow-read --allow-env --allow-sys --allow-ffi mod.ts
# Publish packages (CI/CD)
deno publishAn einzelnen Paketen arbeiten
# Work on @wyattjoh/imessage
cd packages/imessage
deno test --allow-read --allow-env --allow-ffi --allow-sys=homedir
# Work on @wyattjoh/imessage-mcp
cd packages/imessage-mcp
deno run --allow-read --allow-env --allow-sys --allow-ffi mod.tsLizenz
MIT
This server cannot be installed
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 gradedqualityDmaintenanceA macOS app that provides an MCP server to your Messages, Contacts, and more1,520MIT
- AlicenseNot gradedqualityDmaintenanceRead-only MCP server for your iMessage DB. No hosted service.MIT
- 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
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
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/wyattjoh/imessage-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server