邮箱服务
该项目通过MCP提供IMAP和SMTP服务器,支持多种配置选项,包括环境变量和UI。它支持只读IMAP模式、附件下载以及将已发送的邮件保存到IMAP的已发送文件夹。
MCP 服务配置
复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用
{
"mcpServers": {
"zerolib-email": {
"args": [
"run",
"-it",
"ghcr.io/ai-zerolab/mcp-email-server:latest"
],
"command": "docker"
}
}
}
该服务需要配置环境变量:MCP_EMAIL_SERVER_ACCOUNT_NAME、MCP_EMAIL_SERVER_EMAIL_ADDRESS、MCP_EMAIL_SERVER_ENABLE_ATTACHMENT_DOWNLOAD、MCP_EMAIL_SERVER_FULL_NAME、MCP_EMAIL_SERVER_IMAP_HOST、MCP_EMAIL_SERVER_IMAP_PORT、MCP_EMAIL_SERVER_IMAP_SSL、MCP_EMAIL_SERVER_IMAP_START_SSL、MCP_EMAIL_SERVER_IMAP_VERIFY_SSL、MCP_EMAIL_SERVER_PASSWORD、MCP_EMAIL_SERVER_SENT_FOLDER_NAME、MCP_EMAIL_SERVER_SMTP_HOST、MCP_EMAIL_SERVER_SMTP_PORT、MCP_EMAIL_SERVER_SMTP_VERIFY_SSL、MCP_EMAIL_SERVER_USER_NAME
可用工具 (9 个)
该服务在 MCP 协议中暴露的工具,AI 可按需调用
list_available_accounts
List all configured email accounts with masked credentials.
该工具无需必填参数,直接调用即可
add_email_account 1 个参数 需填 1 项
Add a new email account configuration to the settings.
必填参数:email
list_emails_metadata 13 个参数 需填 1 项
List email metadata (email_id, subject, sender, recipients, date) without body content. Returns email_id for use with get_emails_content.
必填参数:account_name
get_emails_content 4 个参数 需填 2 项
Get the full content (including body) of one or more emails by their email_id. Use list_emails_metadata first to get the email_id.
必填参数:account_name、email_ids
delete_emails 3 个参数 需填 2 项
Delete one or more emails by their email_id. Use list_emails_metadata first to get the email_id.
必填参数:account_name、email_ids
mark_emails_as_read 3 个参数 需填 2 项
Mark one or more emails as read by their email_id. Use list_emails_metadata first to get the email_id.
必填参数:account_name、email_ids
move_emails 4 个参数 需填 3 项
Move one or more emails between IMAP folders by their email_id. Use list_emails_metadata first to get the email_id and list_mailboxes to discover available folders.
必填参数:account_name、email_ids、destination_mailbox
list_mailboxes 3 个参数 需填 1 项
List available mailboxes/folders for an email account. Returns folder names, hierarchy delimiters, and flags. Useful for discovering folder names before moving emails.
必填参数:account_name
download_attachment 5 个参数 需填 4 项
Download an email attachment and save it to the specified path. This feature must be explicitly enabled in settings (enable_attachment_download=true) due to security considerations.
必填参数:account_name、email_id、attachment_name、save_path
服务介绍
mcp-email-server
通过MCP服务器实现IMAP和SMTP
- Github仓库: https://github.com/ai-zerolab/mcp-email-server/
- 文档 https://ai-zerolab.github.io/mcp-email-server/
安装
手动安装
我们推荐使用uv来管理你的环境。
尝试使用uvx mcp-email-server@latest ui进行配置,并为mcp客户端使用以下配置:
{
"mcpServers": {
"zerolib-email": {
"command": "uvx",
"args": ["mcp-email-server@latest", "stdio"]
}
}
}
此包在PyPI上可用,因此你可以使用pip install mcp-email-server进行安装。
之后,使用UI配置你的邮件服务器:mcp-email-server ui
环境变量配置
你也可以使用环境变量来配置邮件服务器,这对于像Jenkins这样的CI/CD环境特别有用。zerolib-email支持UI配置(通过TOML文件)和环境变量配置,其中环境变量优先。
{
"mcpServers": {
"zerolib-email": {
"command": "uvx",
"args": ["mcp-email-server@latest", "stdio"],
"env": {
"MCP_EMAIL_SERVER_ACCOUNT_NAME": "work",
"MCP_EMAIL_SERVER_FULL_NAME": "John Doe",
"MCP_EMAIL_SERVER_EMAIL_ADDRESS": "john@example.com",
"MCP_EMAIL_SERVER_USER_NAME": "john@example.com",
"MCP_EMAIL_SERVER_PASSWORD": "your_password",
"MCP_EMAIL_SERVER_IMAP_HOST": "imap.gmail.com",
"MCP_EMAIL_SERVER_IMAP_PORT": "993",
"MCP_EMAIL_SERVER_SMTP_HOST": "smtp.gmail.com",
"MCP_EMAIL_SERVER_SMTP_PORT": "465"
}
}
}
}
可用的环境变量
| 变量 | 描述 | 默认值 | 是否必需 |
|---|---|---|---|
MCP_EMAIL_SERVER_ACCOUNT_NAME |
账户标识符 | "default" |
否 |
MCP_EMAIL_SERVER_FULL_NAME |
显示名称 | 邮件前缀 | 否 |
MCP_EMAIL_SERVER_EMAIL_ADDRESS |
邮件地址 | - | 是 |
MCP_EMAIL_SERVER_USER_NAME |
登录用户名 | 与邮件相同 | 否 |
MCP_EMAIL_SERVER_PASSWORD |
邮件密码 | - | 是 |
MCP_EMAIL_SERVER_IMAP_HOST |
IMAP服务器主机 | - | 是 |
MCP_EMAIL_SERVER_IMAP_PORT |
IMAP服务器端口 | 993 |
否 |
MCP_EMAIL_SERVER_IMAP_SSL |
启用IMAP SSL | true |
否 |
MCP_EMAIL_SERVER_IMAP_START_SSL |
启用IMAP STARTTLS | false |
否 |
MCP_EMAIL_SERVER_IMAP_VERIFY_SSL |
验证IMAP SSL证书(对于自签名证书禁用) | true |
否 |
MCP_EMAIL_SERVER_SMTP_HOST |
SMTP服务器主机;省略则为只读模式 | - | 否 |
MCP_EMAIL_SERVER_SMTP_PORT |
SMTP服务器端口 | 465 |
否 |
MCP_EMAIL_SERVER_SMTP_SSL |
启用SMTP SSL | true |
否 |
MCP_EMAIL_SERVER_SMTP_START_SSL |
启用STARTTLS | false |
否 |
MCP_EMAIL_SERVER_SMTP_VERIFY_SSL |
验证SSL证书(对于自签名证书禁用) | true |
否 |
MCP_EMAIL_SERVER_SAVE_TO_SENT |
将已发送邮件保存到IMAP的已发送文件夹 | true |
No |
MCP_EMAIL_SERVER_SENT_FOLDER_NAME |
自定义已发送文件夹名称(如果未设置则自动检测) | - | No |
只读 IMAP 模式
SMTP 配置是可选的。当省略 MCP_EMAIL_SERVER_SMTP_HOST 时,账户将以只读模式运行,并且仅暴露读取/邮箱管理工具。如果所有配置的电子邮件账户都是只读的,则会隐藏如 send_email 和 save_to_mailbox 等外发撰写工具。
{
"mcpServers": {
"zerolib-email": {
"command": "uvx",
"args": ["mcp-email-server@latest", "stdio"],
"env": {
"MCP_EMAIL_SERVER_EMAIL_ADDRESS": "john@example.com",
"MCP_EMAIL_SERVER_PASSWORD": "your_password",
"MCP_EMAIL_SERVER_IMAP_HOST": "imap.gmail.com"
}
}
}
}
HTTP 传输安全
HTTP 传输 (sse 和 streamable-http) 会验证请求的 Host 和 Origin 头以防止 DNS 重绑定攻击。默认情况下允许本地主机。对于 Docker 网络或反向代理,请明确配置预期的服务名称。
| 变量 | 描述 | 默认值 |
|---|---|---|
MCP_HOST |
streamable-http 的 HTTP 绑定主机 |
localhost |
MCP_PORT |
streamable-http 的 HTTP 绑定端口 |
9557 |
MCP_ALLOWED_HOSTS |
逗号分隔的允许 Host 值。支持 host:* 端口 |
本地主机 |
MCP_ALLOWED_ORIGINS |
逗号分隔的允许 Origin 值。支持 host:* 端口 |
本地来源 |
MCP_ENABLE_DNS_REBINDING_PROTECTION |
启用 DNS 重绑定保护 | true |
Docker Compose 示例:
services:
mcp-email-server:
image: ghcr.io/ai-zerolab/mcp-email-server:latest
command: ["streamable-http"]
environment:
MCP_HOST: 0.0.0.0
MCP_PORT: 9557
MCP_ALLOWED_HOSTS: mcp-email-server:*,localhost:*,127.0.0.1:*
MCP_ALLOWED_ORIGINS: http://mcp-email-server:*,http://localhost:*,http://127.0.0.1:*
像 MCP_ALLOWED_HOSTS=mcp-email-server 这样的裸主机条目也允许该主机上的任何端口。MCP_ENABLE_DNS_REBINDING_PROTECTION=false、MCP_ALLOWED_HOSTS=* 或 MCP_ALLOWED_ORIGINS=* 完全禁用 Host 和 Origin 验证。这些选项仅应在隔离的本地开发环境中使用。
允许列表中的 IPv6 文字应使用方括号表示法,例如 [::1]:* 和 http://[::1]:*。
启用附件下载
出于安全考虑,默认情况下禁用电子邮件附件下载功能。要启用此功能,您可以选择以下任一方法:
选项 1:环境变量
{
"mcpServers": {
"zerolib-email": {
"command": "uvx",
"args": ["mcp-email-server@latest", "stdio"],
"env": {
"MCP_EMAIL_SERVER_ENABLE_ATTACHMENT_DOWNLOAD": "true"
}
}
}
}
选项 2:TOML 配置
在您的 TOML 配置文件 (~/.config/zerolib/mcp_email_server/config.toml) 中添加 enable_attachment_download = true:
enable_attachment_download = true
[[emails]]
# ... your email configuration
启用后,您可以使用 download_attachment 工具将电子邮件附件保存到指定路径。
将已发送邮件保存到 IMAP 已发送文件夹
默认情况下,已发送的邮件会自动保存到您的 IMAP 已发送文件夹中。这确保了通过 MCP 服务器发送的邮件会出现在您的邮件客户端(如 Thunderbird、webmail 等)中。
服务器会自动检测常见的已发送文件夹名称:Sent、INBOX.Sent、Sent Items、Sent Mail、[Gmail]/Sent Mail。
要指定自定义的已发送文件夹名称(适用于具有非标准文件夹名称的提供商):
选项 1:环境变量
{
"mcpServers": {
"zerolib-email": {
"command": "uvx",
"args": ["mcp-email-server@latest", "stdio"],
"env": {
"MCP_EMAIL_SERVER_SENT_FOLDER_NAME": "INBOX.Sent"
}
}
}
}
选项 2:TOML 配置
[[emails]]
account_name = "work"
save_to_sent = true
sent_folder_name = "INBOX.Sent"
# ... rest of your email configuration
要禁用保存到已发送文件夹,请设置 MCP_EMAIL_SERVER_SAVE_TO_SENT=false 或在您的 TOML 配置中设置 save_to_sent = false。
自签名证书和 IMAP STARTTLS(例如 ProtonMail Bridge)
像 ProtonMail Bridge 这样的本地邮件桥通常使用带有自签名证书的 STARTTLS。配置 IMAP 使用明文连接加上 STARTTLS 升级,并禁用对本地桥证书的验证:
{
"mcpServers": {
"zerolib-email": {
"command": "uvx",
"args": ["mcp-email-server@latest", "stdio"],
"env": {
"MCP_EMAIL_SERVER_IMAP_HOST": "127.0.0.1",
"MCP_EMAIL_SERVER_IMAP_PORT": "1143",
"MCP_EMAIL_SERVER_IMAP_SSL": "false",
"MCP_EMAIL_SERVER_IMAP_START_SSL": "true",
"MCP_EMAIL_SERVER_IMAP_VERIFY_SSL": "false",
"MCP_EMAIL_SERVER_SMTP_VERIFY_SSL": "false"
}
}
}
}
或者在 TOML 配置中:
[[emails]]
account_name = "protonmail"
# ... other settings ...
[emails.incoming]
host = "127.0.0.1"
port = 1143
use_ssl = false
start_ssl = true
verify_ssl = false
[emails.outgoing]
verify_ssl = false
对于单独的 IMAP/SMTP 凭据,您还可以使用:- MCP_EMAIL_SERVER_IMAP_USER_NAME / MCP_EMAIL_SERVER_IMAP_PASSWORD
MCP_EMAIL_SERVER_SMTP_USER_NAME/MCP_EMAIL_SERVER_SMTP_PASSWORD
然后你可以在Claude Desktop中尝试。如果你想将其与其他mcp客户端集成,运行$which mcp-email-server以获取路径,并在你的客户端中进行如下配置:
{
"mcpServers": {
"zerolib-email": {
"command": "{{ ENTRYPOINT }}",
"args": ["stdio"]
}
}
}
如果docker可用,你可以尝试使用docker镜像,但你可能需要通过MCP的tools在你的客户端中进行配置。默认配置路径是~/.config/zerolib/mcp_email_server/config.toml
{
"mcpServers": {
"zerolib-email": {
"command": "docker",
"args": ["run", "-it", "ghcr.io/ai-zerolab/mcp-email-server:latest"]
}
}
}
通过Smithery安装
要通过Smithery自动为Claude Desktop安装Email Server:
npx -y @smithery/cli install @ai-zerolab/mcp-email-server --client claude
使用方法
回复邮件
为了正确地回复邮件(以便在电子邮件客户端中显示在同一对话中):
- 首先,获取原始邮件以获得其
message_id:
emails = await get_emails_content(account_name="work", email_ids=["123"])
original = emails.emails[0]
- 使用
in_reply_to和references发送你的回复:
await send_email(
account_name="work",
recipients=[original.sender],
subject=f"Re: {original.subject}",
body="Thank you for your email...",
in_reply_to=original.message_id,
references=original.message_id,
)
in_reply_to参数设置In-Reply-To头,references设置References头。这两个头信息被电子邮件客户端用来正确地组织会话。
开发
此项目使用uv进行管理。
尝试使用make install来安装虚拟环境并安装预提交钩子。
使用uv run mcp-email-server进行本地开发。
发布新版本
更多详情,请参见这里。