邮件自动化服务

通过JXA(JavaScript for Automation)为macOS上的Apple Mail提供MCP服务器,支持编程方式读取、搜索和撰写邮件。

  • by farmerajf
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 farmerajf/apple-mail-mcp

使用说明

苹果邮件MCP服务器

通过JXA(用于自动化的JavaScript)在macOS上为Apple Mail提供MCP服务器。通过模型上下文协议以编程方式阅读、搜索和撰写电子邮件。

需求

  • 已配置Apple Mail的macOS
  • Node.js 18+
  • 自动化权限:系统设置>隐私和安全>自动化>允许您的终端/应用程序控制邮件

设置

npm install
npm run build

创建一个 config.json 在项目根目录中:

{
  "port": 3032,
  "apiKey": "your-secret-key",
  "draftMode": false,
  "excludeMailboxes": ["Junk", "Deleted Messages"]
}

用法

Stdio(适用于克劳德桌面/克劳德代码)

node dist/index.js --stdio

Claude桌面配置(claude_desktop_config.json):

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

HTTP(用于远程客户端)

npm start

使用可流式HTTP传输启动HTTP服务器。端点: http://localhost:{port}/{apiKey}/mcp

工具

阅读

工具 说明
list_accounts 列出所有已配置的邮件帐户
list_mailboxes 列出一个帐户或所有帐户的邮箱
get_mailbox_summary 未读计数和最近活动概述
list_messages 按页码列出邮箱中的邮件
get_message 获取完整的邮件内容、收件人和附件元数据
search_messages 按查询、发件人、主题、日期、标记在邮箱中搜索

作曲

所有撰写工具都会创建 仅限草稿 --电子邮件从不以编程方式发送。草稿显示在“草稿”文件夹中,并在发送前跨设备同步以供审阅。

工具 说明
send_message 创建新的电子邮件草稿
reply_to_message 创建回复草稿
forward_message 创建转发草稿

管理

工具 说明
move_message 将邮件移动到其他邮箱
mark_message 设置已读/未读、标记或颜色标记(支持批量)
delete_message 移动到垃圾箱或永久删除(支持批量)

配置选项

选项 类型 默认值 描述
port number -- HTTP服务器端口
apiKey string - HTTP身份验证的API密钥(在URL路径中传递)
basePath 字符串 "" 反向代理设置的外部基本路径
draftMode 布尔值 false 传统选项(现在撰写始终是草稿)
excludeMailboxes string[] ["Junk", "Deleted Messages"] 搜索中要跳过的邮箱

传输由CLI标志选择: --stdio 对于stdio,否则为HTTP。

建筑

所有Apple Mail交互都是通过JXA脚本执行的 osascript关键绩效模式:

  • 批量属性访问 (mb.messages.subject())用于列出和搜索--在单个IPC调用中获取所有值
  • whose({id:...}) 对于单消息查找,缩小引用范围,以便后续属性访问很快,即使在有20k+条消息的邮箱中也是如此
  • Unicode净化 条带U+2028/2029(行/段落分隔符)、U+FFFC和中断JSON传输的控制字符