mcpField
M
MCP Email Server

MCP Email Server

本地服务
github.com/ptbsare通信协作612 周前更新

关于 MCP Email Server

MCP Email Server 是一个 Python 服务,让 LLM 客户端通过 POP3 和 SMTP 管理邮件。它支持读取、删除和发送邮件,并处理 TLS 连接及附件。

主要功能

  1. 01列出近期邮件标题
  2. 02获取邮件正文和附件
  3. 03按 ID 删除邮件
  4. 04发送纯文本和 HTML 邮件
  5. 05为外发邮件附加本地文件
  6. 06使用 TLS 保护 POP3 和 SMTP

适用场景

  1. 01查看近期收件箱邮件
  2. 02获取完整邮件并保存附件
  3. 03删除选定邮件
  4. 04通过邮件发送报告或文件

MCP 相关

该服务将邮件操作作为工具提供给 MCP 客户端,包括列出、获取、删除和发送邮件。收到的附件会保存到本地,外发邮件可附带本地文件。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP Email Server

用于电子邮件操作(通过 TLS 使用 POP3/SMTP)的 Model Context Protocol(MCP)服务。允许 Claude 等大模型读取、发送和管理电子邮件。

快速开始

选项 1:uvx(推荐)

无需克隆,无需安装——直接从 GitHub 运行:

uvx git+https://github.com/ptbsare/email-mcp-server \
  --email-user [email protected] \
  --email-pass yourpassword \
  --pop3-server pop.example.com \
  --smtp-server smtp.example.com

首次运行时会缓存软件包;之后启动即刻完成。

选项 2:克隆并在本地运行
git clone https://github.com/ptbsare/email-mcp-server
cd email-mcp-server
uv pip install -e .
uv run main.py --email-user [email protected] --email-pass yourpassword \
  --pop3-server pop.example.com --smtp-server smtp.example.com
选项 3:.env 文件

在工作目录中创建 .env 文件:

[email protected]
EMAIL_PASS=yourpassword
POP3_SERVER=pop.example.com
SMTP_SERVER=smtp.example.com

然后只需运行:

uvx git+https://github.com/ptbsare/email-mcp-server
# or
uv run main.py

配置

配置优先级(从高到低)
  1. CLI 参数——覆盖所有其他配置
  2. 环境变量——覆盖 .env 文件
  3. .env 文件——备用默认值
所有配置选项
CLI 参数环境变量必需默认值说明
--email-userEMAIL_USER✅—电子邮件地址
--email-passEMAIL_PASS✅—电子邮件密码/应用专用密码
--pop3-serverPOP3_SERVER✅—POP3 服务主机名
--pop3-portPOP3_PORT995POP3 SSL 端口
--smtp-serverSMTP_SERVER✅—SMTP 服务主机名
--smtp-portSMTP_PORT587SMTP 端口(使用 --smtp-use-ssl 时自动设为 465)
--smtp-use-sslSMTP_USE_SSLfalse使用 SMTP_SSL(端口 465),而非 STARTTLS
--log-levelLOG_LEVELINFO日志级别:DEBUG / INFO / WARNING / ERROR
示例:混合使用配置来源
# CLI args only (no .env needed):
uv run main.py --email-user [email protected] --email-pass xxx \
  --pop3-server pop.gmail.com --smtp-server smtp.gmail.com

# .env file for credentials, CLI for servers:
# .env: [email protected] / EMAIL_PASS=xxx
uv run main.py --pop3-server pop.gmail.com --smtp-server smtp.gmail.com

# Env vars override .env:
[email protected] uv run main.py --pop3-server pop.gmail.com ...

与 Claude Desktop 配合使用

将以下内容添加到 Claude Desktop 配置文件中:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%/Claude/claude_desktop_config.json

在配置文件中使用环境变量:
{
  "mcpServers": {
    "email-mcp-server": {
      "command": "uvx",
      "args": ["git+https://github.com/ptbsare/email-mcp-server"],
      "env": {
        "EMAIL_USER": "[email protected]",
        "EMAIL_PASS": "your-app-password",
        "POP3_SERVER": "pop.example.com",
        "SMTP_SERVER": "smtp.example.com"
      }
    }
  }
}
在配置文件中使用 CLI 参数:
{
  "mcpServers": {
    "email-mcp-server": {
      "command": "uvx",
      "args": [
        "git+https://github.com/ptbsare/email-mcp-server",
        "--email-user", "[email protected]",
        "--email-pass", "your-app-password",
        "--pop3-server", "pop.example.com",
        "--smtp-server", "smtp.example.com"
      ]
    }
  }
}

