Messages
FreeNot checkedMCP server for reading and responding to local macOS Messages from clients like Claude Desktop and Codex.
About
MCP server for reading and responding to local macOS Messages from clients like Claude Desktop and Codex.
README
MCP server for reading and responding to local macOS Messages from clients like Claude Desktop and Codex.
The server reads ~/Library/Messages/chat.db, resolves names through local Contacts/AddressBook source databases, and sends through the macOS Messages app using AppleScript.
Requirements
- macOS with Messages configured
- Python 3.10+
- Full Disk Access for the app running the MCP server
- Automation permission for controlling Messages when sending
Install
From this repo:
python3 -m venv .venv
. .venv/bin/activate
pip install -e .
Run manually:
messages-mcp
Claude Desktop
Add this to Claude Desktop's MCP config, adjusting the path:
{
"mcpServers": {
"messages": {
"command": "/Users/YOU/Documents/messages-mcp/.venv/bin/messages-mcp"
}
}
}
Restart Claude Desktop after editing the config.
Codex
Use the command path from the virtualenv:
{
"mcpServers": {
"messages": {
"command": "/Users/YOU/Documents/messages-mcp/.venv/bin/messages-mcp"
}
}
}
Tools
list_chats(query="", limit=25)List recent chats, optionally filtered by contact name, phone/email, or group name.get_conversation_context(chat, limit=30)Return recent messages and attachment metadata for a chat.chatcan be a contact name, phone/email, or group name.get_unread_messages(chat="", limit=20)Return unread incoming messages for one chat or all recent chats.send_message(chat, text, dry_run=true)Send a message through Messages.dry_rundefaults totrue; passfalseto actually send.mark_read(chat)Best-effort mark a chat as read through Messages.
Safety
Sending is intentionally explicit. The send_message tool defaults to dry_run=true, so clients can inspect the target and text before sending.
Do not run this server for an MCP client you do not trust. Any connected client with tool access can read local Messages context and, if it calls send_message(..., dry_run=false), send messages through your account.
Troubleshooting
If chats do not appear:
- Give the MCP host app Full Disk Access.
- Use a contact name for one-on-one chats.
- Use the exact group chat title for group chats.
- Make sure Messages is signed in and synced locally.
If sending fails:
- Open Messages once manually.
- Approve the Automation permission prompt.
- Try
send_message(..., dry_run=true)first to verify the resolved target.
Install Messages in Claude Desktop, Claude Code & Cursor
unyly install messages-mcpInstalls into Claude Desktop, Claude Code, Cursor & VS Code — handles npx, uvx and build-from-source repos for you.
First time? Get the CLI: curl -fsSL https://unyly.org/install | sh
Or configure manually
Run in your terminal:
claude mcp add messages-mcp -- uvx --from git+https://github.com/raghavrat/messages-mcp messages-mcpFAQ
Is Messages MCP free?
Yes, Messages MCP is free — one-click install via Unyly at no cost.
Does Messages need an API key?
No, Messages runs without API keys or environment variables.
Is Messages hosted or self-hosted?
Self-hosted: the server runs locally on your machine via the install command above.
How do I install Messages in Claude Desktop, Claude Code or Cursor?
Open Messages on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.
Related MCPs
Fetch
Web content fetching and conversion for efficient LLM usage.
AWS KB Retrieval
Retrieval from AWS Knowledge Base using Bedrock Agent Runtime.
by modelcontextprotocolSpring AI MCP Server
Provides auto-configuration for setting up an MCP server in Spring Boot applications.
llm-analysis-assistant
A very streamlined mcp client that supports calling and monitoring stdio/sse/streamableHttp, and can also view request responses through the /logs page. It also
by xuzexin-hzCompare Messages with
Not sure what to pick?
Find your stack in 60 seconds
Author?
Embed badge for your README
Browse similar
All ai MCPs
