Skip to main content

RealtimeX Mac Messages MCP

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

Note: This is a fork of mac-messages-mcp by Carter Lasalle. All credit for the original implementation goes to the original author. This fork is published under the name realtimex-mac-messages-mcp for personal use.

PyPI Downloads

Trust Score

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": [
                "realtimex-mac-messages-mcp"
            ]
        }
    }
}

Or use the original package:

{
    "mcpServers": {
        "messages": {
            "command": "uvx",
            "args": [
                "mac-messages-mcp"
            ]
        }
    }
}

Cursor Integration

Manual Setup

Go to Cursor Settings > MCP and paste this as a command:

uvx realtimex-mac-messages-mcp

Or use the original package:

uvx mac-messages-mcp

⚠️ 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

  1. Install mcp-proxy on your macOS host:
npm install -g mcp-proxy
  1. Start the proxy server:
# 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
  1. 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)
  1. Docker Compose example:
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
  1. Running multiple MCP servers:
# 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.

Option 1: Install from PyPI

# Install the realtimex fork
uv pip install realtimex-mac-messages-mcp

# Or install the original package
uv pip install mac-messages-mcp

Option 2: Install from source

# Clone this repository
git clone <your-repo-url>
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 with realtimex fork
realtimex-mac-messages-mcp

# Or use the original command
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

Metadata

Release files for realtimex-mac-messages-mcp 0.7.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for realtimex-mac-messages-mcp 0.7.3
File Size Uploaded
realtimex_mac_messages_mcp-0.7.3.tar.gz 26.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for realtimex-mac-messages-mcp 0.7.3
File Interpreter ABI Platform
realtimex_mac_messages_mcp-0.7.3-py3-none-any.whl Python 3 none any Details

Total release size: 47.7 kB

Release files / realtimex_mac_messages_mcp-0.7.3.tar.gz

Download URL realtimex_mac_messages_mcp-0.7.3.tar.gz
Size 26.1 kB
Tags Source
SHA-256 checksum
How to use checksums
047d033b94f671cc058b47911f6de3957d2314eb1e5eef0ebf82b44b0f91560f
BLAKE2b-256 checksum
How to use checksums
17560bccf854d742dfd9e1444bd4684496d56ff859279df79d47fb627b054c66
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.16

Release files / realtimex_mac_messages_mcp-0.7.3-py3-none-any.whl

Download URL realtimex_mac_messages_mcp-0.7.3-py3-none-any.whl
Size 21.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
89b604ec59f792cb019f5f9a5da66a0550c135c50901b533fe202a6419b2fa46
BLAKE2b-256 checksum
How to use checksums
97d369c1ac047c602ceb230454b896b6a0f92de1020dd8ac24c415665e3265e2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via uv/0.7.16

Release history Release notifications | RSS feed

This release

0.7.3 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page