
Mac Messages
STDIOPython bridge for interacting with macOS Messages app via MCP
Python bridge for interacting with macOS Messages app via MCP
A Python bridge for interacting with the macOS Messages app using MCP (Multiple Context Protocol).
Click the button above to automatically add Mac Messages MCP to Cursor
See the Integration section below for setup instructions.
If you're on Mac, install uv using Homebrew:
brew install uv
Otherwise, follow the installation instructions on the uv website.
⚠️ Do not proceed before installing uv
⚠️ This application requires Full Disk Access permission for your terminal or application to access the Messages database.
To grant Full Disk Access:
{ "mcpServers": { "messages": { "command": "uvx", "args": [ "mac-messages-mcp" ] } } }
Go to Cursor Settings > MCP and paste this as a command:
uvx mac-messages-mcp
⚠️ Only run one instance of the MCP server (either on Cursor or Claude Desktop), not both
If you need to connect to mac-messages-mcp
from a Docker container, you'll need to use the mcp-proxy
package to bridge the stdio-based server to HTTP.
npm install -g mcp-proxy
# Using the published version npx mcp-proxy uvx mac-messages-mcp --port 8000 --host 0.0.0.0 # Or using local development (if you encounter issues) npx mcp-proxy uv run python -m mac_messages_mcp.server --port 8000 --host 0.0.0.0
http://host.docker.internal:8000/mcp
(on macOS/Windows)http://<host-ip>:8000/mcp
(on Linux)version: '3.8' services: your-app: image: your-image environment: MCP_MESSAGES_URL: "http://host.docker.internal:8000/mcp" extra_hosts: - "host.docker.internal:host-gateway" # For Linux hosts
# Terminal 1 - Messages MCP on port 8001 npx mcp-proxy uvx mac-messages-mcp --port 8001 --host 0.0.0.0 # Terminal 2 - Another MCP server on port 8002 npx mcp-proxy uvx another-mcp-server --port 8002 --host 0.0.0.0
Note: Binding to 0.0.0.0
exposes the service to all network interfaces. In production, consider using more restrictive host bindings and adding authentication.
uv pip install mac-messages-mcp
# Clone the repository git clone https://github.com/carterlasalle/mac_messages_mcp.git cd mac_messages_mcp # Install dependencies uv install -e .
Mac Messages MCP automatically handles message delivery across different platforms:
# Send to iPhone user - uses iMessage send_message("+1234567890", "Hey! This goes via iMessage") # Send to Android user - automatically uses SMS send_message("+1987654321", "Hey! This goes via SMS") # Check delivery method before sending check_imessage_availability("+1234567890") # Returns availability status
from mac_messages_mcp import get_recent_messages, send_message # Get recent messages messages = get_recent_messages(hours=48) print(messages) # Send a message (automatically chooses iMessage or SMS) result = send_message(recipient="+1234567890", message="Hello from Mac Messages MCP!") print(result) # Shows whether sent via iMessage or SMS
# Run the MCP server directly mac-messages-mcp
This project uses semantic versioning. See VERSIONING.md for details on how the versioning system works and how to release new versions.
To bump the version:
python scripts/bump_version.py [patch|minor|major]
This application accesses the Messages database directly, which contains personal communications. Please use it responsibly and ensure you have appropriate permissions.
MIT
Contributions are welcome! Please feel free to submit a Pull Request.