mail-mcp 是一个生产可用的电子邮件 MCP 服务器,面向 AI 智能体,使用 Rust 编写,支持 IMAP、SMTP、Exchange Web Services(EWS)和 Microsoft Graph API,并具备真正的 OAuth2、多账户与多服务商支持。多数邮件 MCP 服务器仅支持 IMAP 读取,该项目则覆盖读取、搜索、发送、回复、转发、批量操作、Microsoft Graph API 和 Exchange Web Services 等能力。
一、主要用途 该项目用于让 AI 智能体通过 MCP 协议操作电子邮件:读取、搜索、发送、回复、转发、批量处理,以及下载附件。其设计目标包括多账户管理、多服务商兼容(如 Microsoft 365、Hotmail、Gmail、Zoho、iCloud、NetEase 126/163/yeah.net 等)以及更安全的 OAuth2 认证。
二、主要能力
- 邮件操作:读取、搜索、发送、回复、转发和批量操作。
- 附件处理:新增 imap_get_attachment 工具可将单个附件下载到磁盘,并返回文件路径、文件名、内容类型、part_id 和大小;二进制内容不会进入模型响应,避免上下文膨胀。可选 include_base64 在附件不超过 max_inline_bytes(默认 256 KiB)时附带 base64。
- 搜索增强:imap_search_all_mailboxes 可在账户中每个可选邮箱内执行一次搜索并返回最新匹配结果,每条结果标记所属邮箱,适合无“所有邮件”文件夹的服务商(如 iCloud);并发数由 MAIL_IMAP_SEARCH_CONCURRENCY 控制(默认 4,范围 1..=8),单个邮箱失败会被报告而不中止搜索。imap_search_messages 新增 thread_message_id 条件,可匹配某封邮件及其 In-Reply-To 或 References 中携带该 ID 的所有邮件,便于拉取整个会话。
- 文件夹管理:imap_list_mailboxes 的邮箱数量上限由 MAIL_IMAP_MAX_MAILBOXES 配置(默认 200,范围 1..=10000),响应新增 total 和 truncated 字段,便于判断列表是否被截断。支持 iCloud 邮箱别名解析,如 Sent → Sent Messages、[Gmail]/Sent Mail、Trash → Deleted Messages 等,用于搜索、复制和移动操作。
- 已读状态:原始邮件获取使用 BODY.PEEK[],读取邮件不再设置 \Seen;对拒绝 PEEK 的服务器回退到 BODY[]。
- 发件存档:SAVE_SENT 支持按账户配置并提供服务商感知默认值。Gmail 与 Zoho 服务端保存时不重复追加;Office 365 或通用 SMTP 不自动保存时由 MCP 追加。优先级为:按账户覆盖 → 全局配置 → 服务商默认。
- 发送校验:v0.4.6 引入服务器端校验,若 body_text 或 body_html 含有工具调用包装语法(如 <body_text>、<function_calls>、<invoke name= 等),将在 SMTP/Graph/EWS 尝试前拒绝该工具调用。
- 其他修复:graph_send_message 在回复并带附件时不再静默丢弃附件;小于 3 MB 内联、大于等于 3 MB 使用分块上传会话;NetEase 服务器在认证后发送 RFC 2971 ID 命令以兼容;MAIL_SMTP_<ID>_FROM_EMAIL 可为共享/群组邮箱覆盖发件地址。
三、使用方式 默认使用 stdio 传输。设置 MAIL_MCP_TRANSPORT=http 可改为无状态的 streamable HTTP,默认绑定 127.0.0.1:8000 的 /mcp 路径,可通过 MAIL_MCP_HTTP_HOST、MAIL_MCP_HTTP_PORT、MAIL_MCP_HTTP_PATH 配置,并支持 SIGINT/SIGTERM 优雅关闭。HTTP 端点本身无内置认证,应保持回环地址或置于认证网关之后。附件下载目录可通过 output_dir 参数、MAIL_ATTACHMENT_DOWNLOAD_DIR 环境变量或系统临时目录确定;文件名会被清理并加 UID 与 part id 前缀防止冲突。MAIL_ATTACHMENT_UPLOAD_DIR 可限制出站 file_path 附件范围。项目提供 Dockerfile 与 docker-compose,使用 scratch 运行时镜像约 16.9 MB,支持 amd64/arm64。工具链要求 Rust 1.90(代码库的 let-chains 需要 >= 1.88)。
四、适用场景 适合需要让 AI 智能体在多个邮箱账户和服务商之间执行邮件读取、搜索、发送、回复、转发、批量操作和附件下载的场景,尤其是需要 OAuth2、多账户、Microsoft Graph 或 EWS 支持的集成环境。
五、限制与缺失信息 HTTP 传输端点没有内置认证。附件出站范围限制为可选开启,未设置时行为不变。关于具体安装命令、授权配置步骤、收费方式或价格、平台支持细节,资料中暂未提供。