Mac Messages MCP
An MCP server that securely interfaces with your iMessage database via the Model Context Protocol (MCP), allowing LLMs to query and analyze iMessage conversations. It includes robust phone number validation, attachment processing, contact management, group chat handling, and full support for sending and receiving messages.
Overview
Mac Messages MCP is a Python bridge that allows secure interaction with the macOS Messages app via the Model Context Protocol (MCP). It enables querying and analyzing iMessage conversations, making it a powerful tool for developers and researchers.
To use Mac Messages MCP, install the required dependencies, grant Full Disk Access to your terminal, and run the MCP server. You can interact with the Messages app either as a module in your Python code or as a command-line tool.
- Read recent messages from the macOS Messages app - Filter messages by contact - Send new messages through iMessage - Access messages via an API - Robust phone number validation and attachment processing
- Analyzing iMessage conversations for research purposes.
- Automating message sending for notifications or reminders.
- Building applications that require integration with iMessage.
Add to your AI client
Use these steps to connect Mac Messages MCP in Cursor, Claude, VS Code, and other MCP-compatible apps. The same JSON appears in the Use with menu above for one-click copy.
Cursor
Add this to your .cursor/mcp.json file in your project root, then restart Cursor.
.cursor/mcp.json
{
"mcpServers": {
"mac-messages-mcp-carterlasalle": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-mac-messages-mcp-carterlasalle"
]
}
}
}Claude Desktop
Add this server entry to the mcpServers object in your Claude Desktop config, then restart the app.
~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows)
{
"mcpServers": {
"mac-messages-mcp-carterlasalle": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-mac-messages-mcp-carterlasalle"
]
}
}
}Claude Code
Add this to your project's .mcp.json file. Claude Code will detect it automatically.
.mcp.json (project root)
{
"mcpServers": {
"mac-messages-mcp-carterlasalle": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-mac-messages-mcp-carterlasalle"
]
}
}
}VS Code (Copilot)
Add this to your .vscode/mcp.json file. Requires the GitHub Copilot extension with MCP support enabled.
.vscode/mcp.json
{
"servers": {
"mac-messages-mcp-carterlasalle": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-mac-messages-mcp-carterlasalle"
]
}
}
}Windsurf
Add this to your Windsurf MCP config file, then restart Windsurf.
~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"mac-messages-mcp-carterlasalle": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-mac-messages-mcp-carterlasalle"
]
}
}
}Cline
Open Cline settings, navigate to MCP Servers, and add this server configuration.
Cline MCP Settings (via UI)
{
"mcpServers": {
"mac-messages-mcp-carterlasalle": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-mac-messages-mcp-carterlasalle"
]
}
}
}FAQ
**What are the prerequisites for using Mac Messages MCP?**
You need macOS (tested on macOS 11+), Python 3.10+, and the uv package manager.
**Is Full Disk Access required?**
Yes, Full Disk Access is necessary for the application to access the Messages database.
**Can I run multiple instances of the MCP server?**
No, only one instance should be run at a time, either on Cursor or Claude Desktop.