macos邮件mcp
](https://www.npmjs.com/package/macos-mail-mcp)  ](https://nodejs.org/) 
用于Apple Mail(macOS Mail.app)的MCP服务器,通过AppleScript将Claude连接到您的电子邮件。提供20种阅读、搜索、管理和撰写电子邮件的工具。
支持的帐户
适用于 在macOS Mail.app中配置的任何电子邮件帐户 --iCloud、Gmail、Outlook/Exchange、雅虎、Fastmail、自定义IMAP/POP等。无需更改代码;只需在Mail.app中添加帐户,即可通过所有20个工具使用。
需求
- 已配置Mail.app的macOS(至少有一个电子邮件帐户)
- Node.js 18+
- 克劳德代码或克劳德桌面应用程序
安装
快速安装(npm)
最简单的方法——不需要克隆或构建:
克劳德代码(CLI):
claude mcp add macos-mail-mcp -- npx macos-mail-mcp克劳德桌面:
添加 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"macos-mail-mcp": {
"command": "npx",
"args": ["macos-mail-mcp"]
}
}
}添加配置后重新启动Claude桌面应用程序。
从源代码安装
如果您更喜欢在本地构建或想要做出贡献:
git clone https://github.com/marius-cetanas/macos-mail-mcp.git
cd macos-mail-mcp
npm install
npm run build然后用Claude Code注册:
claude mcp add --transport stdio --scope user macos-mail-mcp -- node /path/to/macos-mail-mcp/build/index.js或添加到Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"macos-mail-mcp": {
"command": "node",
"args": ["/path/to/macos-mail-mcp/build/index.js"]
}
}
}macOS权限
首次使用时,macOS将提示授予控制Mail.app的自动化权限。首选 系统设置>隐私和安全>自动化 为了管理这一点。
工具
账目(2)
| 工具 | 说明 |
|---|---|
list_accounts | 列出所有邮件帐户(名称、类型、已启用、电子邮件) |
get_account_detail | 获取完整的帐户详细信息(服务器、端口、SSL、邮箱计数) |
邮箱(3)
| 工具 | 说明 |
|---|---|
list_mailboxes | 列出一个帐户或所有帐户的邮箱 |
get_mailbox_info | 获取邮箱详细信息(邮件数、未读数) |
create_mailbox | 创建新邮箱(顶级或嵌套在父级下) |
留言(8)
| 工具 | 说明 |
|---|---|
list_messages | 列出带有分页(限制/偏移)和可选日期过滤(之后/之前)的消息 |
get_message | 获取完整的邮件内容、标题、收件人和附件。邮箱名称是可选的--省略以搜索帐户中的所有邮箱。 |
search_messages | 按主题、发件人或内容搜索,可选择日期过滤(在/之前)。结果包括邮箱名称。 |
move_message | 将邮件移动到其他邮箱 |
move_messages | 在单个操作中将多封邮件批量移动到不同的邮箱 |
delete_message | 删除邮件(移至垃圾箱) |
flag_message | 设置/清除带有可选颜色索引的标志(0-6) |
mark_read | 将邮件标记为已读或未读 |
附件(4)
| 工具 | 说明 |
|---|---|
list_attachments | 列出带有文件名、MIME类型、大小和下载状态的附件 |
save_attachment | 将特定附件保存到磁盘 |
save_all_attachments | 保存邮件中的所有附件 |
read_attachment | 内联读取基于文本的附件内容(.txt、.csv、.json、.html、.md、.xml、.log) |
作曲(3)
| 工具 | 说明 |
|---|---|
send_message | 发送一封新电子邮件,其中包含可选的抄送、密件抄送和附件 |
reply_to_message | 回复或全部回复一条消息 |
forward_message | 将邮件转发给新收件人 |
建筑
src/
index.ts # MCP server entry point
types.ts # TypeScript interfaces
utils.ts # Shared utilities (sanitize, expandTilde, toolError)
bridge/
applescript-runner.ts # AppleScript execution engine
escape-for-json.applescript # Shared JSON escaping handler (auto-prepended)
domains/
accounts/
accounts.tools.ts # Tool registration & handlers
scripts/*.applescript # AppleScript templates
mailboxes/
mailboxes.tools.ts
scripts/*.applescript
messages/
messages.tools.ts
scripts/*.applescript
compose/
compose.tools.ts
scripts/*.applescript
tests/
utils.test.ts # Shared utility tests
bridge/applescript-runner.test.ts # Bridge unit tests
domains/*/ # Domain handler tests域驱动的分层架构:
- 工具层 --使用Zod模式注册MCP工具,验证输入,调用网桥
- 架桥车 --读取AppleScript模板,替换参数(使用注入安全转义),在共享模板前添加
escapeForJson处理程序,通过执行osascript,解析JSON输出 - 脚本层 --AppleScript模板
{{param}}占位符,返回JSON字符串。这escapeForJson处理程序在中定义一次bridge/escape-for-json.applescript并在运行时自动添加到每个脚本中。
已知限制
AppleScript基金会
此MCP通过AppleScript与Mail.app通信,AppleScript是一个稳定但传统的自动化层。Mail.app的脚本字典多年来基本没有变化,但未来的macOS更新可能需要调整脚本。这是这种方法固有的权衡——AppleScript是唯一官方支持的无需编写本机插件即可自动化Mail.app的方法。
演出
- 大型邮箱搜索 —
search_messages使用Mail.app的whose子句,它执行线性扫描,并在应用限制之前将所有匹配的消息加载到内存中。搜索方式content非常大的IMAP邮箱(50K+封邮件)上的(邮件正文)可能会很慢或超时。更喜欢按以下方式搜索subject或sender在可能的情况下,缩小结果范围accountName和mailboxName. - IMAP附件下载 --IMAP帐户上的附件可能无法在本地下载。这些工具检查下载状态,并在需要首先在Mail.app中打开附件时清楚地报告。
消息ID
Mail.app的内部消息ID是不稳定的——当应用程序重新索引时,或者在移动/删除操作后,它们可能会发生变化。这意味着多步骤的工作流程(例如,列表→ flag → move)应该重新获取突变之间的消息ID。对于单步操作,这不是问题。
提供商特定行为
- 交易所账户 --服务器详细信息(主机名、端口、SSL)不会通过Exchange/EWS帐户的AppleScript公开。邮箱和邮件操作正常。
- Gmail标签 —
move_message添加目标标签,但可能不会删除原始标签(Gmail使用标签,而不是文件夹)。
其他限制
- 回复/转发附件 --AppleScript不支持在回复/转发邮件中添加新附件(Mail.app限制)。
- MIME类型检测 --当Mail.app的原生MIME类型属性返回时,使用基于扩展的回退
missing value. - 邮箱管理 --支持创建邮箱,但无法通过AppleScript删除和重命名邮箱(Mail.app限制)。
路线图
get_thread--检索对话线程中的所有消息。Mail.app没有原生线程支持;实现需要解析RFC标头(Message-ID,In-Reply-To,References)这在大邮箱上很慢。计划用于v2。
发展
npm run dev # Watch mode (TypeScript compiler)
npm test # Run tests
npm run test:watch # Watch mode tests
npm run build # Build for production许可证
麻省理工学院
