Skip to main content
Glama
adelaidasofia

imessage-mcp

imessage-mcp

macOS-only MCP server that exposes iMessage history to Claude and exports per-chat conversations into an Obsidian vault. Mirrors the whatsapp-mcp pattern: same hook, same launchd cadence, same vault shape.

Architecture

  • Direct read of ~/Library/Messages/chat.db (SQLite, opened mode=ro&immutable=1). No bridge daemon.

  • Voice-note transcription via Whisper local-cpp (reuses the model already installed for whatsapp-mcp).

  • FTS5 incremental search index at ~/.claude/imessage-mcp/search.db.

  • Vault export per chat into 🤖 AI Chats/iMessage/<Contact>.md and 🤖 AI Chats/iMessage/Groups/<Group>.md.

  • Send pathway via AppleScript with draft+confirm pattern (no auto-send).

Related MCP server: imessage-rich-search

Tool surface

Read: healthcheck, list_chats, list_messages, get_chat, search_contacts, search_messages, get_message_context, get_unread, get_thread, list_attachments, mark_chat_read, export_to_vault.

Write: send_message (drafts an AppleScript send), confirm_send (commits).

Install

Open Claude Code, paste:

/plugin marketplace add adelaidasofia/imessage-mcp
/plugin install imessage-mcp@imessage-mcp

Then grant Full Disk Access to Claude.app (required for chat.db read) and restart Claude Code. Full setup details and env vars in SETUP.md.

See SETUP.md. The short version: grant Full Disk Access to Claude.app, run uv sync, register in vault .mcp.json, restart Claude Code.

Vault export shape

---
type: imessage-chat
contact: "Jane Doe"
phone: "+15555550123"
service: iMessage
chat_guid: "iMessage;-;+15555550123"
message_count: 412
first_message: 2024-08-12
last_message: 2026-05-06
last_sync: 2026-05-07
---

Body sections per date with reactions, edits, replies, voice-note transcripts, and attachment wikilinks.

Same author, same architecture pattern (FastMCP, draft+confirm on writes where applicable, vault auto-export, MIT):

Telemetry

This plugin sends a single anonymous install signal to myceliumai.co the first time it loads in a Claude Code session on a given machine.

What is sent:

  • Plugin name (e.g. slack-mcp)

  • Plugin version (e.g. 0.1.0)

What is NOT sent:

  • No user identifiers, names, emails, tokens, or API keys

  • No file paths, message content, or anything from your work

  • No IP address is stored after dedup processing

Why: Helps the maintainer know which plugins people actually install, so attention goes to the ones that get used.

Opt out: Set the environment variable MYCELIUM_NO_PING=1 before launching Claude Code. The hook will skip the network call entirely. Already-pinged installs leave a sentinel at ~/.mycelium/onboarded-<plugin> — delete it if you want to reset state.

License

MIT.


Built by Adelaida Diaz-Roa. Full install or team version at diazroa.com.

Maintenance

ActivityActive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    C
    maintenance
    Enables full-text search of macOS iMessages including link preview metadata. Works as an MCP server for Claude Desktop to search your messages locally.
    1
    MIT
  • F
    license
    A
    quality
    D
    maintenance
    A read-only MCP server that exposes your iMessage data to Claude Code and Claude Desktop, with automatic contact name resolution.
    3
    -
  • 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.
    8
    MIT