Skip to main content
Glama
jenyago

Apple Mail MCP

by jenyago

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
APPLE_MAIL_ACCOUNTSNoComma-separated email addresses. Only accounts owning one of them are visible or reachable; everything else is refused inside the JXA bridge. Unset = every account. Set but empty = the server refuses to start.
APPLE_MAIL_AUDIT_LOGNoAudit log path. Default `~/Library/Logs/apple-mail-mcp/audit.log`.~/Library/Logs/apple-mail-mcp/audit.log
APPLE_MAIL_ALLOW_DRAFTSNo`1` registers `create_draft`. Any other value keeps the server read-only. With APPLE_MAIL_ACCOUNTS set, sender is required and must be a listed address, because Mail files a draft under its default account otherwise.

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": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_accountsA

List permitted Apple Mail accounts and their stable IDs.

list_mailboxesB

List account mailbox paths as arrays of names, including nested mailboxes.

search_messagesB

Search subject/sender case-insensitively in one mailbox. Empty query lists messages.

Continue with next_offset even if this page has no matches: a scan also stops after about 30 seconds on slow mailboxes. Mail order is not guaranteed chronological; concurrent mailbox changes can affect pagination.

search_inboxesA

Search the inbox of every permitted account in one call: the first page from each.

Empty query lists messages; unread_only=true reviews what is new. Each account is searched separately and a failing account is reported in its own entry without stopping the rest. Accounts skipped for lack of time are in not_reached. To go deeper in one account, call search_messages with that entry's account_id, mailbox_path and next_offset.

read_messageB

Read a message by ID within its account/mailbox, with bounded body length.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.7/5.0

Scored across 5 tools

Disambiguation4/5

list_accounts and list_mailboxes clearly target different resources, and read_message is distinct. The only potential overlap is search_messages vs search_inboxes, but descriptions make the scope difference explicit (single mailbox vs all inboxes).

Naming Consistency5/5

All tools follow a consistent snake_case verb_noun pattern (list_accounts, list_mailboxes, search_messages, search_inboxes, read_message). Verb choice is predictable and parallel.

Tool Count5/5

Five tools is well-scoped for a read/search-oriented mail server. Each tool covers a distinct step (accounts, mailboxes, message search, inbox scan, message read) without redundancy.

Completeness3/5

The read/search surface is partially covered: accounts, mailboxes, search, and single-message read are present. However, there are no tools for sending/reply, deleting, moving, flagging read/unread, or retrieving attachments, which are notable gaps for an Apple Mail server.

Maintenance

ActivityMaintained
ResponsivenessNo issues