mcpField
A
Apple Mail MCP

Apple Mail MCP

本地服务
github.com/jayvee6通信协作215 周前更新

关于 Apple Mail MCP

Apple Mail MCP 通过本机 AppleScript 让 macOS 上的 AI 助手操作 Apple Mail,适用于邮件账户同步到 Mail 的用户,并可选用本地 AI 处理邮件。

主要功能

  1. 01读取、搜索和整理邮件
  2. 02撰写、回复及发送邮件
  3. 03管理标记、规则和文件夹
  4. 04本地 AI 摘要、分类与起草
  5. 05可选 MailKit 新邮件事件桥接

适用场景

  1. 01在对话中查找并阅读邮件
  2. 02批量分类收件箱并按优先级排序
  3. 03起草回复并在发送前审核
  4. 04将匹配邮件移动到指定文件夹

MCP 相关

MCP 服务将 Apple Mail 操作作为工具提供给 AI 客户端,通过本机 AppleScript 执行;可选 MailKit 扩展可将新邮件事件送入服务。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"jayvee6-apple-mail": {
"command": "npx",
"args": [
"-y",
"@jdot6/apple-mail-mcp"
]
}
}
}
启动命令npx -y @jdot6/apple-mail-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@jdot6/apple-mail-mcp0.1.0

工具

13

收录的工具列表 · 更新于 2 周前

此工具无需参数。

详细介绍

apple-mail-mcp

apple-mail-mcp 图标

这是让 Claude(或任何大模型)访问 Apple Mail 和 iCloud 的唯一方式。

Gmail 和 Outlook 都有 API,iCloud 却没有。如果你是 Mac 用户,邮件都在 Apple Mail 中——无论是 iCloud、iCloud+,还是通过 Apple Mail 同步的其他账户——都没有可供大模型调用的 Web API。此服务使用你本机上的 AppleScript 弥合了这一差距。

它让 Claude 可以全面控制 Apple Mail:通过自然语言读取、搜索、撰写、回复、移动、标记和删除邮件,直接操作你的真实收件箱,无需经过云端中介。

此服务通过 osascript 基于 AppleScript 构建,并可选提供 MailKit 扩展,用于实时接收新邮件事件。


工具

工具描述
list_folders列出所有账户及其邮箱
create_folder在账户中创建新邮箱/文件夹(幂等)
list_emails分页列出邮箱中的邮件(按时间从新到旧)
get_email读取邮件的完整标头和正文
search_emails跨邮箱按发件人、主题和日期范围筛选
compose_email创建草稿或立即发送新邮件
reply_email回复邮件,打开为草稿或立即发送
move_email将邮件移动到任意邮箱
move_matching将所有符合筛选条件的邮件批量移动到某个邮箱
archive_email移动到 Archive(iCloud)或 All Mail(Gmail)
move_to_junk移动到 Junk(iCloud)或 Spam(Gmail)
flag_email设置或清除邮件标记
mark_read将邮件标记为已读或未读
delete_email移动到 Deleted Messages(iCloud)或 Trash(Gmail)
create_rule创建原生 Mail 规则,将发件人域名归档到文件夹(也可选择整理已有邮件)
list_rules列出所有 Mail 规则及其目标文件夹和匹配的发件人域名
delete_rule按名称删除 Mail 规则
get_pending_events从 MailKit 桥接程序获取实时新邮件事件并清空队列
summarize_email通过本地 AI 用 2-3 句话概述邮件
classify_email通过本地 AI 按类别、优先级和是否需要采取行动进行分类
draft_reply通过本地 AI 起草回复正文(发送前请审核)
triage_inbox对最多 20 封邮件进行批量分类,并按优先级排序

要求

  • macOS(已在 Sonoma/Sequoia/macOS 26 上测试)
  • Apple Mail 已打开并配置至少一个账户
  • Node.js 18+
  • LM Studio(可选)——用于本地 AI 工具;任何兼容 OpenAI 的服务端均可

安装

npx(推荐)

添加到 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "apple-mail": {
      "command": "npx",
      "args": ["-y", "@jdot6/apple-mail-mcp"]
    }
  }
}

重启 Claude Desktop,然后询问:“我的邮件中有哪些文件夹?”

引导脚本

克隆此仓库、构建项目并自动修改 Claude 配置:

curl -fsSL https://raw.githubusercontent.com/jayvee6/apple-mail-mcp/master/install.sh | bash
手动安装
git clone https://github.com/jayvee6/apple-mail-mcp.git
cd apple-mail-mcp
npm install && npm run build

添加到 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "apple-mail": {
      "command": "/opt/homebrew/bin/node",
      "args": ["/path/to/apple-mail-mcp/dist/index.js"]
    }
  }
}

使用 which node 获取 Node 二进制文件的完整路径。重启 Claude Desktop。

自动化权限

首次使用邮件工具时,macOS 会询问是否允许 node 控制 Mail。点击 允许。如果不小心拒绝了,请前往 系统设置 → 隐私与安全性 → 自动化,为你的终端或 Node.js 运行时重新启用权限。


本地 AI(可选)

AI 工具可通过 LM Studio 或任何兼容 OpenAI 的服务运行任意本地 LLM。使用默认配置时,邮件数据不会离开你的设备。

