Apple Mail

io.github.mp-consulting由 GitHub 账号 mp-consulting 发布v0.7.3更新于 Nov 7, 2026

Search, read, sort and answer Apple Mail on macOS: fast local reads, drafts first, you approve sends

概览

AI 生成的概览

本地 macOS MCP 服务器,让助手搜索、阅读、整理、起草 Apple Mail 邮件,并在你批准后发送。

可以做什么
  • 搜索与阅读邮件:全文与多条件搜索、单封邮件、批量邮件与完整会话、收件箱概览、统计与高频发件人
  • 待办与跟进:需要回复的邮件、等待对方回复、稍后提醒、定时发送、联系人查找
  • 提取与验证:发票字段、物流单号、验证码与预订信息,以及 SPF、DKIM、DMARC 真实性检查
  • 起草与发送:撰写、回复、转发、列出并发送草稿,默认存为草稿,发送前需批准
  • 整理:移动、标记、移入废纸篓、新建邮箱、管理与应用邮件规则、撤销更改、退订邮件列表
  • 附件与导出:保存附件、导出为 EML 或 Markdown、将搜索结果导出为 CSV、JSON 或 XLSX
适用场景
适合在 Mac 上让助手处理庞大的 Apple Mail 收件箱:分拣邮件、查找旧邮件、按你的语气起草回复、清理订阅邮件、归档邮件,或从邮件中提取发票和验证码。
运行要求
在 macOS 14 及以上(Apple 芯片或 Intel)本地以 stdio 运行,可通过 Homebrew cask、DMG 或 Claude 扩展包安装。需要为启动服务器的应用授予完全磁盘访问权限和 Mail 的自动化权限。无需 API 密钥或密码,账户在 Mail 中添加。若要让 claude.ai 和手机远程访问,需要隧道和访问口令。
安装前请注意
它可以发送邮件、移动、移入废纸篓、标记邮件并修改邮件规则,还能退订邮件列表;默认的“先问我”策略下发送需你点击确认,批量更改有预览和数量限制。废纸篓不会被清空,更改可撤销。保存附件时禁止写入系统与密钥目录。远程访问会通过隧道以 HTTP 暴露邮件,请设置访问口令并检查已连接的应用。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Apple Mail,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

[Apple Mail MCP icon]

Apple Mail MCP

Let Claude read, search, sort and answer your Apple Mail: fast, local, and with you in control of what gets sent.

[Latest release] [CI] [macOS 14+, Apple silicon and Intel] [Swift 6] [MIT License]

Apple Mail MCP is an MCP server for the Mail app on your Mac, plus a small menu bar app. Claude (Claude Code, the Claude app, or any MCP client) can search years of mail in milliseconds, read threads, find what needs a reply, draft answers in your voice, clean up newsletters and file attachments, and it can only send an email after you click Send.

[Mail tab: three emails waiting for approval, one shown in full, recent activity] [Claude tab: Claude Code and the Claude app connected, the eight skills by slash command] [Settings tab: send policy, changes, remote access for claude.ai, search index and updates]

Any email account, ready for AI

Apple Mail MCP turns any email account you can add to Apple Mail into one that Claude and other MCP clients can work with: iCloud, Gmail and Google Workspace, Microsoft 365, Outlook.com and Exchange, Yahoo, Fastmail, your company's or your hosting provider's IMAP server, even old POP mailboxes.

Your provider needs no API, no developer account and no MCP support of its own. Add the account in Mail › Settings › Accounts as you normally would. As soon as Mail syncs it, the account gets the same tools as every other one: search, threads, needs-a-reply, drafts, sending with your approval, filing, snoozing, unsubscribing, extraction and authenticity checks. Several accounts work side by side, and every tool can be limited to one of them with account.

Your password stays in Mail and in your keychain: this app never sees it and never connects to your provider. It reads what Mail has already downloaded and asks Mail itself to move, draft or send.

Why another Mail server?

Most Mail servers drive Mail with AppleScript for everything, including reading. Mail then walks its mailboxes one message at a time, so a search through a large inbox takes minutes or times out, and Mail freezes meanwhile.

