
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 分