Skip to main content
Glama
dh-repo

Apple Messages MCP

by dh-repo

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
ENABLE_SENDNoSet to 1 to enable messages_send (real texts). Default is 0.0
MESSAGES_SCOPENoComma/semicolon tokens: display name, chat_id, guid, handle. Default is unset (scoped shut).
REDACT_PREVIEWSNoSet to 1 to make bodies become [redacted N chars]. Default is 0.0
MESSAGES_DB_MODENoCopy + WAL replay. direct opens the live file.copy
MESSAGES_DB_PATHNoOverride for fixtures.~/Library/Messages/chat.db
MESSAGES_WAKE_HOOKNoWatcher runs this executable with one JSON event on stdin. Default is unset.
WATCH_INCLUDE_PREVIEWNoSet to 1 to include a redacted preview in watcher events. Default is 0.0
MESSAGES_ALLOW_UNSCOPEDNoSet to 1 to open the whole inbox. Default is 0.0

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
messages_statusA

Report whether chat.db is readable, whether Full Disk Access is likely missing, macOS version hints, send/redact flags, snapshot size/age, and whether the inbox is scoped shut. Call this first when anything fails. Does not return message bodies. unscoped is true only when MESSAGES_ALLOW_UNSCOPED=1.

messages_list_chatsA

List recent conversations from the local Messages database (iMessage and SMS). No MESSAGES_SCOPE and MESSAGES_ALLOW_UNSCOPED is unset; list/search/thread/send/watch return SCOPE. Returns chat_id (chat.ROWID), guid, chat_identifier, handles (phone/email), and a last-message preview. Prefer guid to remember a thread across launches. Does not return attachment bytes.

messages_get_threadA

Return messages for one chat, oldest-first within the page. No MESSAGES_SCOPE and MESSAGES_ALLOW_UNSCOPED is unset; list/search/thread/send/watch return SCOPE. Identify the chat with chat_id (chat.ROWID), guid (via handle field or chat_id), or a participant handle (phone/email). If omitted and the allowlist has exactly one chat, that chat is used. before paginates: a message_id or ISO-8601 timestamp. from_date / to_date filter on the converted Apple date. Attachment metadata is included; file bytes are not. Tapbacks are omitted unless include_reactions is true.

messages_searchA

Search message text: SQL LIKE on the plain text column, then a bounded decode-scan of empty-text / Tahoe rows. No MESSAGES_SCOPE and MESSAGES_ALLOW_UNSCOPED is unset; list/search/thread/send/watch return SCOPE. Returns truncated:true and scanned when the Tahoe window is exhausted. With no chat_id, searches across all readable chats (or the allowlist). Case-insensitive. Does not search attachment binaries. Does not write FTS into chat.db.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources