Skip to main content

Apple Messages MCP

MCP server for Apple Messages on macOS.

Provides access to message history, conversation search, and sending via Messages.app. Requires Full Disk Access for history and Automation access for sending.

When to use

  • Messages-only workflows
  • Message history and sending without the all-in-one server
  • Tighter app-level separation for permissions

What It Does

  • List conversations with pagination
  • Search messages and view attachment metadata
  • Send and reply to messages
  • Tool discovery helpers search_tools and get_tool_info for context-constrained clients
  • Unread and recent conversation resources
  • Health checks that separate history access from automation failures
  • Permission recovery: messages_permission_guide, messages_recheck_permissions

Install On This Mac

Quick start (uvx, from PyPI)

With uv installed:

uvx apple-messages-mcp

No clone, no venv management.

From a clone
git clone https://github.com/JonathanRReed/Apple-MCPs.git
cd Apple-MCPs
uv sync --all-packages

This builds one workspace environment with every server's entry point in .venv/bin (for example .venv/bin/apple-messages-mcp). You can also point an MCP client at AppleMessages-MCP/start.sh, which prefers uv run and falls back to a plain venv bootstrap (Python 3.11+ required).

Install In AI Agents

Generic MCP client config
{
  "mcpServers": {
    "apple-messages": {
      "command": "uvx",
      "args": ["apple-messages-mcp"],
      "env": {
        "APPLE_MESSAGES_MCP_SAFETY_MODE": "full_access"
      }
    }
  }
}

Running from a clone instead? Use /path/to/Apple-MCPs/AppleMessages-MCP/start.sh as the command with empty args.

Claude Code example
claude mcp add --transport stdio --scope project apple-messages -- uvx apple-messages-mcp

Transport

stdio is the default and recommended transport. Set APPLE_MESSAGES_MCP_TRANSPORT=streamable-http (with optional APPLE_MESSAGES_MCP_HOST and APPLE_MESSAGES_MCP_PORT) to serve Streamable HTTP instead.

macOS Permissions

  • Automation access to Messages is required for send and reply
  • Full Disk Access is required for history, search, and attachment metadata from ~/Library/Messages/chat.db
  • messages_health reports both permission surfaces separately, so agents can tell whether send, history, or both are blocked

Launch Checklist

  • Add uvx apple-messages-mcp (or a clone's AppleMessages-MCP/start.sh) to your MCP client
  • Reload or reconnect the client so the Messages tool surface is loaded into context
  • Call messages_health first
  • If either permission surface is blocked, call messages_permission_guide
  • After changing macOS permissions, call messages_recheck_permissions

Prompting Notes

  • tools/list returns the full Messages tool surface. Context-constrained clients can use search_tools first, then get_tool_info for the Messages tool they need.
  • Resolve the recipient via Contacts before any send or reply when the user names a person.
  • Confirm the intended person if Contacts returns multiple matches.
  • Omit service_name on iMessage sends. Passing it can trigger AppleScript error -1728.

Related

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

apple_messages_mcp-1.0.1.tar.gz (17.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

apple_messages_mcp-1.0.1-py3-none-any.whl (15.7 kB view details)

Uploaded Python 3

File details

Details for the file apple_messages_mcp-1.0.1.tar.gz.

File metadata

  • Download URL: apple_messages_mcp-1.0.1.tar.gz
  • Upload date:
  • Size: 17.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for apple_messages_mcp-1.0.1.tar.gz
Algorithm Hash digest
SHA256 04862a58b197c51cc646dd8720de53f5b2d0a14833156cc19f562d1522cdfeff
MD5 363313b02c64d7613b3a3df5d2cedfbe
BLAKE2b-256 cfd5b891187b03486da3a323088f7bd46c08384dc88e768e7b5ec362b6570e83

See more details on using hashes here.

Provenance

The following attestation bundles were made for apple_messages_mcp-1.0.1.tar.gz:

Publisher: release.yml on JonathanRReed/Apple-MCPs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file apple_messages_mcp-1.0.1-py3-none-any.whl.

File metadata

File hashes

Hashes for apple_messages_mcp-1.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 3a017638d38901a457c5d0cad0d1b8b8940bd3b48373128b8054b4b956bc240e
MD5 cac477e99b2eb93fa6896ba889a09272
BLAKE2b-256 35f0ace147eed5b7850ae25ad8c5b0f3be6a6e2f1e2684d278ae62c16fd5b42b

See more details on using hashes here.

Provenance

The following attestation bundles were made for apple_messages_mcp-1.0.1-py3-none-any.whl:

Publisher: release.yml on JonathanRReed/Apple-MCPs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page