@p-l-ta/mail-mcp
MCP server exposing Mail.app to Claude and other MCP hosts
Versions
1.3.5latest1.3.41.3.31.3.21.3.1+ show 7 moreshow less
1.3.01.2.01.1.11.1.01.0.21.0.11.0.0Tools 23
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.
bulk_flag Flag or unflag multiple messages in one call — by mailbox, sender substring, or both. Queries the Envelope Index for matching IDs then updates in a single batched AppleScript call.
bulk_move Move multiple messages to a destination mailbox in one call — by mailbox, sender substring, or both. Queries the Envelope Index for matching IDs then moves in a single batched AppleScript call.
send_email Send a new email via Mail.app from an existing account.
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.
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.
list_accounts_and_mailboxes List all configured Mail.app accounts and their mailboxes with unread counts.
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.
trash_email Move a message to Deleted Messages (trash) by RFC message-id. Does not permanently delete.
bulk_trash Move multiple messages to trash in one call — by mailbox, sender substring, or both. Queries the Envelope Index for matching IDs then trashes in a single batched AppleScript call.
list_rules List all Mail.app rules with their conditions and actions. Reads directly from SyncedRules.plist.
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.
reply_to_email Reply to an existing message identified by RFC message-id.
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.
list_senders Return a grouped count of senders across mailboxes — who sends how many messages, how many are unread, and when the last arrived. By default excludes Deleted Messages, Junk, Sent, and Drafts so counts reflect live mail only. Ideal for identifying bulk senders and noise.
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.
bulk_apply Apply one action (mark_read, mark_unread, flag, unflag, trash, or move) to a list of messages by RFC message-id, in a single batched call — far faster than calling set_message_flags/trash_email/move_email once per message.
move_email Move a message to a different mailbox by RFC message-id. Use list_accounts_and_mailboxes to get exact mailbox names.
create_mailbox Create a new mailbox (folder) in a Mail.app account.
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.
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).
set_message_flags Set read and/or flagged status on a message identified by RFC message-id.
list_recent List recent messages in a mailbox of a specific account.
Permissions 2
filesystem low shell high