The Mac Messages MCP server allows interaction with the macOS Messages app, enabling users to:
Retrieve Recent Messages: Fetch messages with optional filtering by contact or time range
Send Messages: Send to individuals (via phone number, email, or contact name) or group chats (using chat ID)
Find Contacts: Search for contacts by name using fuzzy matching
List Contacts: Retrieve available contacts from the address book
List Group Chats: Get available group chats in the Messages app
Diagnose Access Issues: Check for and troubleshoot database and AddressBook access problems
API Integration: Integrate with tools like Claude Desktop or Cursor for messaging workflows
Mac Messages MCP
A Python bridge for interacting with the macOS Messages app using MCP (Multiple Context Protocol).
Quick Install
For Cursor Users
Click the button above to automatically add Mac Messages MCP to Cursor
For Claude Desktop Users
See the Integration section below for setup instructions.
Related MCP server: iMCP
Features
Universal Message Sending: Automatically sends via iMessage or SMS/RCS based on recipient availability
Smart Fallback: Seamless fallback to SMS when iMessage is unavailable (perfect for Android users)
Message Reading: Read recent messages from the macOS Messages app
Contact Filtering: Filter messages by specific contacts or phone numbers
Fuzzy Search: Search through message content with intelligent matching
iMessage Detection: Check if recipients have iMessage before sending
Cross-Platform: Works with both iPhone/Mac users (iMessage) and Android users (SMS/RCS)
Prerequisites
macOS (tested on macOS 11+)
Python 3.10+
uv package manager
Installing uv
If you're on Mac, install uv using Homebrew:
Otherwise, follow the installation instructions on the uv website.
⚠️ Do not proceed before installing uv
Installation
Full Disk Access Permission
⚠️ This application requires Full Disk Access permission for your terminal or application to access the Messages database.
To grant Full Disk Access:
Open System Preferences/Settings > Security & Privacy/Privacy > Full Disk Access
Click the lock icon to make changes
Add your terminal app (Terminal, iTerm2, etc.) or Claude Desktop/Cursor to the list
Restart your terminal or application after granting permission
Integration
Claude Desktop Integration
Go to Claude > Settings > Developer > Edit Config > claude_desktop_config.json
Add the following configuration:
Cursor Integration
Option 1: One-Click Install (Recommended)
Option 2: Manual Setup
Go to Cursor Settings > MCP and paste this as a command:
⚠️ Only run one instance of the MCP server (either on Cursor or Claude Desktop), not both
Docker Container Integration
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.
Setup Instructions
Install mcp-proxy on your macOS host:
Start the proxy server:
Connect from Docker: Your Docker container can now connect to:
URL:
http://host.docker.internal:8000/mcp(on macOS/Windows)URL:
http://<host-ip>:8000/mcp(on Linux)
Docker Compose example:
Running multiple MCP servers:
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.
Option 1: Install from PyPI
Option 2: Install from source
Usage
Smart Message Delivery
Mac Messages MCP automatically handles message delivery across different platforms:
iMessage Users (iPhone, iPad, Mac): Messages sent via iMessage
Android Users: Messages automatically fall back to SMS/RCS
Mixed Groups: Optimal delivery method chosen per recipient
As a Module
As a Command-Line Tool
Development
Versioning
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:
Security Notes
This application accesses the Messages database directly, which contains personal communications. Please use it responsibly and ensure you have appropriate permissions.
License
MIT
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.