/ Directory / Playground / mac_messages_mcp
● Community carterlasalle ⚡ Instant

mac_messages_mcp

by carterlasalle · carterlasalle/mac_messages_mcp

Read, search, and send iMessages and SMS from Claude — smart delivery auto-selects iMessage or SMS/RCS for each recipient.

mac_messages_mcp is a Python MCP server that bridges macOS Messages app with AI assistants. It can read messages with contact filtering and fuzzy search, send messages with automatic iMessage/SMS detection, check iMessage availability for recipients, process attachments, and handle group chats. Requires Full Disk Access on macOS for database access.

Why use it

Key features

Live Demo

What it looks like in practice

mac-messages-mcp-2.replay ▶ ready
0/0

Install

Pick your client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "mac-messages-mcp-2": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/carterlasalle/mac_messages_mcp"
      ]
    }
  }
}

Open Claude Desktop → Settings → Developer → Edit Config. Restart after saving.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "mac-messages-mcp-2": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/carterlasalle/mac_messages_mcp"
      ]
    }
  }
}

Cursor uses the same mcpServers schema as Claude Desktop. Project config wins over global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "mac-messages-mcp-2": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/carterlasalle/mac_messages_mcp"
      ]
    }
  }
}

Click the MCP Servers icon in the Cline sidebar, then "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "mac-messages-mcp-2": {
      "command": "TODO",
      "args": [
        "See README: https://github.com/carterlasalle/mac_messages_mcp"
      ]
    }
  }
}

Same shape as Claude Desktop. Restart Windsurf to pick up changes.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "mac-messages-mcp-2",
      "command": "TODO",
      "args": [
        "See README: https://github.com/carterlasalle/mac_messages_mcp"
      ]
    }
  ]
}

Continue uses an array of server objects rather than a map.

~/.config/zed/settings.json
{
  "context_servers": {
    "mac-messages-mcp-2": {
      "command": {
        "path": "TODO",
        "args": [
          "See README: https://github.com/carterlasalle/mac_messages_mcp"
        ]
      }
    }
  }
}

Add to context_servers. Zed hot-reloads on save.

claude mcp add mac-messages-mcp-2 -- TODO 'See README: https://github.com/carterlasalle/mac_messages_mcp'

One-liner. Verify with claude mcp list. Remove with claude mcp remove.

Use Cases

Real-world ways to use mac_messages_mcp

How to search your iMessage history with AI assistance

👤 Mac users who want to find specific conversations or information ⏱ ~5 min beginner

When to use: You need to find a message from weeks ago but can't remember who sent it or when.

Prerequisites
  • Full Disk Access granted — System Settings → Privacy & Security → Full Disk Access → add Terminal or your MCP host
  • mac-messages-mcp installed — uvx mac-messages-mcp or uv pip install mac-messages-mcp
Flow
  1. Search messages
    Search my messages for conversations about 'dinner reservation' in the last 2 weeks. Show who sent them and the full context.✓ Copied
    → Matching messages with sender, timestamps, and surrounding context
  2. Get recent from a contact
    Show me my last 20 messages with John Smith.✓ Copied
    → Conversation thread with timestamps

Outcome: Found the specific message or conversation you were looking for.

Pitfalls
  • Full Disk Access not granted — The MCP server can't read the Messages database without this permission. Grant it in System Settings.

Send messages to contacts using Claude

👤 Mac users who want to send messages hands-free ⏱ ~2 min beginner

When to use: You want to compose and send messages through Claude.

Prerequisites
  • mac-messages-mcp with Full Disk Access — Set up as above
Flow
  1. Check iMessage availability
    Can I reach +1-555-0123 via iMessage?✓ Copied
    → Availability status (iMessage or SMS)
  2. Send a message
    Send a message to Mom saying 'Running 15 minutes late, see you soon!'✓ Copied
    → Message sent confirmation with delivery method

Outcome: Message delivered via the appropriate channel.

Pitfalls
  • Contact names may be ambiguous — Use phone numbers or email addresses for precise targeting

Combinations

Pair with other MCPs for X10 leverage

mac-messages-mcp-2 + filesystem

Export message conversations to text files for backup

Export my last month's messages with the 'Family' group chat to ~/messages-backup/family.txt.✓ Copied

Tools

What this MCP exposes

ToolInputsWhen to callCost
send_message recipient: str, content: str Send a message via iMessage or SMS 0
get_recent_messages contact?: str, limit?: int, time_range?: str Retrieve recent messages with optional filters 0
check_imessage_availability recipient: str Check if a recipient can receive iMessage 0

Cost & Limits

What this costs to run

API quota
N/A — reads local macOS Messages database
Tokens per call
200–1000 tokens per query
Monetary
Free — standard iMessage/SMS rates apply for sending
Tip
Use time-based filters to limit search scope and reduce token usage.

Security

Permissions, secrets, blast radius

Minimum scopes: Full Disk Access on macOS
Credential storage: No credentials needed — accesses local Messages database directly
Data egress: Reads from local ~/Library/Messages/chat.db. Sending goes through macOS Messages framework.

Troubleshooting

Common errors and fixes

Permission denied reading Messages database

Grant Full Disk Access to Terminal (or your MCP host app) in System Settings → Privacy & Security → Full Disk Access.

Verify: ls ~/Library/Messages/chat.db
Contact not found

Use phone number or email instead of display name. Fuzzy matching may not find all contacts.

Verify: Try with the exact phone number
Message fails to send

Ensure Messages.app is configured and signed into your Apple ID. The MCP server uses macOS frameworks to send.

Verify: Try sending a message manually from Messages.app

Alternatives

mac_messages_mcp vs others

AlternativeWhen to use it insteadTradeoff
applescript-mcpYou want broader macOS control beyond just MessagesCan do everything plus more, but with full system access risks

More

Resources

📖 Read the official README on GitHub

🐙 Browse open issues

🔍 Browse all 400+ MCP servers and Skills