电子邮件服务器

MCP电子邮件服务器提供IMAP和SMTP功能,支持通过UI或环境变量配置,适用于自动化邮件处理和集成开发。

  • by Code-MonkeyZhang
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Code-MonkeyZhang/email-mcp-app

使用说明

mcp电子邮件服务器

备注:此项目是基于原始版本的自定义增强功能 mcp电子邮件服务器 来自ai zerolab。

通过MCP服务器的IMAP和SMTP

安装

手动安装

我们建议使用 紫外线 管理您的环境。

尝试 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电子邮件支持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配置

添加 enable_attachment_download = true 到您的TOML配置文件(~/.config/zerolib/mcp_email_server/config.toml):

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

禁用保存到“已发送”文件夹,set MCP_EMAIL_SERVER_SAVE_TO_SENT=false 或 save_to_sent = false 在您的TOML配置中。

对于单独的IMAP/SMTP凭据,您还可以使用:

  • MCP_EMAIL_SERVER_IMAP_USER_NAME / MCP_EMAIL_SERVER_IMAP_PASSWORD
  • MCP_EMAIL_SERVER_SMTP_USER_NAME / MCP_EMAIL_SERVER_SMTP_PASSWORD

然后你可以试试 克劳德桌面版。如果要将其与其他mcp客户端集成,请运行 $which mcp-email-server 对于路径,请在客户端中进行配置,如下所示:

{
  "mcpServers": {
    "zerolib-email": {
      "command": "{{ ENTRYPOINT }}",
      "args": ["stdio"]
    }
  }
}

如果 docker 是可用的,您可以尝试使用docker镜像,但您可能需要在客户端中使用 tools 通过 MCP。默认配置路径为 ~/.config/zerolib/mcp_email_server/config.toml

{
  "mcpServers": {
    "zerolib-email": {
      "command": "docker",
      "args": ["run", "-it", "ghcr.io/ai-zerolab/mcp-email-server:latest"]
    }
  }
}

通过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_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 头球两者都被电子邮件客户端用来正确地进行对话。

发展

此项目使用以下方式管理 紫外线.

尝试 make install 安装虚拟环境并安装预提交挂钩。

使用 uv run mcp-email-server 为了地方发展。

发布新版本

  • 在上创建API令牌 PyPI.
  • 使用名称将API令牌添加到您的项目机密中 PYPI_TOKEN 通过访问 此页.
  • 创建 新版本 在Github上。
  • 在表单中创建新标记 *.*.*.

有关更多详细信息,请参阅 这里.