Skip to main content
Glama
whogben

mac-messages

by whogben

Mac Messages Host

Your Mac's entire Apple Messages (iMessage/SMS) history, read-only, for AI agents — one batched tool over REST/OpenAPI and streamable HTTP MCP.

  • One tool, batched requests: a single messages(requests: str) tool takes a JSON array of requests and returns an aligned JSON array of responses — one call does many independent ops. Served identically over REST (POST /api/messages) and MCP (/mcp/).

  • Read-only by construction: the database is opened with SQLite mode=ro; there is no write path. Nothing can be sent, edited, or deleted.

  • Modern macOS body decoding: message text stored in attributedBody typedstream blobs (Ventura+) and edit history in message_summary_info plists is decoded transparently.

  • Auto-generated tool prompt: the AI-facing prompt is generated from the Pydantic models (~615 gpt-4o tokens, counted by tiktoken and enforced by a test); a tool_prompt.md snapshot is kept in sync by a drift test.

Install

Requires Python 3.11+ on macOS.

pip install .            # or: pip install -e . for development
mmhost info              # permission check + database status
mmhost start             # serve API + MCP on http://127.0.0.1:8761

macOS permissions (important)

~/Library/Messages/chat.db is protected by macOS TCC. The process that runs mmhost needs Full Disk Access:

System Settings → Privacy & Security → Full Disk Access → enable your terminal app (or whatever launches the server), then restart it.

mmhost info tells you immediately whether the database is readable.

Related MCP server: jons-mcp-imessage

Endpoints

Endpoint

Purpose

POST /api/messages

The batched tool (REST)

/api/openapi.json

OpenAPI schema

/api/docs

Interactive docs

/api/health

Liveness probe

/mcp/

Streamable-HTTP MCP endpoint (single messages tool)

Auth

Authorization: Bearer <token> when admin_token is configured (persisted config, MMHOST_ADMIN_TOKEN, or --admin-token). With no token configured, access is open — safe because the server binds 127.0.0.1 by default.

Request kinds

  • get_info — database status, counts, history date range

  • list_chats — conversations by recent activity (filter, paginate)

  • get_chat — a chat's transcript (paginate older via before)

  • get_recent — newest messages across all chats (poll via since)

  • search_messages — case-insensitive substring search over bodies

See tool_prompt.md for the exact AI-facing documentation (generated from the models).

Example

curl -s http://127.0.0.1:8761/api/messages \
  -H 'Content-Type: application/json' \
  -d '{"requests": "[{\"kind\":\"list_chats\",\"limit\":3}]"}'

MCP client configuration

{
  "mcpServers": {
    "mac-messages": {
      "type": "streamable-http",
      "url": "http://127.0.0.1:8761/mcp/"
    }
  }
}

Configuration

Persisted at the platform config dir (~/Library/Application Support/mac_messages_host/config.json on macOS); override the location with MMHOST_CONFIG. Server-level settings only — see example.env.

Development

pip install -e '.[dev]'
pytest
# after changing request models:
python -m tests.regenerate_tool_prompt

Architecture follows the oWoHo AI Tool Server pattern (pure core library + derived FastAPI/FastMCP/CLI interfaces), like reddit_tool_server and obsidian_ai_miniserver.

License

MIT — see LICENSE.md.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables reading, searching, and sending iMessages directly from MCP-compatible clients by accessing the local macOS iMessage database, supporting conversations, attachments, and both individual and group chats.
    104
    10
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI assistants to read iMessage history and send messages on macOS. Supports conversation listing, message search with keyword and semantic modes, contact lookup, and sending messages to existing conversations.
    13
    11
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI assistants to read, search, and send iMessages with features like contact name resolution, session grouping, and attachment listing. It provides intent-aligned tools to efficiently navigate conversation history and manage messages through natural language queries.
    5
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables reading and sending iMessages on macOS through MCP, with tools for managing chats, messages, and attachments via AI agents.
    MIT

View all related MCP servers

Related MCP Connectors

  • MCP connector for iMessage & Contacts via a local Mac agent + Vercel relay

  • Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.

  • Let ChatGPT, Claude & Cursor use your Mac: email, calendar, iMessage, Teams, files. Local, free.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/whogben/mac_messages_host'

If you have feedback or need assistance with the MCP directory API, please join our Discord server