iMessage

Hosted MCP endpoint

Paste this into your AI client as a custom connector. Using it more than once? Here’s how.

Local connector: download and install

Download the extension (.mcpb)

Runs on your own computer in Claude Desktop, so there is no address to paste. Steps are on the Install tab.

Permissions

Full Disk Access for the Claude app, to read your Messages database
Permission for Claude to control Messages, asked on the first send (only if you turn sending on)
Nothing leaves your Mac except what your AI app shows the model

Disconnect

Your Mac already keeps every iMessage and text you have sent or received. This connector lets your AI read and search them, look up who someone is, open a photo someone sent, and, only if you switch it on, send a message for you.

Local and Mac only. Apple publishes no iMessage API, so there is nothing anyone could host. The connector runs on your Mac and reads the Messages database there. Your messages never pass through Let’s MCP.

What It Can Do

Eight tools: seven that read, and one that sends if you allow it. Your AI decides which to call. The full list is on the Tools tab.

  • List conversations, newest first, with names, last message and unread counts. Filter by name, person or unread.
  • Read a conversation, with who said what and when, reactions, replies, edited and unsent messages, and attachments.
  • Search everything. Every message on the Mac, not just the recent ones, including text that newer macOS versions store in a binary format.
  • Find a person. Turn a name into their numbers, email addresses and existing conversations, so “text Mom” goes to the right thread.
  • Open attachments. Photos come back as images your AI can see; small text files as text.
  • Send, if you allow it. Text, a file or both, to an existing conversation or a new number or email. After sending, it checks the Messages database to confirm the message really went.
  • International numbers work, using your Mac’s region or a country you set.

Things Worth Knowing Before You Start

  • It needs a Mac with Messages signed in to your Apple ID, and Claude Desktop. It does not work on Windows, in a browser or on a phone.
  • Sending is off until you switch it on. While it is off, your AI is not even offered the send tool. A text sent from your number to the wrong person can’t be taken back, so it’s your choice.
  • macOS asks for two permissions: Full Disk Access for Claude, so the connector can read your messages, and, on the first send, permission for Claude to control Messages.
  • It makes no network calls. Your messages reach the AI model only as answers inside your own AI app, under that app’s privacy terms.
  • What it cannot do, because Messages doesn’t allow it: send reactions, edit or unsend, mark as read, delete, or start a new group conversation.
  • This is version 0.1.0, tested on a real Mac. Tell us what you find on the contact form.

Download the extension (letsmcp-imessage-0.1.0.mcpb, 216 KB), then follow the Install tab.

Claude Desktop

  1. Download letsmcp-imessage-0.1.0.mcpb.
  2. Open Claude Desktop and go to Settings, then Extensions, then Advanced settings, then Extension Developer, and choose Install Extension. Pick the file you downloaded. Double-clicking the file may also open the installer.
  3. In the install window, tick Allow sending messages only if you want your AI to be able to send. Leave Default country for phone numbers blank to use your Mac’s region.
  4. Start a new chat. The connector’s tools are available from then on; you never have to name them.

Other AI apps that run on your computer and support local MCP servers can run the same connector. The bundle is a standard .mcpb file, a zip containing one Node.js script, so a developer can unzip it and point their client at server/index.mjs.

Give Claude Full Disk Access

  1. Open System Settings, then Privacy & Security, then Full Disk Access.
  2. Turn on Claude. If it isn’t in the list, click + and add it from Applications.
  3. Quit Claude completely (Claude menu, Quit) and open it again.

Then ask: “Using iMessage, what are my five most recent conversations?” If it can’t read the database, ask it to check the iMessage status; it explains what is missing.

The first time it sends, macOS asks whether Claude may control Messages. Say OK.

Quick Start

  1. Download letsmcp-imessage-0.1.0.mcpb.
  2. In Claude Desktop: Settings, Extensions, Advanced settings, Extension Developer, Install Extension. Pick the file. Choose whether to allow sending.
  3. Give Claude Full Disk Access in System Settings, then quit and reopen Claude.
  4. Ask about your messages in a new chat.

How It Works

  • Reading. Opens the Messages database (~/Library/Messages/chat.db) strictly read-only. It never writes to it and never copies it.
  • Message text. Newer macOS versions store most text in a binary format. The connector decodes it, and marks anything it can’t decode as undecoded rather than dropping it.
  • Names. Read from your Mac’s Contacts files. If they can’t be read, everything still works with raw numbers.
  • Search. Covers every message. The first search builds a small index in memory; nothing is written to disk.
  • Sending. Runs a fixed AppleScript against Messages. Your text and file paths are passed to it as data, never pasted into the script, so a message can’t be read as a command. Afterwards it reads the database back to confirm the message appeared.
  • Attachments. Only files the Messages database itself points to can be opened, so it can’t be used to read other files on your Mac.
  • No network. The connector makes no network calls at all.

Settings

  • Allow sending messages. Off by default. Change it in Claude Desktop under Settings, Extensions, iMessage.
  • Default country for phone numbers. Blank means your Mac’s region. Used to read numbers typed without a country code.

Source And License

MIT licensed, written by John Pozadzides for Let’s MCP. The downloaded file contains the complete, readable source of the server.

No. It reads the Messages database on a Mac, so it needs a Mac signed in to your Apple ID, running Claude Desktop.

Apple publishes no iMessage API. The only place your messages exist outside Apple is on your own devices, so the connector has to run there.

Only if you switched sending on. With it off, the send tool isn’t offered at all. With it on, your AI app’s own tool-approval settings decide whether it checks with you before each send.

Give Claude Full Disk Access in System Settings, Privacy & Security, Full Disk Access, then quit Claude completely and reopen it. Ask your AI to check the iMessage status; it says exactly what is missing.

No. Nothing goes to Let’s MCP. The connector makes no network calls. Messages reach the AI model only as answers inside your own AI app, under that app’s privacy terms.

Messages only lets other apps send text and files. Everything else would mean clicking the app’s buttons by remote control or using Apple’s private frameworks, both of which break with macOS updates.

That means macOS stored the text in a form the decoder didn’t recognize. Please tell us on the contact form, with your macOS version, so we can fix it.

In Claude Desktop, open Settings, then Extensions, and remove iMessage. You can also turn off Full Disk Access for Claude in System Settings.

Status

imessage_status

Whether the Messages database and Contacts can be read, whether sending is on, the macOS and Node.js versions, and plain-English steps for any missing permission.

List Conversations

imessage_list_chats

Recent conversations, newest first: name or participants, group or not, last message and time, unread count. Paged, with filters for name, participant and unread only.

Conversation Details

imessage_get_chat

One conversation: participants with contact names, service (iMessage, SMS or RCS) and group name.

Read Messages

imessage_get_messages

Messages in one conversation, paged, with an optional date range. Each carries the sender, time, text, edited or unsent state, what it replies to, its reactions and its attachments.

Search Messages

imessage_search

Search every message on the Mac. All words must match; put a phrase in double quotes to match it exactly. Filters: conversation, sender, date range, has attachment, sent by me. Paged.

Find A Person

imessage_find_contact

Turns a name, number or email address into the matching contact, their numbers and addresses, and their existing conversations.

Open An Attachment

imessage_get_attachment

One attachment by its id from a message. Images come back as images (HEIC converted to JPEG, large images resized); text files up to 200 KB as text; anything else is described.

Send A Message

imessage_send

Only offered when Allow sending messages is on. Sends text, a file or both to one existing conversation or one phone number or email address, then reads the database back and reports whether the message appeared and whether Messages recorded an error.