使用说明
质子MCP服务器
一个完整的TypeScript模型上下文协议(MCP)服务器,用于通过Proton Mail Bridge集成Proton Mail。
这有什么作用
此MCP服务器通过连接到本地运行的Proton Mail Bridge,通过Claude Code提供完整的电子邮件管理功能。它允许您:
- 列出和浏览邮箱文件夹
- 列出、搜索和阅读电子邮件
- 发送新电子邮件和回复
- 移动和删除电子邮件
- 访问带有附件的完整邮件内容
先决条件
- 质子邮件桥 在本地主机上运行和访问:
- 端口1143上的IMAP服务器(STARTTLS)
- 端口1025上的SMTP服务器(STARTTLS)
- Node.js 18岁或以上
- 具有Bridge凭据的有效Proton Mail帐户
设置
1.安装依赖项
npm install
2.配置环境
复制环境模板并添加您的Proton凭据:
cp .env.example .env
编辑 .env 使用您的设置:
PROTON_IMAP_HOST=127.0.0.1
PROTON_IMAP_PORT=1143
PROTON_SMTP_HOST=127.0.0.1
PROTON_SMTP_PORT=1025
PROTON_USER=your-proton-email@protonmail.com
PROTON_PASS=your-bridge-password
3.建造
npm run build
4.本地运行(开发)
npm run dev
或者运行编译后的版本:
npm start
使用Claude代码
将此MCP服务器添加到您的Claude设置中(~/.claude/settings.json):
{
"mcpServers": {
"proton": {
"command": "node",
"args": ["/path/to/proton-mcp-server/dist/index.js"],
"env": {
"PROTON_USER": "your-email@protonmail.com",
"PROTON_PASS": "your-bridge-password",
"PROTON_IMAP_HOST": "127.0.0.1",
"PROTON_IMAP_PORT": "1143",
"PROTON_SMTP_HOST": "127.0.0.1",
"PROTON_SMTP_PORT": "1025"
}
}
}
}
或者使用TypeScript/tsx:
{
"mcpServers": {
"proton": {
"command": "npx",
"args": ["tsx", "/path/to/proton-mcp-server/src/index.ts"]
}
}
}
可用工具
阅读工具(只读)
- proton_list_folders --列出所有包含邮件和未读计数的邮箱文件夹
- proton_list_邮件 --在文件夹中以分页方式列出电子邮件(最新的优先)
- proton_search电子邮件 --带过滤器的高级搜索(从、到、主题、日期范围、正文内容、未读状态)
- proton_read-mail --阅读完整的电子邮件内容,包括标题、正文和附件列表
书写工具
- proton_send_mail --发送新电子邮件(纯文本或HTML)
- proton_reply.email --使用正确的线程标题回复电子邮件
- proton_move_mail --将电子邮件移动到另一个文件夹
- proton_delete_mail --删除电子邮件(移至垃圾箱)
项目结构
proton-mcp-server/
├── src/
│ ├── index.ts # Main entry point
│ ├── constants.ts # Configuration constants
│ ├── types.ts # TypeScript interfaces
│ ├── schemas/
│ │ └── index.ts # Zod input schemas
│ ├── services/
│ │ ├── imap.ts # IMAP client wrapper
│ │ └── smtp.ts # SMTP client wrapper
│ └── tools/
│ ├── folders.ts # proton_list_folders
│ ├── list.ts # proton_list_emails
│ ├── search.ts # proton_search_emails
│ ├── read.ts # proton_read_email
│ ├── send.ts # proton_send_email
│ ├── reply.ts # proton_reply_email
│ ├── move.ts # proton_move_email
│ └── delete.ts # proton_delete_email
├── package.json
├── tsconfig.json
├── .env.example
├── .gitignore
└── README.md (this file)
实施说明
IMAP连接
- 用途
imapflow端口1143上带有STARTTLS的库 - Proton Bridge使用自签名证书,因此
tls.rejectUnauthorized: false - 所有连接均已正确关闭
logout()在最后的块
SMTP连接
- 用途
nodemailer端口1025上有STARTTLS - 支持纯文本和HTML电子邮件正文
- 正确设置
In-Reply-To和References电子邮件线程的标题
消息分析
- 用途
mailparser提取完整消息内容 - 支持文本、HTML和附件处理
- 返回附件元数据(文件名、内容类型、大小)
分页
- 电子邮件列表分页使用偏移和限制参数
- 结果总是最新的
- 搜索结果还支持分页
故障排除
连接问题
- 确保Proton邮件桥正在运行:
protonmail-bridge --cli - 检查本地主机连接:
telnet 127.0.0.1 1143(IMAP)和1025(SMTP) - 验证中的凭据
.env文件
电子邮件问题
- 某些电子邮件客户端可能无法识别没有正确邮件ID标头的回复
- HTML电子邮件被解析为文本;使用原始HTML正文以获得更好的格式
- 处理大型附件可能需要时间
构建问题
- 确保已安装Node.js 18+:
node --version - 清除node_modules并重新安装:
npm clean-install - 检查TypeScript编译:
npm run build
依赖项
@modelcontextprotocol/sdk--MCP协议实现imapflow--用于电子邮件阅读的IMAP客户端nodemailer--用于发送电子邮件的SMTP客户端mailparser--电子邮件解析和内容提取zod--输入验证模式dotenv--环境变量加载
许可证
麻省理工学院
支持
有关Proton Mail Bridge的问题,请参阅:https://proton.me/support/bridge
有关MCP协议文档,请参阅:https://modelcontextprotocol.io