关于 Apple Mail MCP
Apple Mail MCP 是用于在 macOS 上操作 Apple Mail 的本地 MCP 服务,支持邮件上下文、草稿、审批队列和跟进;发送邮件及更改消息均须用户批准。
主要功能
- 01搜索并读取邮件
- 02创建可见的邮件草稿
- 03发送和修改须经批准
- 04将待发邮件加入审核队列
- 05保存本地联系人上下文
- 06生成简报和跟进列表
适用场景
- 01查看收件箱并准备回复
- 02将草稿加入队列以供人工批准
- 03跟踪联系人承诺和后续事项
- 04准备每日邮件行动简报
MCP 相关
通过本地 stdio 向 MCP 客户端提供 Apple Mail 工具,包括读取、草稿、审批流程和受控的消息修改。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
26收录的工具列表 · 更新于 2 周前
此工具无需参数。
详细介绍
Apple Mail MCP
适用于 macOS 上 Apple Mail 的本地 stdio Model Context Protocol 服务。
它只与用户 Mac 上已配置的 Apple Mail 应用交互。无需 IMAP/SMTP 密码,也不会开放网络端口。
安全模型
- 邮箱和邮件工具默认仅供读取。
create_draft会在 Apple Mail 中打开一封未发送且可见的草稿。send_email要求user_approved: true。MCP 客户端应仅在用户批准确切邮件内容后调用它。- 标记、加旗标和移动等邮件更改也要求
user_approved: true。 - 动态内容作为参数传递给
osascript,而不是插入 AppleScript 源代码。 - 每项写入操作都会在本地生成一条仅含元数据的 JSONL 审计记录。邮件正文和凭据绝不会写入该日志。
- 批准收件箱和关系上下文仅存储在下文所述的本地 JSON 数据存储中。
MCP 服务本身在本地运行。不过,MCP 客户端可能会将工具结果发送给 AI 模型或其他服务。仅将邮件内容交给你信任的客户端和模型。
要求
- 已配置 Apple Mail 的 macOS
- Node.js 20+
- 授予宿主应用(例如 Codex 或 Terminal)在 系统设置 → 隐私与安全性 → 自动化 中控制 Mail 的权限
安装
npm(推荐)
npm install -g @jakobf1/apple-mail-mcp
然后使用已安装的命令配置 MCP 客户端:
{
"mcpServers": {
"apple-mail": {
"command": "apple-mail-mcp"
}
}
}
从源代码安装
git clone https://github.com/YOUR_ACCOUNT/apple-mail-mcp.git
cd apple-mail-mcp
npm install
npm run build
添加到 MCP 客户端
如果你是从源代码安装而非通过 npm 安装,请通过 stdio 使用编译后的服务:
{
"mcpServers": {
"apple-mail": {
"command": "node",
"args": ["/absolute/path/to/apple-mail-mcp/dist/index.js"]
}
}
}
保存配置后,重启 MCP 客户端。首次调用时会触发 macOS 常规的自动化权限提示。
可选发件人策略
若要仅允许从特定的已配置 Apple Mail 地址发送邮件,请在启动服务时配置以逗号分隔的允许列表:
{
"env": {
"APPLE_MAIL_MCP_ALLOWED_SENDERS": "[email protected]"
}
}
默认情况下,写入操作的审计元数据会存储在本地 ~/.apple-mail-mcp/audit.jsonl。设置 APPLE_MAIL_MCP_AUDIT_LOG 可改用其他本地路径。
面向 AI 的本地工作区
默认情况下,批准收件箱和关系上下文共用 ~/.apple-mail-mcp/data.json 这一份本地 JSON 数据存储。其中包含排队中的草稿正文以及你主动保存的联系人备注,因此应将其视为私密邮件数据。设置 APPLE_MAIL_MCP_DATA_STORE 可改用其他本地路径。
APPLE_MAIL_MCP_DRY_RUN=true 会验证邮件,但阻止实际发送。你还可以通过 APPLE_MAIL_MCP_ALLOWED_RECIPIENTS、APPLE_MAIL_MCP_ALLOWED_RECIPIENT_DOMAINS 和本地时间窗口(例如 APPLE_MAIL_MCP_SENDING_WINDOW=09:00-18:00)限制收件人。
工具
| 工具 | 功能 |
|---|---|
list_accounts | 列出已配置的 Apple Mail 账户和发件人地址。 |
list_mailboxes | 列出账户中的顶层邮箱。 |
list_messages | 返回收件箱或邮箱摘要,不包含邮件正文。 |
search_messages | 按发件人或主题搜索近期邮件。 |
get_message | 根据 ID 读取一封邮件的正文,并可配置长度上限。 |
create_draft | 打开一封可见但尚未发送的外发邮件。 |
send_email | 将已批准的邮件交由 Apple Mail 发送。 |
create_reply_draft | 打开一封可见的回复草稿,并保留 Apple Mail 对回复收件人和主题的处理方式。 |
set_message_read_status | 将一封已批准的邮件标记为已读或未读。 |
set_message_flag_status | 为一封已批准的邮件添加或移除标记。 |
move_message | 将一封已批准的邮件移至其他邮箱。 |
get_audit_log | 读取仅包含元数据的本地审计记录。 |
get_send_policy / preview_send | 检查或验证当前发送保护措施,不会实际发送。 |
queue_email_for_approval / list_approval_queue | 在本地保存拟发送邮件,供人工审核。 |
approve_queued_email / discard_queued_email | 执行明确批准的队列决策。 |
save_contact_context / get_contact_context | 维护私密的关系备注、语气、承诺和跟进日期。 |
get_contact_brief | 将已保存的联系人资料与近期收件箱摘要合并。 |
list_follow_up_radar | 显示需要进行经人工批准的跟进的已保存联系人。 |
get_work_mode / set_work_mode | 在收件箱清零、销售跟进、支持和深度工作等专注策略之间切换。 |
save_thread_summary | 使用源邮件 ID 保存经用户批准的本地邮件线程摘要。 |
get_daily_briefing | 将未读邮件、待处理审批和到期跟进合并为安全的每日行动简报。 |
范围与非目标
本项目仅在本地运行。它不是 SMTP 服务,不管理凭据,也不会绕过 macOS 隐私提示。它有意不包含删除、附件导出、后台计划任务和自动发送功能。
发布与注册表元数据
此软件包以 @jakobf1/apple-mail-mcp 发布。其 MCP Registry 标识为 io.github.jakobfigur/apple-mail-mcp;便携式安装元数据请参见 server.json。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。