关于 SMTP Email MCP Server
SMTP Email MCP Server 是一个本地运行的 MCP 服务,用于在多个邮箱账户中搜索、阅读、发送、回复、转发和整理邮件。它兼容 Gmail、iCloud Mail、Fastmail、Outlook 及其他标准 SMTP/IMAP 服务商,且不限制账户数量。
主要功能
- 01同时支持 SMTP 发信与 IMAP 收信
- 02按 account_name 切换多个邮箱账户
- 03邮件搜索、回复、转发与附件发送
- 04标记已读、旗标、移动邮件及列出文件夹
- 05通过本地 stdio 传输运行,无需托管中继
适用场景
- 01在 Claude Desktop 中管理工作与个人邮箱
- 02查找未读邮件并回复或转发
- 03将邮件归档或移动到指定文件夹
MCP 相关
该项目是一个 MCP 服务,通过 accounts_list、emails_find、email_send 等工具向 MCP 客户端暴露邮件收发与管理功能。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Email SMTP/IMAP MCP
一个本地 MCP 服务,管理所有收件箱:跨多个账户搜索、阅读、发送、回复、转发和整理电子邮件。
为什么选择此服务
- 账户数量不限 — 添加工作、个人、支持或客户收件箱,并通过
account_name切换。 - SMTP + IMAP 集于一体 — 通过一个小型 MCP 服务发送和接收邮件。
- 涵盖日常工作流 — 搜索、阅读、回复、转发、附加文件、标记、归档、移动邮件并列出文件夹。
- 不绑定邮件服务商 — 支持 Gmail、iCloud Mail、Fastmail、Outlook、可自托管邮件服务及其他标准 SMTP/IMAP 服务商。
- 本地 stdio 传输 — 无需托管中继,也无需单独的控制面板。
快速开始
1. 创建 .env
将 .env.example 复制到私密位置,并根据需要添加任意数量的命名账户:
EMAIL_ACCOUNTS_JSON='{
"work": {
"smtp": {
"host": "smtp.gmail.com",
"port": 587,
"secure": false,
"user": "[email protected]",
"password": "app-password"
},
"imap": {
"host": "imap.gmail.com",
"port": 993,
"secure": true,
"user": "[email protected]",
"password": "app-password"
},
"default_from_name": "Your Name",
"sender_emails": ["[email protected]", "[email protected]"]
},
"personal": {
"smtp": {
"host": "smtp.mail.me.com",
"port": 587,
"secure": false,
"user": "[email protected]",
"password": "app-password"
},
"imap": {
"host": "imap.mail.me.com",
"port": 993,
"secure": true,
"user": "[email protected]",
"password": "app-password"
}
}
}'
DEFAULT_EMAIL_ACCOUNT="work"
服务会自动从其工作目录加载 .env。EMAIL_ENV_FILE 允许 MCP 客户端使用存储在任意位置的 .env 文件。
2. 添加 MCP 服务
对于 Claude Desktop,编辑:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"email": {
"command": "npx",
"args": ["-y", "email-smtp-imap-mcp"],
"env": {
"EMAIL_ENV_FILE": "/absolute/path/to/your/.env"
}
}
}
}
使用绝对路径,重启 MCP 客户端,然后询问:“列出我配置的电子邮件账户。”
直接从 MCP 客户端传入账户 JSON
你可以跳过 .env 文件,直接在 MCP 客户端的 env 对象中设置 EMAIL_ACCOUNTS_JSON 和 DEFAULT_EMAIL_ACCOUNT。JSON 必须转义为单个字符串。
{
"env": {
"EMAIL_ACCOUNTS_JSON": "{\"work\":{\"smtp\":{\"host\":\"smtp.gmail.com\",\"port\":587,\"user\":\"[email protected]\",\"password\":\"app-password\"},\"imap\":{\"host\":\"imap.gmail.com\",\"port\":993,\"user\":\"[email protected]\",\"password\":\"app-password\"}}}",
"DEFAULT_EMAIL_ACCOUNT": "work"
}
}
单账户 `.env` 变量
使用 SMTP_HOST、SMTP_PORT、SMTP_SECURE、SMTP_USER、SMTP_PASS、IMAP_HOST、IMAP_PORT、IMAP_SECURE、IMAP_USER 和 IMAP_PASS,而不是 EMAIL_ACCOUNTS_JSON。
也接受 SMTP_USERNAME/SMTP_PASSWORD 和 IMAP_USERNAME/IMAP_PASSWORD 作为别名。若未提供 IMAP 凭据,则默认使用 SMTP 凭据。使用逗号分隔的 SENDER_EMAILS 作为允许列表,以便选择可选的 from_email。
| 工具 | 功能 |
|---|---|
accounts_list | 列出所有已配置的账户,并指出默认账户,但不暴露凭据。 |
emails_find | 按文本、发件人、收件人、主题、日期、已读状态、标记状态或附件进行搜索。可选择返回邮件正文和附件。 |
email_send | 发送纯文本或 HTML 邮件,支持 CC、BCC、发件人别名和 base64 附件。 |
email_respond | 按邮件 UID 回复、回复全部或转发,支持邮件线程,并可选择附上原始附件。 |
emails_modify | 将邮件标记为已读/未读、标记/取消标记,或移至其他文件夹。 |
folders_list | 列出文件夹,并可选择显示邮件总数和未读邮件数。 |
每个邮件工具都接受可选的 account_name。如果未指定,服务将使用 DEFAULT_EMAIL_ACCOUNT 或第一个已配置的账户。应用层没有账户数量限制。
验证设置
重启 MCP 客户端后,按顺序尝试以下操作:
- “列出我已配置的邮件账户。”
- “列出我的
work账户中的文件夹。” - “查找我的
personal账户中最新的 5 封未读邮件。” - “从我的
work账户发送一封纯文本邮件。”
提供商设置
| 提供商 | SMTP | IMAP | 凭据 |
|---|---|---|---|
| Gmail | smtp.gmail.com:587 | imap.gmail.com:993 | 应用专用密码 |
| iCloud Mail | smtp.mail.me.com:587 | imap.mail.me.com:993 | 应用专用密码 |
| 其他提供商 | 使用提供商的 SMTP 主机 | 使用提供商的 IMAP 主机 | 提供商密码或应用专用密码 |
对于 465/993 等隐式 TLS 端口,请使用 secure: true。端口 587 通常使用 secure: false,并通过 STARTTLS 升级连接。
开发
git clone https://github.com/samihalawa/email-smtp-imap-mcp.git
cd email-smtp-imap-mcp
npm ci
npm test
使用 npm start 运行编译后的 stdio 服务。使用 docker build -t email-smtp-imap-mcp . 构建生产容器。
贡献
欢迎提交问题和有针对性的拉取请求。开发工作流请参阅 CONTRIBUTING.md,漏洞报告请参阅 SECURITY.md。
许可证
MIT © Sami Halawa
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。