内容
# Proton Mail MCP 服务器适用于 Claude Cowork
本项目通过 MCP 将 Proton Mail 账户暴露给 Claude Cowork。它通过 IMAP 和 SMTP 连接到 Proton Mail Bridge,然后通过 `stdio` 提供本地 MCP 服务器,以便 Claude Desktop 和 Cowork 可以按需启动。在每个 MCP 进程中,它重用 Bridge 连接并自动空闲超时,因此重复的工具调用不会在每次请求时重新连接。
已检查的 `server.mjs` 是目前本地使用的捆绑工作服务器。这使得存储库自包含,避免了在将其连接到 Claude 之前需要单独的构建步骤。
## 功能
- 列出邮箱文件夹
- 列出文件夹中的最近电子邮件
- 读取完整的电子邮件内容
- 按发件人、主题、正文、日期和未读状态搜索电子邮件
- 发送新电子邮件
- 回复带有适当线程头的电子邮件
- 在文件夹之间移动消息
- 将消息标记为已读、未读、已标记或未标记
- 删除电子邮件
## 文件
- `server.mjs`: Claude 使用的捆绑 MCP 服务器
## 先决条件
- Node.js 18+
- 已安装并登录 Proton Mail Bridge
- 启用本地 MCP 的 Claude Desktop / Claude Cowork
## 配置 Proton Bridge 凭证
服务器从环境变量或以下位置读取凭证:
`~/.proton-bridge-credentials`
示例:
```bash
PROTON_BRIDGE_USERNAME="your-email@proton.me"
PROTON_BRIDGE_PASSWORD="your-bridge-password"
PROTON_BRIDGE_HOST="127.0.0.1"
PROTON_BRIDGE_IMAP_PORT="1143"
PROTON_BRIDGE_SMTP_PORT="1025"
```
如果使用 Bridge 的默认本地端口,则只需用户名和密码。
## 连接到 Claude Cowork
将以下条目添加到:
`~/Library/Application Support/Claude/claude_desktop_config.json`
```json
{
"mcpServers": {
"proton-mail": {
"command": "/opt/homebrew/bin/node",
"args": [
"/ABSOLUTE/PATH/TO/server.mjs"
]
}
}
}
```
如果 Node 二进制文件位于其他位置,请使用以下命令的输出:
```bash
which node
```
然后完全重启 Claude Desktop。Claude Cowork 应该会在启动时发现 Proton Mail 工具。
## 可用工具
- `list_folders()`
- `list_emails(folder="INBOX", limit=20)`
- `read_email(uid, folder="INBOX")`
- `search_emails(folder="INBOX", from, subject, body, since, before, unseen, limit=20)`
- `send_email(to, subject, body, html, cc, bcc)`
- `reply_to_email(uid, folder="INBOX", body, html, replyAll=false)`
- `move_email(uid, sourceFolder="INBOX", destinationFolder)`
- `mark_email(uid, folder="INBOX", action)`
- `delete_email(uid, folder="INBOX")`
## 本地烟雾测试
您可以检查服务器是否启动:
```bash
node server.mjs
```
它将等待标准输入上的 MCP 消息。Claude 是正常的客户端,因此这主要用于捕获明显的配置或凭证错误。
## 工作原理
- 从环境变量或 `~/.proton-bridge-credentials` 读取 Bridge 凭证
- 通过 `imapflow` 使用 IMAP 进行列表、搜索、阅读、移动、标记和删除邮件
- 通过 `nodemailer` 使用 SMTP 进行发送和回复
- 在每个 MCP 进程中重用 IMAP 和 SMTP 连接,并具有自动空闲清理和过时 Bridge 连接的重新连接一次行为
- 在阅读或回复时使用 `mailparser`,以便 Claude 获取结构化的消息内容
## 故障排除
如果 Claude 未显示工具:
- 验证 `claude_desktop_config.json` 中的 `command` 和 `args` 路径
- 完全重启 Claude Desktop
- 确保 Proton Mail Bridge 正在运行
- 确保您的 Bridge 凭证文件存在并包含 Bridge 密码,而不是您的主 Proton 账户密码
如果电子邮件操作失败:
- 确认 Bridge 正在监听 IMAP `1143` 和 SMTP `1025`,或更新 `~/.proton-bridge-credentials` 中的端口变量
- 如果 Bridge 最近重启,请重新打开 Proton Mail Bridge
- 可选地调整 `PROTON_BRIDGE_IDLE_TIMEOUT_MS` 和 `PROTON_BRIDGE_SMTP_IDLE_TIMEOUT_MS`,如果您想要更短或更长的连接重用窗口
## 安全注意事项
请勿提交:
- `~/.proton-bridge-credentials`
- 包含电子邮件内容的导出日志
- 包含消息正文的任何截图或转储