
Apple Mail MCP
io.github.jayvee6由 GitHub 帳號 jayvee6 發布v0.1.0更新於 Oct 24, 2026
LLM access to Apple Mail and iCloud via AppleScript. Read, search, compose, reply, flag and delete.
概覽
本機 macOS MCP 伺服器,透過 AppleScript 操作 Apple Mail,讓助理讀取、搜尋、寄送、歸檔與分流郵件。
- 可以做什麼
- 列出帳號與信箱、建立資料夾,並分頁瀏覽或讀取郵件
- 依寄件者、主旨或日期範圍搜尋郵件,取得完整標頭與內文
- 撰寫、回覆、移動、封存、標為垃圾、加旗標、標為已讀或未讀、刪除郵件,並可依篩選條件批次移動
- 建立、列出與刪除原生 Mail 規則,將寄件者網域歸檔到指定資料夾
- 透過本機 AI 模型對郵件做摘要、分類、起草回覆與批次分流
- 從選用的 MailKit 橋接擴充取得即時新郵件事件
- 適用情境
- 適合郵件存放在 Apple Mail 或 iCloud(沒有可呼叫的網頁 API)的 Mac 使用者,希望助理在本機直接搜尋、整理、起草與分流真實收件匣,而不經雲端中介。
- 執行需求
- 需要 macOS,Apple Mail 已開啟並至少設定一個帳號,以及 Node.js 18+ 在本機執行此 npm 套件。需在 macOS 自動化設定中允許 node 或終端機控制 Mail。選用的本機 AI 工具需要 LM Studio 或任何相容 OpenAI 的伺服器,透過 APPLE_MAIL_AI_PROVIDER、APPLE_MAIL_AI_ENDPOINT、APPLE_MAIL_AI_MODEL 與 APPLE_MAIL_AI_API_KEY 設定。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 Apple Mail MCP,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
apple-mail-mcp
The only way to give Claude (or any LLM) access to Apple Mail and iCloud.
Gmail and Outlook have APIs. iCloud doesn't. If you're a Mac user whose email lives in Apple Mail — iCloud, iCloud+, or any account synced through it — there's no web API an LLM can call. This server bridges that gap using AppleScript on your local machine.
It gives Claude full control over Apple Mail: read, search, compose, reply, move, flag, and delete messages using natural language, against your real inbox, with no cloud intermediary.
Built on AppleScript via osascript, with an optional MailKit extension for real-time new-mail events.
Tools
Requirements
- macOS (tested on Sonoma / Sequoia / macOS 26)
- Apple Mail open and configured with at least one account
- Node.js 18+
- LM Studio (optional) — for local AI tools; any OpenAI-compatible server works
Installation
npx (recommended)
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
Restart Claude Desktop, then ask: "What folders do I have in my mail?"
Bootstrap script
Clones the repo, builds it, and patches the Claude config automatically:
Manual
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
Use which node to get the full path to your Node binary. Restart Claude Desktop.
Automation Permission
The first time you use a mail tool, macOS will ask whether to allow node to control Mail. Click Allow. If you accidentally deny it, go to System Settings → Privacy & Security → Automation and re-enable it for your terminal or Node.js runtime.
Local AI (optional)
The AI tools run against any local LLM via LM Studio or any OpenAI-compatible server. Email data never leaves your machine with the default config.
Configure via environment variables in claude_desktop_config.json:
Privacy note: If you point
APPLE_MAIL_AI_ENDPOINTat a remote server (e.g. OpenAI), full email content will be sent to that server. The server blocks this by default — you must setAPPLE_MAIL_AI_ALLOW_REMOTE=1to acknowledge and enable it.
Companion Skill — Email Compose Review
The skill/SKILL.md file in this repo is a Claude skill that adds a multi-agent review pipeline to every email Claude drafts. Before opening a compose window, Claude runs the draft through five parallel reviewers:
An arbiter synthesizes the reviews into a revised draft and changelog. Claude shows you the result and waits for your approval before opening the draft in Mail. send: true is never used for LLM-drafted email — you send from Mail yourself.
To install the skill in Claude Code, copy it into your skills folder:
How It Works
Message references are composite keys that uniquely identify a message without a fragile integer index:
Every list/search result includes a message_ref. Tools that operate on individual messages (get_email, reply_email, move_email, etc.) take this ref as input. The account and mailbox components scope the AppleScript lookup to the right mailbox; the RFC 2822 ID is the stable identifier. Mail's whose predicate makes the per-message lookup O(1).
MailKit Bridge (optional)
The MailKitBridge/ directory contains an Xcode project for a Mail extension that fires a local HTTP POST to localhost:27182/event when new messages arrive. This populates get_pending_events in real time rather than requiring a manual poll.
The MCP server starts the HTTP listener on startup regardless — it's a no-op if the extension isn't installed.
To build and install the extension: open MailKitBridge/MailKitBridge.xcodeproj in Xcode, build the MailKitBridgeApp scheme, run the app once to register the extension, then enable it in Mail → Settings → Extensions.
Development
AppleScript files live in scripts/applescript/ and are invoked directly via osascript — no compilation needed. You can test them standalone:
Security Notes
- The HTTP bridge binds to
127.0.0.1only — not reachable from outside the machine. - Script names are validated against
path.basename()before use to prevent path traversal. - Arguments are passed to
osascriptviaexecFile(not a shell), so there is no shell-injection surface. - AppleScript calls time out after 30 seconds to prevent hangs if Mail is frozen or showing a permission prompt.
- Email content in AI prompts is enclosed in XML delimiters (
<email>…</email>) to guard against prompt-injection attacks in message bodies. - Remote AI endpoints are blocked by default — set
APPLE_MAIL_AI_ALLOW_REMOTE=1to explicitly opt in to sending email data off-device.
License
MIT
來源:README.md,提交 bc39b17
工具
0版本歷史
1- v0.1.0最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分