使用说明
邮件MCP
macOS Mail的本地MCP服务器读取,以及可见的未发送的撰写、回复和转发草稿,以及受限制的单消息移动。
完全由OpenAI GPT-5.4通过Codex构建。
概述
此项目通过MCP公开Apple Mail帐户、邮箱、收件箱消息和直接消息读取。
支持的工具:
mail_check_accessmail_list_accountsmail_list_mailboxesmail_list_mailbox_messagesmail_list_inbox_messagesmail_get_messagemail_compose_messagemail_reply_to_messagemail_forward_messagemail_move_message
主要的读取工作流程是 mail_list_inbox_messages,它返回所有收件箱的消息并支持 headersOnly: true 当您只需要标头和元数据时。
撰写工作流是有意缩小的:服务器可以打开可见的未发送的撰写、回复和转发草稿,但它不公开任何发送工具。 移动工作流受到有意限制:它支持在同一帐户内移动一封邮件,但不允许移动到垃圾箱或已删除的邮件邮箱。
路径约定
- 工具输入使用显式分段数组:
mailboxPathSegments: ["Inbox"]mailboxPathSegments: ["Archive", "2026"]destinationMailboxPathSegments: ["Receipts"]
- 邮箱结果包括两者
path和pathSegments.使用path用于显示和pathSegments调用工具时。 - 消息结果包括两者
mailboxPath和mailboxPathSegments.使用mailboxPath用于显示和mailboxPathSegments调用工具时。 - 消息结果使用
id对特定消息进行操作的工具需要在输入名称下使用相同的值messageId.
往返示例:
-
呼叫
mail_list_mailboxes并选择邮箱结果,例如:{ "accountId": "account-1", "name": "Receipts", "path": "Archive / 2026 / Receipts", "pathSegments": ["Archive", "2026", "Receipts"] } -
呼叫
mail_list_mailbox_messages与:{ "accountId": "account-1", "mailboxPathSegments": ["Archive", "2026", "Receipts"] } -
取一个返回的消息对象,例如:
{ "id": 4812, "accountId": "account-1", "mailboxPath": "Archive / 2026 / Receipts", "mailboxPathSegments": ["Archive", "2026", "Receipts"] } -
呼叫
mail_get_message与:{ "accountId": "account-1", "mailboxPathSegments": ["Archive", "2026", "Receipts"], "messageId": 4812 }
需求
- Node.js 20+
- macOS
- Mail.app已配置至少一个帐户
- 控制邮件的自动化权限
- A签名
MailMCPHelperApp构建
设置
-
安装依赖项:
npm install -
复制
.env.example到.env如果要覆盖默认值:cp .env.example .env -
构建助手应用程序:
npm run build:helper-app构建脚本编译未签名的应用程序,然后用第一个本地包对完成的捆绑包进行签名
Apple Development身份。用以下内容覆盖该选择MAIL_MCP_CODESIGN_IDENTITY如果需要的话。 -
进行本地质量检查:
npm run verify -
运行一个真正的邮件烟雾测试:
npm run test:live
可选环境变量:
MAIL_MCP_REQUEST_TIMEOUT_MSMAIL_MCP_HELPER_TIMEOUT_MSMAIL_MCP_HELPER_APP_PATH
跑
启动开发中的服务器:
npm run dev
构建生产输出:
npm run build
npm start
权限
服务器启动已签名的 MailMCPHelperApp 并在该应用程序流程中运行邮件自动化。这将使macOS自动化/TCC边界连接到助手应用程序,而不是终端或客户端进程。
跑 mail_check_access 安装后一次。首次使用时,macOS可能会提示用户允许控制邮件。
如果提示没有自动出现在您的客户端中,请直接启动助手应用程序一次:
open MailMCPHelperApp/build/Build/Products/Release/MailMCPHelperApp.app
服务器甚至在授予访问权限之前就已启动。使用 mail_check_access 以确认权限状态,并在macOS Automation同意仍悬而未决的情况下收到可操作的错误消息。
若要在测试计算机上重新运行同意流,请重置助手应用程序的Mail Apple Events权限,然后运行 mail_check_access 再一次:
tccutil reset AppleEvents com.andrewfinke.mailmcphelper
重置后,确认macOS提示符名称 MailMCPHelperApp,然后确认显示“系统设置” MailMCPHelperApp -> Mail.
验证
npm run verify
备注
- 支持的文件系统
~/Library/Mail这里故意不使用这种方法,因为它需要更广泛的隐私访问,并且依赖于未记录的邮件存储细节。 - 收件箱和邮箱列表工具将返回邮件正文,除非
headersOnly: true已设置。 - 撰写、回复和转发工具始终打开可见的草稿。有意避免隐藏草稿模式,因为Mail不能通过自动化可靠地清理不可见的组合对象。
- 原始标题对于列表工具是可选的,默认为
false. - 包括附件元数据,但不包括附件字节。
- 助手应用程序通过进程内执行JavaScript以实现自动化
OSAKit.
MCP设置
服务器通过stdio运行。
构建服务器的客户端配置示例:
{
"mcpServers": {
"mail": {
"command": "node",
"args": ["/absolute/path/to/mail-mcp/dist/index.js"],
"cwd": "/absolute/path/to/mail-mcp",
"env": {
"MAIL_MCP_HELPER_APP_PATH": "/absolute/path/to/mail-mcp/MailMCPHelperApp/build/Build/Products/Release/MailMCPHelperApp.app"
}
}
}
}
对于不先建设的地方发展:
{
"mcpServers": {
"mail": {
"command": "npx",
"args": ["tsx", "src/index.ts"],
"cwd": "/absolute/path/to/mail-mcp"
}
}
}