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.
Sign in to save favorites to My Account.
Sign in with GoogleYour 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
- Download letsmcp-imessage-0.1.0.mcpb.
- 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.
- 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.
- 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
- Open System Settings, then Privacy & Security, then Full Disk Access.
- Turn on Claude. If it isn’t in the list, click + and add it from Applications.
- 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
- Download letsmcp-imessage-0.1.0.mcpb.
- In Claude Desktop: Settings, Extensions, Advanced settings, Extension Developer, Install Extension. Pick the file. Choose whether to allow sending.
- Give Claude Full Disk Access in System Settings, then quit and reopen Claude.
- 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.
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.