Apple Mail MCP reads Mail's own database and message files directly, the same data Mail shows you, and only talks to Mail to change something (move, flag, draft, send). Searches stay fast on any mailbox size and never disturb Mail. See Benchmarks.

  • Fast on big mailboxes: a few milliseconds for searches, threads and statistics over 80,000+ messages, faster than every other Apple Mail MCP server we measured (Benchmarks).
  • Full-text search of message bodies through a local index, built in about a minute.
  • Safe by default: replies and new mail are saved as drafts; with "Ask me first" nothing is sent without your click; bulk changes have previews and limits; nothing is ever permanently deleted.
  • Smart views out of the box: what needs your reply, what you're still waiting on, top senders, weekly stats.
  • Eight Claude skills that turn the tools into workflows: triage, inbox zero, follow-ups, a reply writer that matches your voice, newsletter cleanup, research, attachments and a weekly report.
  • No passwords, no cloud: it works with every account Mail has (iCloud, Gmail, Exchange, IMAP) and everything stays on your Mac.

Install

Homebrew:

sh
brew install --cask mp-consulting/tap/apple-mail-mcp

Or download the app or the Claude extension from the latest release:

FileFor
AppleMailMCP-x.y.z.dmgThe menu bar app with the server inside: approvals, activity, search index, skills, one-click setup. Recommended.
AppleMailMCP-x.y.z.mcpbThe Claude app only: double-click to install the server as a Claude extension, no config or restart.

Both are notarized, signed with Developer ID, and run on Apple silicon and Intel Macs (macOS 14+). The server is also listed in the MCP registry as io.github.mp-consulting/apple-mail-mcp.

Then:

  1. Open Apple Mail MCP: an envelope appears in the menu bar.
  2. Click the envelope, open the Claude tab and click Connect next to Claude Code and/or the Claude app.
    • Claude Code gets the server and all the skills; new sessions see them.
    • The Claude app reads its servers only at launch: click Restart Claude when the tab offers it. For its skills, switch the Skills list to Claude app and click Export, then upload each .zip in Claude › Settings › Capabilities › Skills.
  3. Give macOS permissions (one time, see Permissions).

From a terminal, the same setup is:

sh
SERVER="/Applications/Apple Mail MCP.app/Contents/Helpers/Apple Mail MCP Server.app/Contents/MacOS/apple-mail-mcp""$SERVER" install        # Claude Code and the Claude app"$SERVER" skills install # skills for Claude Code

Any other MCP client: run /Applications/Apple Mail MCP.app/Contents/Helpers/Apple Mail MCP Server.app/Contents/MacOS/apple-mail-mcp as a stdio server (Homebrew also links it as apple-mail-mcp). Before 0.6 the server was at Apple Mail MCP.app/Contents/MacOS/apple-mail-mcp; the menu bar app moves Claude Code's and the Claude app's settings to the new path, other clients need it by hand.

Permissions

macOS asks for two permissions, for the app that starts the server (Claude, your terminal, VS Code…):

PermissionWhyWhere
Full Disk AccessRead Mail's database and message filesSystem Settings › Privacy & Security › Full Disk Access
Automation › MailMove, flag, draft and send (asked the first time)System Settings › Privacy & Security › Automation

Give Full Disk Access to Apple Mail MCP too, for the panel's counts and the search index. If something is missing, every tool answers with the exact app to allow, and the panel shows it under Needs attention. Run apple-mail-mcp doctor for a full check.

claude.ai and your phone

The Claude apps on iPhone, Android and the web reach Mail on your Mac as a custom connector. The menu bar app serves MCP over HTTP with OAuth; a tunnel (such as cloudflared) publishes it at an HTTPS address of yours. Turn it on in More settings… › Remote access:

[Remote access settings: the switch with its status, the connection, the connector URL and tunnel path to copy, the passcode, and two connected Claude apps with Disconnect]

  1. Enter the public address the tunnel publishes, such as https://mcp.example.com/me/mail. Several servers can share one host name, each on its own path.
  2. Route that path to the port (8590 by default) in the tunnel. The route must also carry the discovery documents, which OAuth puts at the root with the path appended; the settings show the exact path pattern, for example ^/(\.well-known/[^/]+/)?me/mail(/.*)?$.
  3. Set a passcode to approve connections from anywhere, or approve them in the menu bar app.
  4. In claude.ai, Settings › Connectors › Add custom connector with the connector URL (no client ID or secret). Connect opens the sign-in page:

