iMessage MCP Server
Enables automated interaction with Apple's messaging services to send and receive iMessages.
Provides capabilities to list conversations, search message history, and send messages to individuals or groups via iMessage.
Integrates with the macOS Messages application and local chat database to expose messaging tools.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@iMessage MCP Server text Sarah and ask if she's coming to the party tonight"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
imessage-mcp
MCP server that exposes iMessage read/send capabilities on macOS. Runs on a Mac with Messages.app and can be accessed remotely via SSH over Tailscale.
Tools
Tool | Description |
| List recent conversations with last message preview |
| Get messages from a specific conversation |
| Full-text search across all messages |
| Look up contact stats by phone/email |
| Send an iMessage to a phone number or email |
| Send a message to a named group chat |
Related MCP server: iMessage RAG MCP
Setup (local)
uv run imessage-mcpRequires macOS with Messages.app and Full Disk Access for the terminal process.
Claude Code config (local)
{
"mcpServers": {
"imessage": {
"command": "uv",
"args": ["--directory", "/path/to/imessage-mcp", "run", "imessage-mcp"]
}
}
}Claude Code config (remote via SSH)
From any device on the Tailscale network:
{
"mcpServers": {
"imessage": {
"command": "ssh",
"args": [
"mba-server",
"/Users/viraat/.local/bin/uv --directory /Users/viraat/Documents/imessage-mcp run imessage-mcp"
]
}
}
}This pipes MCP stdio through SSH — the server runs on the Mac, reads chat.db, and sends via AppleScript.
Available Tools
6 toolsget_contact_infoA
Look up a contact/handle by phone number or email and return conversation stats.
Args: identifier: Phone number (e.g. +15551234567) or email address
Inputs: identifier (required). Returns: result
get_messagesA
Get messages from a specific conversation.
Args: chat_identifier: Phone number (e.g. +15551234567), email, or group chat identifier limit: Max messages to return (default 50, most recent first)
Inputs: chat_identifier (required), limit. Returns: result
list_conversationsB
List recent iMessage/SMS conversations with last message preview.
Args: limit: Max number of conversations to return (default 20)
Inputs: limit. Returns: result
search_messagesB
Search across all iMessage conversations for messages containing a query string.
Args: query: Text to search for (case-insensitive) limit: Max results to return (default 30)
Inputs: query (required), limit. Returns: result
send_group_messageB
Send a message to a named group chat.
Args: group_name: The display name of the group chat text: Message text to send
Inputs: group_name (required), text (required). Returns: result
send_messageB
Send an iMessage to a phone number or email address.
Args: recipient: Phone number (e.g. +15551234567) or email address text: Message text to send
Inputs: recipient (required), text (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 6 tools
Each tool has a clearly distinct purpose: get_contact_info retrieves contact details, get_messages fetches conversation history, list_conversations shows recent chats, search_messages performs text searches, send_message sends to individuals, and send_group_message sends to groups. No overlap exists between these functions.
All tools follow a consistent verb_noun naming pattern (e.g., get_contact_info, send_message, list_conversations). The naming is uniform throughout, using snake_case and clear action descriptors without any deviations.
With 6 tools, this server is well-scoped for iMessage functionality, covering key operations like reading, sending, searching, and listing without being overly complex or too sparse. Each tool serves a specific and necessary role.
The toolset provides strong coverage for core iMessage tasks, including sending, receiving, searching, and listing. A minor gap exists in update or delete operations (e.g., editing or deleting messages), but agents can still handle most workflows effectively.
Maintenance
Related MCP Connectors
Send and read iMessages from your own Mac and Apple ID — drafts, history and contacts.
MCP connector for iMessage & Contacts via a local Mac agent + Vercel relay
Send and receive iMessage, SMS, RCS, and WhatsApp, and manage contacts, chats, and numbers.
Mac & Windows: let ChatGPT, Claude & Cursor use your email, calendar, iMessage, Teams, files.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables AI assistants to read iMessage history and send messages on macOS. Supports conversation listing, message search with keyword and semantic modes, contact lookup, and sending messages to existing conversations.1311MIT
- FlicenseNot gradedqualityBmaintenanceEnables AI assistants to search and retrieve from your local macOS iMessage history using hybrid retrieval with context expansion, all processed locally without sending data off-device.-
- AlicenseAqualityBmaintenanceEnables AI agents on macOS to securely read and search the local Messages database, catch up on missed messages via a persistent inbox, and send texts or files to allowlisted chats, with optional voice note transcription and text-to-speech.1027 npmMIT
- AlicenseAqualityCmaintenanceEnables an agent to read the user's local Messages.app database on macOS, listing chats and threads and searching iMessage/SMS history entirely on localhost, with optional AppleScript sending gated behind an explicit flag. Access is read-only and scoped-shut by default, and replies can be optionally sent when send mode is enabled.4MIT