在 claude_desktop_config.json 中通过环境变量进行配置:

{
  "mcpServers": {
    "apple-mail": {
      "command": "npx",
      "args": ["-y", "@jdot6/apple-mail-mcp"],
      "env": {
        "APPLE_MAIL_AI_PROVIDER": "lmstudio",
        "APPLE_MAIL_AI_ENDPOINT": "http://localhost:1234",
        "APPLE_MAIL_AI_MODEL": "gemma-4-it"
      }
    }
  }
}
变量默认值说明
APPLE_MAIL_AI_PROVIDERlmstudiolmstudio | openai | foundation | none
APPLE_MAIL_AI_ENDPOINThttp://localhost:1234AI 服务的基础 URL
APPLE_MAIL_AI_MODELgemma-4-it模型标识符
APPLE_MAIL_AI_API_KEY(none)远程提供方的 Bearer 令牌
APPLE_MAIL_AI_ENRICH_EVENTS(off)设置为 1,以自动分类新的邮件事件
APPLE_MAIL_AI_ALLOW_REMOTE(off)设置为 1,以允许使用非 localhost 的 AI 端点

隐私提示: 如果将 APPLE_MAIL_AI_ENDPOINT 指向远程服务(例如 OpenAI),完整邮件内容将发送到该服务。服务默认会阻止此操作——你必须设置 APPLE_MAIL_AI_ALLOW_REMOTE=1,以确认并启用此功能。


配套技能 — 邮件撰写审阅

此仓库中的 skill/SKILL.md 文件是一项 Claude 技能,可为 Claude 撰写的每封邮件添加多 Agent 审阅流水线。打开撰写窗口前,Claude 会让草稿经过五个并行审阅器的检查:

审阅器检查内容
水文检测器AI 写作痕迹、填充语、企业套话
文案编辑拼写、语法、标点
主动语态将被动结构改为主动结构
正确性名称、日期、事实是否符合上下文
逻辑与清晰度请求是否明确、结构是否合理、长度是否恰当

仲裁器会综合审阅结果,生成修订后的草稿和变更日志。Claude 会向你展示结果,并等待你批准后再在 Mail 中打开草稿。LLM 撰写的邮件绝不会使用 send: true——你需要自行从 Mail 发送。

要在 Claude Code 中安装此技能:

/skill install /path/to/apple-mail-mcp/skill/SKILL.md

工作原理

Claude ──stdio──▶ MCP server (Node.js)
                      │
                      ├── runScript("list_messages", [...args])
                      │        │
                      │        └── osascript scripts/applescript/list_messages.applescript
                      │                 │
                      │                 └── Apple Mail (AppleScript dictionary)
                      │
                      └── HTTP bridge  ◀── MailKit extension (optional)
                          localhost:27182

邮件引用是组合键,可在不依赖易变的整数索引的情况下唯一标识一封邮件:

{account}::{mailbox}::{RFC 2822 Message-ID}

e.g.  iCloud::INBOX::<[email protected]>

每个列表或搜索结果都包含一个 message_ref。针对单封邮件操作的工具(get_email、reply_email、move_email 等)会将此引用作为输入。账户和邮箱组件会将 AppleScript 查找范围限定在正确的邮箱中;RFC 2822 ID 则是稳定标识符。Mail 的 whose 谓词使得针对单封邮件的查找复杂度为 O(1)。


MailKit Bridge(可选)

MailKitBridge/ 目录包含一个 Xcode 项目,其中的 Mail 扩展会在收到新邮件时向 localhost:27182/event 发送本地 HTTP POST 请求。这会实时填充 get_pending_events,无需手动轮询。

无论扩展是否安装,MCP 服务都会在启动时启动 HTTP 监听器;若扩展未安装,则不会执行任何操作。

要构建并安装该扩展:在 Xcode 中打开 MailKitBridge/MailKitBridge.xcodeproj,构建 MailKitBridgeApp scheme,运行应用一次以注册扩展,然后在 Mail → Settings → Extensions 中启用扩展。


开发

npm run dev          # run with tsx (no build step)
npm run build        # compile TypeScript → dist/
npm run typecheck    # type-check without emitting

AppleScript 文件位于 scripts/applescript/ 中,并通过 osascript 直接调用——无需编译。你可以单独测试这些文件:

osascript scripts/applescript/list_folders.applescript
osascript scripts/applescript/list_messages.applescript "iCloud" "INBOX" "1" "5"

安全说明

  • HTTP 桥接仅绑定到 127.0.0.1 — 无法从本机外部访问。
  • 使用前会通过 path.basename() 验证脚本名称,以防止路径遍历。
  • 参数通过 execFile 传递给 osascript(而非 shell),因此不存在 shell 注入风险。
  • AppleScript 调用会在 30 秒后超时,以防 Mail 冻结或显示权限提示时一直挂起。
  • AI 提示词中的电子邮件内容会用 XML 分隔符(<email>…</email>)括起来,以防邮件正文中的提示词注入攻击。
  • 默认会阻止远程 AI 端点 — 设置 APPLE_MAIL_AI_ALLOW_REMOTE=1,即可明确选择将电子邮件数据发送到设备之外。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。