mail-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_emails | Search Mail.app messages via the Envelope Index database. Returns rich metadata including RFC message-id (usable with read_email, reply_to_email, set_message_flags). |
| read_email | Read full body of a message by its RFC message-id. Uses Mail.app via AppleScript so it works for IMAP/iCloud/Exchange messages without filesystem access. |
| list_accounts_and_mailboxes | List all configured Mail.app accounts and their mailboxes with unread counts. |
| list_recent | List recent messages in a mailbox of a specific account. |
| send_email | Send a new email via Mail.app from an existing account. |
| reply_to_email | Reply to an existing message identified by RFC message-id. |
| set_message_flags | Set read and/or flagged status on a message identified by RFC message-id. |
| move_email | Move a message to a different mailbox by RFC message-id. Use list_accounts_and_mailboxes to get exact mailbox names. |
| trash_email | Move a message to Deleted Messages (trash) by RFC message-id. Does not permanently delete. |
| create_mailbox | Create a new mailbox (folder) in a Mail.app account. |
| bulk_mark_read | Mark multiple messages as read in one call — by mailbox, sender substring, or both. Far faster than calling set_message_flags per message. |
| get_unsubscribe_link | Extract unsubscribe URLs from a message — checks the List-Unsubscribe header first (reliable), then scans the plain-text body as a fallback. |
| list_senders | Return a grouped count of senders in a mailbox — who sends how many messages, how many are unread, and when the last arrived. Ideal for identifying bulk senders and noise. |
| empty_mailbox | Delete every message in a mailbox at once — moves to Deleted Messages, or permanently removes if the mailbox is already Deleted Messages/Trash. Use for Junk, Trash, or bulk-cleanup folders. |
| list_rules | List all Mail.app rules with their conditions and actions. Reads directly from SyncedRules.plist. |
| create_rule | Create a new Mail.app rule. A timestamped backup of SyncedRules.plist is made before writing. Mail.app may need to be restarted for the rule to take effect. |
| update_rule | Update an existing Mail.app rule by its RuleId (use list_rules to find IDs). A timestamped backup is made before writing. Mail.app may need to be restarted for changes to take effect. |
| delete_rule | Permanently delete a Mail.app rule by its RuleId. A timestamped backup of SyncedRules.plist is made before writing so the deletion can be undone. Mail.app may need to be restarted for the change to take effect. |
| check_compatibility | Probe each mail-mcp dependency (Envelope Index schema, SyncedRules.plist, AppleScript, MailData directory) and report pass/fail. Run this after a macOS update to verify nothing broke. |
| submit_feedback | Open a pre-filled GitHub issue for mail-mcp (p-l-ta/mail-mcp) in the default browser. Automatically includes macOS version and mail-mcp version in the issue body. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/p-l-ta/mail-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server