MCP ExplorerExplorer

Mac Messages

@carterlasalleon 13 days ago
106 MIT
FreeCommunity
Messaging
#python#mac#messages
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

What is Mac Messages

Mac Messages MCP is a Python bridge designed to interact with the macOS Messages app using Multiple Context Protocol (MCP). It allows users to read messages, filter them by contact, and send new messages through iMessage, thereby enhancing the usability of the macOS messaging system programmatically.

Use cases

This tool can be used by developers who want to automate message retrieval and sending in macOS. Use cases include messaging bots, personal automation scripts, and integration in applications where communication through iMessage is necessary. It can also be beneficial for users seeking to streamline their messaging experience across platforms.

How to use

To use Mac Messages MCP, you first need to install it via the uv package manager, ensuring that you have granted Full Disk Access permissions to your terminal. After installation, you can utilize it as a Python module by importing functions to retrieve or send messages, or you can run the MCP server directly from the command line for more interactive usage.

Key features

Key features include the ability to read recent messages from the macOS Messages app, filter messages by contact, and send new messages through iMessage. It provides easy access to messages via an API and can be integrated with applications like Claude Desktop and Cursor for extended functionality.

Where to use

Mac Messages MCP can be used primarily on macOS systems, particularly in applications where automation or enhanced messaging capabilities are desired. It is suitable for personal use, development projects, messaging bots, or any scenario where there is a need to programmatically access or send messages through iMessage.

Content

Mac Messages MCP

A Python bridge for interacting with the macOS Messages app using MCP (Multiple Context Protocol).

PyPI Downloads

a-diagram-of-a-mac-computer-with-the-tex_FvvnmbaBTFeKy6F2GMlLqA_IfCBMgJARcia1WTH7FaqwA

Verified on MseeP

Quick Install

For Cursor Users

Install MCP Server

Click the button above to automatically add Mac Messages MCP to Cursor

For Claude Desktop Users

See the Integration section below for setup instructions.

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:

brew install uv

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:

  1. Open System Preferences/Settings > Security & Privacy/Privacy > Full Disk Access
  2. Click the lock icon to make changes
  3. Add your terminal app (Terminal, iTerm2, etc.) or Claude Desktop/Cursor to the list
  4. Restart your terminal or application after granting permission

Integration

Claude Desktop Integration

  1. Go to Claude > Settings > Developer > Edit Config > claude_desktop_config.json
  2. Add the following configuration:
{
  "mcpServers": {
    "messages": {
      "command": "uvx",
      "args": [
        "mac-messages-mcp"
      ]
    }
  }
}

Cursor Integration

Option 1: One-Click Install (Recommended)

Install MCP Server

Option 2: Manual Setup

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

Option 1: Install from PyPI

uv pip install mac-messages-mcp

Option 2: Install from source

# Clone the repository
git clone https://github.com/carterlasalle/mac_messages_mcp.git
cd mac_messages_mcp

# Install dependencies
uv install -e .

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
# 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

As a Module

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

As a Command-Line Tool

# Run the MCP server directly
mac-messages-mcp

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:

python scripts/bump_version.py [patch|minor|major]

Security Notes

This application accesses the Messages database directly, which contains personal communications. Please use it responsibly and ensure you have appropriate permissions.

MseeP.ai Security Assessment Badge

License

MIT

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Star History

Star History Chart

Tools

tool_get_recent_messages
Get recent messages from the Messages app. Args: hours: Number of hours to look back (default: 24) contact: Filter by contact name, phone number, or email (optional) Use "contact:N" to select a specific contact from previous matches
tool_send_message
Send a message using the Messages app. Args: recipient: Phone number, email, contact name, or "contact:N" to select from matches For example, "contact:1" selects the first contact from a previous search message: Message text to send group_chat: Whether to send to a group chat (uses chat ID instead of buddy)
tool_find_contact
Find a contact by name using fuzzy matching. Args: name: The name to search for
tool_check_db_access
Diagnose database access issues.
tool_check_contacts
List available contacts in the address book.
tool_check_addressbook
Diagnose AddressBook access issues.
tool_get_chats
List available group chats from the Messages app.

Comments