Skip to main content
Glama
macos-mail-mcp

macos-mail-mcp

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

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
list_accountsA

List all Mail.app accounts with their type, enabled status, and email addresses. Known types are canonicalized; other raw Mail type text is preserved, including backend-reported unknown.

get_account_detailB

Get detailed information about a specific Mail.app account by name. Unavailable serverName, port and usesSsl values are null; account type preserves raw Mail values beyond known canonical types.

list_mailboxesA

List mailboxes in a Mail.app account, or all mailboxes across all accounts

create_mailboxA

Ensure a mailbox (folder) exists in a Mail.app account. For nesting, resolve the parent and use its full slash path at the account. Returns the full path read back from Mail and explicit created/alreadyExisted booleans; an existing mailbox is reused.

get_mailbox_infoB

Get detailed information about a specific mailbox in a Mail.app account

list_messagesB

List messages in a mailbox with pagination. Provide accountName and mailboxName to scope the listing.

get_messageA

Get the full details of a single message by its ID, including body, headers, recipients, and attachments. If mailboxName is omitted, searches all mailboxes in the account (slower but useful when you don't know which mailbox the message is in).

search_messagesA

Search one mailbox safely by default. Broad, content or large-mailbox searches require explicit allowSlow. Returns an object with messages and partial/timeout/skipped/error metadata within a 45 second server budget. Mail's queued Apple events can outlive process cancellation; wait or restart Mail after a timeout.

move_messageA

Move a message to a different mailbox. Gmail uses labels rather than folders. Moving a message adds the destination label but may not remove the original.

move_messagesA

Move multiple messages to a different mailbox in a single operation. More efficient than calling move_message multiple times.

delete_messageA

Delete a message. Uses Mail's delete verb which routes to the correct Trash.

flag_messageB

Set or clear the flag on a message. Optionally specify a flag colour index.

mark_readB

Mark a message as read or unread.

list_attachmentsA

List all attachments for a message, including their name, MIME type, file size, and download status.

save_attachmentA

Save a specific attachment from a message to disk. Creates the destination directory recursively before contacting Mail.

save_all_attachmentsB

Save all downloaded attachments from a message to disk. Creates the destination directory recursively before contacting Mail.

read_attachmentA

Read valid UTF-8 attachment text inline. Accepts text/*, application/json, application/xml, application/x-yaml MIME types or .txt, .csv, .json, .html, .md, .xml, .log extensions. Uses extension-based MIME fallback when unavailable. Use save_attachment for binary files.

send_messageA

Compose and send a new email message as plain text. Returns success when the message is queued for sending, along with the sender the message was sent from; actual delivery is not confirmed. Check Mail's Sent or Outbox mailbox to verify delivery.

reply_to_messageA

Reply to an existing email message. Returns the sender the reply was sent from. Does not support attachments (Mail.app limitation).

forward_messageA

Forward an existing email message to a new recipient. Returns the sender the forward was sent from. Does not support adding new attachments (Mail.app limitation).

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.6/5.0

Scored across 20 tools

Disambiguation4/5

Each tool targets a distinct resource+action, and singular/plural pairs (move_message vs move_messages, save_attachment vs save_all_attachments) are clearly differentiated by their descriptions. The only real overlap is list_messages versus search_messages (and get_message's fallback that scans all mailboxes), which could occasionally cause misselection when an agent just wants to find a message.

Naming Consistency4/5

Nearly everything follows a predictable snake_case verb_noun pattern (list_accounts, get_message, move_message, save_attachment, reply_to_message). The one deviation is mark_read, which uses verb_adjective rather than verb_noun, though its meaning remains obvious.

Tool Count4/5

20 tools is on the heavy side of the typical 3-15 band, but for a full email client each tool maps to a real operation (account, mailbox, message, attachment, and compose surfaces). Nothing looks redundant enough to cut outright, so the surface is scoped reasonably.

Completeness3/5

Message lifecycle is well covered (list, search, get, send, reply, forward, move, flag, mark_read, delete) along with attachment handling. However, the mailbox lifecycle is partial — create_mailbox exists with no delete_mailbox or rename_mailbox — and there is no draft/update-message support or batch flag/delete, leaving notable dead ends for common workflows.

Maintenance

ActivityNo data
ResponsivenessOutdated data