提示: 可以同时使用 env 部分和 CLI 参数。CLI 参数始终具有最高优先级。

功能

  • 轮询电子邮件: 列出收件箱电子邮件的标头,并可配置数量上限(pollEmails)
  • 获取完整电子邮件: 按 ID 获取完整电子邮件内容,并自动提取附件(getEmailsById)
  • 删除电子邮件: 按 ID 删除电子邮件(deleteEmailsById)
  • 发送电子邮件: 发送纯文本(sendTextEmail)或 HTML(sendHtmlEmail)邮件,并可选择添加文件附件
  • 安全连接: 通过 SSL 使用 POP3(端口 995),通过 STARTTLS(端口 587)或直接 SSL(端口 465)使用 SMTP
  • 附件支持: 将本地文件作为附件发送;收到的附件会自动保存到 /tmp/email_mcp_attachments/<email_id>/

工具

pollEmails(limit=50)

列出最近的电子邮件标头(不含正文)。按时间从新到旧排列。先使用此工具获取 getEmailsById/deleteEmailsById 所需的 ID。

参数类型默认值说明
limitint50返回的电子邮件数量上限,按时间从新到旧排列

返回: [{"id": int, "Subject": str, "From": str, "Date": str, "Message-ID": str}]

pollEmails(limit=10)   # 10 most recent
pollEmails()           # default 50

getEmailsById(ids)

按 pollEmails 返回的 ID 获取完整电子邮件内容(标头和正文)。附件会自动保存到 /tmp/email_mcp_attachments/<id>/。

参数类型必需说明
idslist[int]✅来自 pollEmails() 的电子邮件 ID。示例:[1, 3, 5]

返回: [{"id": int, "headers": dict, "body": str, "attachments": [{"filename": str, "local_path": str, "size": int, "content_type": str}]}]

getEmailsById(ids=[1, 3, 5])

deleteEmailsById(ids)

按 ID 永久删除电子邮件。**无法撤销。**请先调用 pollEmails。

参数类型必需说明
idslist[int]✅来自 pollEmails() 的电子邮件 ID。示例:[1, 2, 3]

返回: {"deleted": [int], "failed": {"id": "error msg"}}

deleteEmailsById(ids=[1, 2, 3])

sendTextEmail(toAddresses, subject, body, attachments=None)

发送纯文本邮件。附件:本地文件路径列表,例如 ["/tmp/file.pdf"]。

ParameterTypeRequiredDefaultDescription
toAddresseslist[str]✅—收件人。例如:["[email protected]"]
subjectstr✅—邮件主题
bodystr✅—纯文本正文
attachmentslist[str]None本地文件路径。例如:["/tmp/report.pdf"]

返回: {"status": "success"}

sendTextEmail(
    toAddresses=["[email protected]"],
    subject="Hello",
    body="Hi Alice!",
    attachments=["/tmp/report.pdf"]
)

sendHtmlEmail(toAddresses, subject, body, attachments=None)

发送 HTML 邮件。附件:本地文件路径列表,例如 ["/tmp/file.png"]。

ParameterTypeRequiredDefaultDescription
toAddresseslist[str]✅—收件人。例如:["[email protected]"]
subjectstr✅—邮件主题
bodystr✅—HTML 内容。例如:"<h1>Hi</h1><p>Hello!</p>"
attachmentslist[str]None本地文件路径。例如:["/tmp/chart.png"]

返回: {"status": "success"}

sendHtmlEmail(
    toAddresses=["[email protected]"],
    subject="Report",
    body="<h1>Report</h1><p>Sales up <b>20%</b>.</p>",
    attachments=["/tmp/chart.png"]
)

开发设置

前置条件
  • Python 3.12+
  • uv
步骤
git clone https://github.com/ptbsare/email-mcp-server
cd email-mcp-server
uv pip install -e .
uv run main.py --help

重要说明

  • 应用专用密码: 如果你的邮件服务提供商使用双重身份验证(2FA),请为 EMAIL_PASS 生成应用专用密码
  • 邮件 ID: POP3 ID 仅在会话期间有效。调用 getEmailsById() 或 deleteEmailsById() 前,请先调用 pollEmails()
  • 附件存储: 收到的附件会保存到 /tmp/email_mcp_attachments/<email_id>/
  • 安全性: 切勿提交 .env 文件——它已列入 .gitignore
  • 配置优先级: CLI 参数 > 环境变量 > .env 文件

项目结构

email-mcp-server/
├── main.py              # MCP server entry point (all logic)
├── pyproject.toml       # Package config & dependencies
├── uv.lock              # Dependency lock file
├── .env                 # Credentials (create your own)
├── .gitignore
└── README.md

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。