返回 MCP 目录
public公开dns本地运行

email-mcp-app

一个基于MCP协议的邮件服务器,支持通过IMAP和SMTP协议收发邮件,提供邮件管理功能

article

README

🚀 mcp-email-server

本项目是基于ai-zerolab的原始 mcp-email-server 进行的自定义增强项目,支持通过MCP服务器实现IMAP和SMTP功能。

Release Build status codecov Commit activity License smithery badge

🚀 快速开始

📦 安装指南

手动安装

我们建议使用 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、网页邮箱等)中。

服务器会自动检测常见的已发送文件夹名称:SentINBOX.SentSent ItemsSent 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=falsesave_to_sent = 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安装电子邮件服务器,请运行以下命令:

npx -y @smithery/cli install @ai-zerolab/mcp-email-server --client claude

💻 使用示例

回复电子邮件

要正确地回复电子邮件(以便在电子邮件客户端中显示在同一对话中):

  1. 首先,获取原始电子邮件以获取其 message_id
emails = await get_emails_content(account_name="work", email_ids=["123"])
original = emails.emails[0]
  1. 使用 in_reply_toreferences 发送回复:
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 进行本地开发。

🚀 发布新版本

  • PyPI 上创建一个API令牌。
  • 通过访问 此页面,将API令牌添加到您项目的密钥中,名称为 PYPI_TOKEN
  • 在Github上创建一个 新的版本
  • 创建一个格式为 *.*.* 的新标签。

更多详细信息,请参阅 此处

help

运行方式说明

cloud

托管运行

托管运行通常表示这个 MCP Server 由服务方环境承载,用户一般按页面提供的连接方式或授权流程接入,不需要在本地长期启动一个 MCP 进程

  1. 打开服务方连接页
  2. 完成授权或复制端点
  3. 在 MCP 客户端中连接
terminal

本地运行 / 其它方式

本地运行通常需要用户在自己的电脑或服务器上安装依赖,把 server_config 复制到 MCP 客户端,并按 env_schema 补齐环境变量、密钥或其它配置

  1. 复制 server_config
  2. 安装所需依赖
  3. 补齐环境变量后重启客户端