Apple Mail MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| APPLE_MAIL_MCP_DRY_RUN | No | Set to true to validate sends but prevent delivery. | |
| APPLE_MAIL_MCP_AUDIT_LOG | No | Local path for write-action audit metadata. Defaults to ~/.apple-mail-mcp/audit.jsonl. | ~/.apple-mail-mcp/audit.jsonl |
| APPLE_MAIL_MCP_DATA_STORE | No | Local path for the approval inbox and relationship context JSON store. Defaults to ~/.apple-mail-mcp/data.json. | ~/.apple-mail-mcp/data.json |
| APPLE_MAIL_MCP_SENDING_WINDOW | No | Local time window during which sending is allowed, for example 09:00-18:00. | |
| APPLE_MAIL_MCP_ALLOWED_SENDERS | No | Comma-separated allowlist of configured Apple Mail addresses to allow sending from. | |
| APPLE_MAIL_MCP_ALLOWED_RECIPIENTS | No | Recipient restrictions for sending. | |
| APPLE_MAIL_MCP_ALLOWED_RECIPIENT_DOMAINS | No | Recipient domain restrictions for sending. |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_accountsA | List Apple Mail accounts and their configured sender addresses. Read-only. |
| list_mailboxesA | List the top-level mailboxes in one Apple Mail account. Read-only. |
| list_messagesB | List message summaries from an Apple Mail mailbox. Read-only; bodies are not included. |
| search_messagesA | Search recent messages by subject or sender in one mailbox. Read-only; bodies are not searched. |
| get_messageA | Read one message body by its id. Use after list_messages or search_messages. Read-only. |
| create_draftA | Create a visible unsent draft in Apple Mail. Use this before sending whenever the user should review the message. |
| send_emailA | Send an email using Apple Mail. Only call after the user explicitly approved this exact recipient, subject, and body. |
| create_reply_draftA | Open a visible reply draft for an existing message. The original message controls the recipient and subject. This does not send anything. |
| set_message_read_statusA | Mark a message read or unread. Only call after the user explicitly approved this exact action. |
| set_message_flag_statusA | Flag or unflag a message. Only call after the user explicitly approved this exact action. |
| move_messageA | Move a message to another mailbox in the same account. Only call after the user explicitly approved this exact action. |
| get_audit_logA | Read recent local audit metadata for write actions. Email bodies are never stored in this log. |
| get_send_policyA | Show the active local sending safeguards without exposing credentials. Read-only. |
| preview_sendA | Validate a proposed email against the active local send policy without creating or sending anything. Read-only. |
| queue_email_for_approvalA | Save a proposed email in the local approval inbox. It does not create a Mail draft or send anything. |
| list_approval_queueB | List proposed emails in the local approval inbox. Read-only. |
| approve_queued_emailA | Turn one pending approval-queue item into a visible draft or send it. Only call after the user explicitly approved this exact item and delivery mode. |
| discard_queued_emailA | Discard one pending approval-queue item. It will not affect Apple Mail. Only call after explicit user approval. |
| save_contact_contextB | Save local relationship context for one contact. This does not modify Apple Mail or contact the person. |
| get_contact_contextB | Read the local relationship context for one email address. Read-only. |
| get_contact_briefB | Build a local contact brief from saved relationship context and recent inbox summaries. Read-only; message bodies are excluded. |
| list_follow_up_radarA | List local contact records with a follow-up date due now or within a chosen horizon. Read-only; it never sends anything. |
| get_work_modeA | Show the active local AI-mail work mode and its allowed MCP actions. Read-only. |
| set_work_modeA | Set the local AI-mail work mode. The mode controls whether this MCP may queue, draft, or send. This does not change Apple Mail. |
| save_thread_summaryB | Save a local, user-approved summary of a selected contact thread, including the exact source message ids used. It does not modify Apple Mail. |
| get_daily_briefingB | Create a read-only daily briefing from one inbox, the local approval queue, and saved follow-up dates. It never drafts, sends, or changes email. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 26 tools
Most tools target clearly distinct resources, and descriptions add explicit ordering hints (e.g. 'use after list_messages'). However, the send path is crowded—create_draft, create_reply_draft, queue_email_for_approval, approve_queued_email, preview_send, and send_email all overlap enough that an agent could pick the wrong one without careful reading.
Every tool follows a clean verb_noun snake_case pattern (list_messages, create_draft, set_message_read_status, get_audit_log, queue_email_for_approval). No mixing of conventions or vague single-word verbs.
At 26 tools this sits at the heavy end, spanning mail actions, an approval queue, contact context, audit, and work modes. Each tool is scoped, but the count is large for a single mail server and risks cognitive overhead.
Strong lifecycle coverage: messages can be listed, searched, read, moved, flagged, and marked read; drafts/send/reply exist; the approval queue has full queue/list/approve/discard support; contacts and work modes are covered. Minor gaps remain (no message delete/archive, no mailbox creation or attachment handling).