[The sign-in page: Connect Claude to Apple Mail, a choice of full access or read only, the passcode field with Allow, Approve on my Mac, and Don't allow] [The menu bar app asks: Claude wants to connect to Apple Mail, with Deny and Allow]

A connection may do what Claude on the Mac may do, or only read; sending and big changes still wait for your OK in the menu bar app. Connected apps lists each one, and Disconnect ends it at its next request. Tokens last an hour and refresh for 90 days of use; the server keeps only their hashes. Details, the tunnel set-up and the security model: docs/remote.md.

What Claude can do

ToolWhat it does
inbox_overviewUnread counts, latest unread, what needs a reply, flagged mail, in one call
search_messagesAny mix of text (several alternatives), subject, sender, recipient, body, mailbox, account, dates, unread, flags, attachments, Mail's categories; exclusions (subjects, senders, replies, yourself) and direction (received or sent); paginated, or counts per sender, domain or month with group_by
export_searchEvery match of a search to one CSV, JSON or XLSX file, optionally with invoice totals and numbers; returns only the path and row count
get_message, get_messages, get_threadOne message, up to 200 at once, or a whole conversation, with quotes stripped on request
extract_invoice_fieldsVendor, invoice number, total and currency from invoice and receipt bodies and attached PDFs
extract_fieldsTracking numbers (with the carrier), verification codes, booking and order references, flights, calendar invitations
check_authenticityWhether a message is really from who it says: SPF, DKIM, DMARC, look-alike domains, spoofed names, links that lie
find_contactAddresses from Contacts and from the people you write with, most frequent first
wait_for_mailWaits for a matching message to arrive (a sign-in code, an expected reply) and returns it
mail_setupYour Mail rules, VIPs, smart mailboxes and signatures
create_rule, update_rule, set_rule_enabled, delete_ruleMake, change, turn on or off and delete Mail rules (forwarding, replies and deleting ask first), each checked against Mail's saved rules and undoable with undo_change
apply_rulesRun rules on mail already in a mailbox, like Message › Apply Rules; a dry run shows what each rule would do
needs_responseMail from people, to you, still waiting on you (lists, promotions and no-reply excluded)
awaiting_replyWhat you sent that nobody answered
mail_statistics, top_sendersVolume, busiest days and hours, categories, who writes most
list_accounts, list_mailboxesAccounts, folders and counts
list_attachments, save_attachment, export_messagesAttachments to disk, messages to .eml or Markdown
get_message_sourceRaw headers, e.g. to check authentication or unsubscribe links
move_messages, update_messages, trash_messages, create_mailboxArchive and file, read/unread and flags, Trash; previews with dry_run
undo_changeLists recent moves, trashes, flag and rule changes and puts one back
snooze_messages, list_scheduled, cancel_scheduledHide messages until a day, then back to the inbox unread; see or cancel snoozes and scheduled sends
compose_email, reply_to_message, forward_messageDraft (default), open for review, send, or send later (send_at); plain text or formatted HTML (replies and forwards quote the original with its formatting)
list_drafts, send_draftUnsent drafts with their recipients; send one as it is
unsubscribeLeaves mailing lists: one-click for signed senders, an unsubscribe email, or the link to open
open_in_mail, check_new_mail, body_indexShow a message in Mail, fetch new mail, manage the search index

Message ids are Mail's own; a moved message gets a new id, which move_messages returns.

The skills are also served as MCP prompts (in Claude Code: /mcp__apple-mail__mail-triage and so on), and two resources, mail://inbox/unread and mail://needs-response, notify subscribed clients when mail changes. Snoozes and scheduled sends are carried out by the menu bar app, so it has to be running for them.

Skills

Pick them in the panel's Claude tab: each one shows what it does and whether it's installed.

SkillOr just ask…
/mail-triage"What needs my attention in my mail today?"
/mail-inbox-zero"Help me get my inbox to zero."
/mail-follow-up"Who hasn't replied to me this week?"
/mail-reply-writer"Reply to Anna's email about the roadmap."
/mail-newsletter-cleanup"I get too many newsletters, clean that up."
/mail-research"Find the confirmation code from my hotel booking."
/mail-attachments"Save all invoices from 2025 into Documents/Invoices."
/mail-weekly-report"How was my week in email?"

Claude picks the right skill from your request; in Claude Code you can also start one with its slash command. In the Claude app, skills are used automatically once uploaded.

They follow the same rules as the server: drafts before sending, previews before bulk changes, and quoting as little of your mail as possible. When the app updates, skills you installed update with it.

You stay in control

[The approval window: one email shown in full with a 1 of 3 pager, two more waiting below]

When Claude wants to send, a small window pops up (and the panel's Mail tab shows a count). With several emails waiting you review them one by one; nothing goes out without a click on Send.

  • Send policy (Settings): Ask me first (the default) shows each outgoing email (recipients, subject, text, attachments) for Send or Don't Send, and refuses to send while the menu bar app is not running; Send right away; or Never send (drafts only).
  • Signed approvals: your answers and scheduled sends are signed with a key in your Keychain, so another program cannot approve a send by writing a file.
  • Drafts by default: compose, reply and forward save to Drafts unless Claude is asked to send.
  • Batch limits: at most 50 messages per change by default; dry_run previews moves and trash. Optionally, moves and trashes above a size you choose wait for your OK in the menu bar app.
  • Undo: every move, trash and flag change can be put back with undo_change (the journal keeps Message-IDs and mailbox names only, owner-only).
  • Unsubscribing follows the send policy: with Ask me first you confirm each one. One-click requests go only to senders whose DKIM signature verified for their own domain; for anyone else you get the link.
  • No permanent deletion: Trash only, never emptied.
  • Files: saved attachments can't go into startup, config or system folders; secrets (~/.ssh, .env, keychains, browser profiles, Mail's own data) can't be attached. Optional allowlists in Settings.
  • Read-only mode: apple-mail-mcp --read-only offers only the reading tools.
  • Activity: every tool call is listed in the Mail tab (never with message content).
  • Search index without text: Mail's data is behind Full Disk Access; the body index in ~/Library/Application Support/apple-mail-mcp is not, so it stores no words, only keyed hashes (no order, no positions). The key ("Apple Mail MCP search index key") is in your Keychain, in an access group only the app and its server can claim (the Claude extension, which runs the server on its own, keeps its key in the login Keychain), so another app cannot use the index, and even with the key it could only test guessed words. The file is owner-only and kept out of Time Machine. If the key is missing or refused, body searches scan messages instead.

Benchmarks

The same questions to every Apple Mail MCP server in the MCP registry, over MCP stdio like a client sees it, on an Apple M1 (16 GB) with a real mailbox (account of 80,551 messages, 1,336 in its inbox), version 0.6.0. Median of 25 warm runs each. The servers that read Mail's files are called in turns, one call each per round, so a change in the machine's load hits them all alike. Full tables, with response sizes: Benchmarks/compare-mcp-servers.md.

QuestionApple Mail MCPmgcrea 1.28.0imdinu 0.5.0parasxos 1.8.0
List accounts0.4 ms0.5 ms1.8 ms–
Unread counts per mailbox2.1 ms7.05 s258 ms76 ms
Latest 20 inbox messages2.8 ms2.85 s20 ms104 ms
Subject search, inbox1.2 ms31 ms18 ms139 ms
Subject search, all mailboxes3.4 ms6.8 ms24 ms258 ms
Sender search, inbox2.8 ms3.5 ms23 ms78 ms
Body text search, inbox2.1 ms1.17 s6.5 ms112 ms
Conversation thread3.3 ms29 ms–13 ms
Top senders, 30 days1.9 ms3.1 ms––
Statistics · awaiting reply · needs response · overview1.1–11 ms–––

– : the server has no tool for that question.

The servers that drive Mail with AppleScript, measured the same way (0.6.0, one call per question for every server, Benchmarks/compare-servers.md), take seconds where Apple Mail MCP takes milliseconds, and keep Mail busy while they do: ipsupport-llc 1.6.1 answered in 0.17–11 s, the Python mcp-apple-mail in 8–84 s; on this mailbox jakobfigur 0.6.2 and jayvee6 0.1.0 failed, kiki830621 2.0.1 timed out after 3 minutes, and the questions the others could not answer timed out or errored inside Mail. Apple Mail MCP answered all 13 in 0.8–17 ms.

Without the body index, a body search scans recent messages in parallel instead (27 ms here). Building the index for the whole mailbox takes about a minute.

Reproduce: Scripts/bench-servers.sh fetches and prepares the other servers (pinned versions, release files checked against the registry's SHA-256), then runs mail-bench compare; --fresh-index gives our server a throwaway index so no Keychain prompt can hold up the run. mail-bench store gives in-process timings on your mail, and mail-bench synthetic --messages 100000 a generated mailbox that involves no personal data. CI runs the synthetic benchmark on every push.

Command line

text
apple-mail-mcp [--read-only] [--write-dir DIR] [--attach-dir DIR]   serve MCP over stdioapple-mail-mcp remote [--port N] [--listen ADDR] [--address URL]    serve MCP over HTTP with OAuth (claude.ai)apple-mail-mcp doctor                                               check permissions, data, indexapple-mail-mcp index [--rebuild] [--prune]                          build or update the body indexapple-mail-mcp install | uninstall [claude-code | claude-desktop]   register with Claudeapple-mail-mcp skills [list | install | uninstall | export DIR]     manage the Claude skillsapple-mail-mcp call <tool> '{"json": "arguments"}'                  run one tool

Settings live in ~/Library/Application Support/apple-mail-mcp/settings.json and are shared by the app and every server (changes apply immediately).

How it works

text
claude.ai ──HTTPS──▶ tunnel ──HTTP──▶ apple-mail-mcp remote (OAuth, one session per connection) ─┐Claude ──MCP (stdio)──▶ apple-mail-mcp ─┬─ reads ──▶ ~/Library/Mail/V10/MailData/Envelope Index (SQLite, read-only)                                        │            .emlx files · local hashed full-text index (FTS5)                                        └─ writes ─▶ Apple Events ─▶ Mail.app ─▶ your accountsApple Mail MCP.app (menu bar) ── settings · approvals · activity · index updates · Claude setup · updates
  • MailStore reads Mail's index (accounts, mailboxes, Gmail labels, flags, categories, threads) and parses messages (MIME, charsets, HTML to text) without Mail running.
  • MailAutomation sends Apple Events built from Mail's scripting dictionary (no AppleScript), addressing messages by id, serialized across processes.
  • MailMCPKit defines the tools, policies, approvals and skills; MailMCPBar is the SwiftUI menu bar app (Liquid Glass on macOS 26).

Development

sh
git clone https://github.com/mp-consulting/apple-mail-mcp && cd apple-mail-mcpswift test --scratch-path ~/Library/Caches/apple-mail-mcp-build   # 120+ tests on synthetic mailboxesScripts/build-app.sh --install                                     # build, sign, install, launch the app

Requires Xcode 26 (Swift 6.2) for the app; the server builds with Swift 6.1. See CLAUDE.md for the architecture and the Mail quirks the code relies on, and CHANGELOG.md for releases.

Credits

Inspired by patrickfreyer/apple-mail-mcp, whose tool set and path-guard rules shaped this one.

License

MIT © 2026 Mickael Palma. Not affiliated with Apple. Apple Mail is a trademark of Apple Inc.

来源:README.md,提交 ab5dbb4

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

12
  1. v0.7.3最新Nov 7, 2026
  2. v0.7.1Oct 30, 2026
  3. v0.7.0Oct 29, 2026
  4. v0.6.8Oct 22, 2026
  5. v0.6.6Oct 21, 2026
  6. v0.6.4Oct 21, 2026
  7. v0.6.2Oct 20, 2026
  8. v0.6.1Oct 20, 2026
  9. v0.6.0Oct 20, 2026
  10. v0.5.0Oct 19, 2026
  11. v0.4.3Oct 18, 2026
  12. v0.3.2Oct 18, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分