邮件协议服务器

一个基于Node.js的MCP服务器,用于通过SMTP和IMAP发送和读取邮件,适用于需要邮件管理和自动化处理的场景。

  • by davidmjerry
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 davidmjerry/email-mcp-server

使用说明

电子邮件MCP服务器

一个Node.js MCP(模型上下文协议)服务器,用于通过SMTP和IMAP发送和读取电子邮件。底层SMTP/IMAP客户端是基于标准的,可以通过更改环境变量指向任何提供者。

最初基于anyrxo/protonmail pro-mcp(麻省理工学院)。大幅修改和扩展。

免责声明: 不隶属于Proton。

快速开始

git clone https://github.com/davidmjerry/email-mcp-server.git
cd email-mcp-server
npm install
npm run build
node dist/index.js

默认情况下,MCP服务器会监听 http://127.0.0.1:3000 并暴露:

  • GET /sse 对于SSE流
  • POST /messages?sessionId=... 用于客户端消息

先决条件

  • Node.js 18+
  • SMTP凭据 (用户名/密码)用于您要发送的邮件帐户
  • IMAP访问 对于您要读取的邮件帐户

质子桥(IMAP)

如果使用ProtonMail,您必须在本地运行Proton Bridge并将IMAP指向它。默认值:

  • 主持人: localhost
  • 端口: 1143

如果网桥使用不同的值,请通过环境变量调整IMAP设置。

环境设置

创建一个 .env 项目根目录中的文件:

# Required: account credentials (used for both SMTP and IMAP)
USERNAME=your-email@example.com
PASSWORD=your-password

# SMTP configuration (defaults shown)
SMTP_HOST=localhost
SMTP_PORT=587
# Optional: Force implicit TLS (true) or STARTTLS (false); defaults based on port
# SMTP_SECURE=false
# Optional: Allow self-signed certs (useful with Proton Bridge)
# SMTP_REJECT_UNAUTHORIZED=false

# IMAP configuration (defaults shown)
IMAP_HOST=localhost
IMAP_PORT=1143
# Optional: Force implicit TLS (true) or STARTTLS (false); defaults to false
# IMAP_SECURE=false
# Optional: Allow self-signed certs (useful with Proton Bridge)
# IMAP_REJECT_UNAUTHORIZED=false

# Optional: Debug logging
DEBUG=true

# Optional: MCP server configuration
MCP_HOST=127.0.0.1
MCP_PORT=3000
# MCP_ALLOWED_HOSTS=example.com,localhost
# Optional: require an MCP auth token (sent via Authorization: Bearer, X-MCP-Token, or ?token=)
# MCP_TOKEN=your-mcp-token

凭据和依赖关系

  • SMTP: 任何支持用户名/密码身份验证的SMTP服务器。
  • IMAP: 任何支持用户名/密码身份验证的IMAP服务器。
  • ProtonMail IMAP需要Proton Bridge。 服务器需要IMAP连接;没有它,只读功能将失败。

ProtonMail兼容性

该项目正式与ProtonMail合作。对于ProtonMail:

  • 使用 质子桥 用于IMAP/SMTP访问。
  • 将SMTP_HOST设置为localhost,端口1025(通常默认)。
  • 将IMAP_HOST设置为localhost,端口1143。
  • 使用Proton Bridge的SMTP/IMAP凭据。

安装

npm install
npm run build

用法(MCP层)

启动服务器:

node dist/index.js

客户端通过服务器发送事件(SSE)连接:

  • GET /sse 打开会话
  • POST /messages?sessionId=... 发送MCP消息

如果你设置 MCP_TOKEN,客户端必须使用以下方式之一将其包含在内:

  • Authorization: Bearer <token>
  • X-MCP-Token: <token>
  • ?token=<token> 查询字符串

可选:systemd服务

创建 /etc/systemd/system/email-mcp.service:

[Unit]
Description=Email MCP Server
After=network.target

[Service]
Type=simple
WorkingDirectory=/path/to/email-mcp-server
ExecStart=/usr/bin/node /path/to/email-mcp-server/dist/index.js
Restart=on-failure
EnvironmentFile=/path/to/email-mcp-server/.env

[Install]
WantedBy=multi-user.target

启用并启动:

sudo systemctl daemon-reload
sudo systemctl enable email-mcp
sudo systemctl start email-mcp

支持的功能

  • SMTP发送(文本/HTML)
  • 附件(base64)
  • 多个收件人(到/cc/bcc)
  • 答覆
  • 优先级标题
  • 读取收据标题
  • IMAP文件夹列表和状态
  • IMAP分页和搜索
  • IMAP已读/未读和带星号的标志
  • 移动和删除(通过垃圾文件夹检测)
  • 基本分析(联系人数量、交易量趋势)

可用工具

邮件发送

  • send_email

电子邮件阅读

  • get_emails
  • get_email_by_id
  • search_emails

文件夹管理

  • get_folders
  • sync_folders

电子邮件操作

  • mark_email_read
  • star_email
  • move_email
  • delete_email

话题与对话

  • get_thread

分析与统计

  • get_email_stats
  • get_email_analytics

系统和维护

  • get_connection_status
  • sync_emails
  • clear_cache
  • get_logs

许可证

MIT许可证。