Labsco
MCP SERVER

iMessage Reader

by anipotts

Makes your whole iMessage history answerable — search, statistics, streaks, read receipts, a year in review — read-only and entirely on your Mac.

Team Chat PlatformsVerified
Summary
It reads years of messages and nothing leaves the Mac to make that possible.

Every tool is annotated read-only against two local files, which is what makes auto-approving the calls reasonable. What sets it apart is how far past search it reaches — streaks, who texts first, the longest silence with someone, a whole year summarised — so it answers questions about relationships rather than just locating a message. Set IMESSAGE_SAFE_MODE=1 when you want the analytics without the message bodies.

What it is

A read-only server over the local iMessage database. It touches two files on disk, chat.db and the macOS AddressBook, makes no network requests, and writes nothing back.

What you get
  • Full-text search across every message, with filters for contact, date range, direction, group chats and attachments, and cursor-paginated conversation threads for scrolling back through history
  • Contacts with message counts and tiers, deep per-contact analytics, and fuzzy resolution of a name, number or email through the AddressBook
  • Group chats listed with member counts and volumes, and one chat broken down member by member
  • Statistics grouped by day, week, month, year, hour or day-of-week, plus an activity heatmap of weekday against hour of day
  • The parts of iMessage most tools skip: tapbacks by type and top reactor, read-receipt and delivery latency per contact, reply threads reconstructed from their originators, edited and unsent messages, and expressive send effects
  • Relationship questions asked directly: who starts conversations after a gap, consecutive-day streaks, double-texting patterns, the longest silences with a contact, dormant contacts worth reconnecting with, and the first and last message ever exchanged with someone
  • on_this_day for what you were talking about a year ago, and yearly_wrapped for an entire year summarised — top contacts, busiest day, monthly trends, media, late-night texting
  • Attachment metadata by contact, MIME type and date — file information, not file contents
  • A help tool that prints the guide to every tool with usage examples
Requirements

macOS and Node.js 18+, plus Full Disk Access granted to whatever runs the server — your terminal, Claude Desktop or Cursor — because macOS protects chat.db behind that permission. IMESSAGE_DB points at a database somewhere other than ~/Library/Messages/chat.db, IMESSAGE_SAFE_MODE=1 redacts every message body and returns metadata only, and IMESSAGE_SYNC picks up new messages through FSEvents (watch) or polling. stdio is the default; --transport http --port 3000 serves Streamable HTTP, and IMESSAGE_API_TOKEN then requires a bearer token on those requests. Run it with npx -y imessage-mcp.

Setup effort

One command — npm install -g imessage-mcp