README
🚀 mcp-email-server
本项目是基于ai-zerolab的原始 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 进行安装。
安装完成后,使用 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_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_ENABLE_ATTACHMENT_DOWNLOAD | 启用附件下载 | false | 否 |
| MCP_EMAIL_SERVER_SAVE_TO_SENT | 将已发送的邮件保存到IMAP已发送文件夹 | true | 否 |
| MCP_EMAIL_SERVER_SENT_FOLDER_NAME | 自定义已发送文件夹名称(未设置则自动检测) | - | 否 |
启用附件下载
出于安全原因,默认情况下禁用电子邮件附件下载。要启用此功能,您可以选择以下任一方法:
选项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]]
# ... 您的电子邮件配置
启用后,您可以使用 download_attachment 工具将电子邮件附件保存到指定路径。
将已发送的邮件保存到IMAP已发送文件夹
默认情况下,已发送的邮件会自动保存到您的IMAP已发送文件夹。这确保了通过MCP服务器发送的邮件会出现在您的电子邮件客户端(如Thunderbird、网页邮箱等)中。
服务器会自动检测常见的已发送文件夹名称: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"
# ... 您的其余电子邮件配置
禁用保存到已发送文件夹,在您的TOML配置中设置 MCP_EMAIL_SERVER_SAVE_TO_SENT=false 或 save_to_sent = false。
对于单独的IMAP/SMTP凭证,您还可以使用:
MCP_EMAIL_SERVER_IMAP_USER_NAME/MCP_EMAIL_SERVER_IMAP_PASSWORDMCP_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安装电子邮件服务器,请运行以下命令:
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 进行本地开发。
🚀 发布新版本
更多详细信息,请参阅 此处。
微信扫一扫