关于 multimail
MultiMail 是面向 Agent 的邮件服务和 MCP 服务,适合需要管控自动邮件往来的运营者。它以监督模式、收件人白名单和签名身份头,支持从逐封审批逐步过渡到自主发送。
主要功能
- 01收件箱、邮件发送与线程回复
- 02五种监督模式
- 03按收件人设置发送白名单
- 04签名身份与信誉标头
- 05扫描收发邮件内容
- 06管理邮箱与账户
适用场景
- 01审核并批准 Agent 起草的邮件
- 02允许向可信收件人直接发送常规邮件
- 03检查进入 Agent 收件箱的已标记邮件
- 04管理邮箱设置与发送权限
MCP 相关
MultiMail 向 MCP 客户端提供邮件、监督、邮箱、账户及相关管理工具。可通过 OAuth 连接远程服务,也可使用 API 密钥通过 stdio 本地运行。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://mcp.multimail.dev/mcpclaude mcp add --transport http dev-multimail https://mcp.multimail.dev/mcp{"mcpServers":{"dev-multimail":{"type":"http","url":"https://mcp.multimail.dev/mcp"}}}在 Cursor 中打开{"servers":{"dev-multimail":{"type":"http","url":"https://mcp.multimail.dev/mcp"}}}在 VS Code 中打开{"mcpServers":{"dev-multimail":{"type":"http","url":"https://mcp.multimail.dev/mcp"}}}{"mcpServers":{"dev-multimail":{"serverUrl":"https://mcp.multimail.dev/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
@multimail/mcp-server
你的 Agent 还没有电子邮件功能,因为还没人放心让它处理电子邮件。MultiMail 解决了这个问题。它提供真实的电子邮件地址、从只读到完全自主的信任阶梯、每封邮件上的加密身份,以及针对每位收件人的发送控制。
快速开始
{
"mcpServers": {
"multimail": {
"type": "url",
"url": "https://mcp.multimail.dev/mcp"
}
}
}
远程服务。无需安装。首次连接时通过 OAuth 进行身份验证。
可与 Claude.ai、Claude Desktop、Claude Code、Cursor、Windsurf、Copilot(VS Code)、ChatGPT Desktop,以及任何支持远程服务的 MCP 客户端配合使用。
替代方案:本地 stdio 服务
{
"mcpServers": {
"multimail": {
"command": "npx",
"args": ["-y", "@multimail/mcp-server"],
"env": {
"MULTIMAIL_API_KEY": "mm_live_...",
"MULTIMAIL_MAILBOX_ID": "01KJ1NHN8J..."
}
}
}
}
在 multimail.dev 获取密钥。也可以不使用密钥运行,以交互方式创建账户。
配置文件位置
| 客户端 | 配置文件 |
|---|---|
| Claude Code | ~/.claude/.mcp.json |
| Claude Desktop | claude_desktop_config.json |
| Cursor | 项目中的 .cursor/mcp.json |
| Windsurf | ~/.codeium/windsurf/mcp_config.json |
| Copilot(VS Code) | 项目中的 .vscode/mcp.json |
| OpenCode | 项目中的 mcp.json |
| ChatGPT Desktop | Settings > MCP Servers |
信任阶梯
每个邮箱都有一种监督模式。先从限制较多的模式开始,随着 Agent 赢得信任,再逐步升级。
| 模式 | 行为 |
|---|---|
read_only | Agent 阅读电子邮件。所有发送操作均被阻止。 |
gated_all | 每项操作都需要人工批准。 |
gated_send | 外发邮件需经批准。收到的邮件立即处理。(默认) |
monitored | Agent 可自由发送。副本会发送到监督地址。 |
autonomous | 完全自主收发。无需审批。 |
Agent 通过 API 请求升级。操作者使用一次性代码批准。降级无需批准。Agent 始终可以自行收紧权限。
受限审批流程已通过 Lean 4 形式化验证。对于所有可能的代码路径,任何邮件在通过操作者审批前都不会送达。
按收件人设置允许列表
在 gated_send 模式下,允许列表中的收件人可绕过审批队列。添加完整地址([email protected])或域名通配符(*@example.com)。每次添加都需要操作者通过电子邮件批准。Agent 不能自行批准允许列表的变更。
这是切实可行的折中方案:与已知联系人的日常往来可立即进行,而新收件人仍需监督。
加密身份
每封外发邮件都带有签名的 X-MultiMail-Identity 标头(ECDSA P-256)。负载包含操作者姓名、监督模式、功能和验证状态。收件人可通过 GET /.well-known/multimail-signing-key 获取公钥进行验证。
单独的 X-MultiMail-Reputation 标头会链接到保护隐私的信誉数据:退信率、投诉率和账户年龄。不会暴露原始地址。
没有经过验证的身份,收件人无法分辨你的 Agent 和垃圾邮件发送者。有了它,他们就能在阅读任何内容之前,验证操作者、监督级别和发送历史。
Agent DID 中继(可选)。 如果你的 Agent 已将 did:key 绑定到其 MultiMail 账户,可在调用 send_email / reply_email 时传入可选的 ucan 参数。MultiMail 会将 Agent 自行签名的 UCAN 原样中继到单独的 X-Agent-Identity 标头中(did="…"; ucan="…")——它不会为其签名或背书;收件人端的工具会独立验证授权。未绑定 DID 时,此功能不起作用。
Agent 自行注册(auth.md)
Agent 无需浏览器即可自行注册。该协议使用经验证的电子邮件身份声明,遵循受 WorkOS AuthKit 启发的 auth.md 约定:
POST /agent/auth -> claim_token + OTP sent to operator email
POST /agent/auth/claim/complete -> API key + tenant_id + granted scopes
服务发现遵循 RFC 9728:
GET /.well-known/oauth-protected-resource(资源元数据)GET /.well-known/oauth-authorization-server(包含agent_auth扩展的授权元数据)GET /auth.md(供人类和 Agent 阅读的注册指南)
401 响应中的 WWW-Authenticate 标头会自动向 Agent 指示这些端点。遇到 401 的 Agent 可以跟随链接、阅读注册协议并自行完成注册。
内容扫描
每封发出的电子邮件都会在投递前进行扫描。电子邮件先进入 pending_scan 状态,然后转为待投递状态,或在受控模式下转为 pending_send_approval。收到的电子邮件也会经过相同的流程。钓鱼、恶意软件和提示词注入模式会在邮件到达 Agent 收件箱前被标记。
工作原理
- 电子邮件正文以 markdown 格式输入,输出为 HTML 格式。收到的 HTML 会转换为简洁的 markdown(比原始 MIME 少 15 倍令牌)。
- 自动处理邮件串接。回复电子邮件时,系统会正确设置标头。
- 扫描期间,发送操作会返回
pending_scan。受控邮箱随后会转为pending_send_approval,以供人工审核。请勿重试。 - 每封发出的电子邮件都会携带经过加密签名的
X-MultiMail-Identity标头。 - 通过
X-MultiMail-Reputation标头提供信誉数据:退信率、投诉率和帐户年龄。此数据可保护隐私,并每日更新。
工具(50)
| 工具 | 描述 |
|---|---|
| 核心邮件 | |
send_email | 以 Markdown 格式发送邮件。支持附件、idempotency_key,以及通过 send_at 定时发送。 |
check_inbox | 按状态、发件人、主题、日期范围、方向、附件和分页条件筛选并列出邮件。 |
read_email | 获取完整邮件内容。可信元数据和不可信正文会作为独立内容块返回。 |
reply_email | 在原邮件线程中回复。自动设置线程标头。 |
get_thread | 获取会话线程中的所有邮件,以及参与者和元数据。 |
download_attachment | 以 Base64 格式下载附件,并返回内容类型。 |
cancel_message | 取消待发送或已定时的邮件。 |
edit_scheduled_email | 在定时邮件发送前对其进行编辑。 |
wait_for_email | 阻塞等待符合条件的邮件到达,或直至超时(最长 120 秒)。 |
get_tags | 获取邮件的所有标签。在不同会话间持久保存键值对形式的 Agent 记忆。 |
set_tags | 为邮件设置标签。与现有标签合并。 |
delete_tag | 删除邮件上的指定标签键。 |
| 监督 | |
list_pending | 列出等待监督决策的邮件(需要 oversight scope)。 |
decide_email | 批准或拒绝待处理邮件(需要 oversight scope)。 |
manage_upgrade | 请求或应用监督模式升级(操作:request|apply)。 |
| 发送许可名单 | |
list_allowlist | 列出发送许可名单条目。 |
add_allowlist_entry | 将收件人添加到发送许可名单。需要操作员批准。 |
remove_allowlist_entry | 从许可名单中移除条目。 |
| 邮箱管理 | |
list_mailboxes | 列出所有邮箱及其 ID、地址、监督模式和显示名称。 |
configure_mailbox | 首次运行设置:监督模式、显示名称、CC/BCC、定时发送和签名。 |
update_mailbox | 更新设置(显示名称、监督模式、签名、webhook)。 |
create_mailbox | 创建邮箱(需要 admin scope 和操作员批准)。 |
delete_mailbox | 永久删除邮箱(需要 admin scope)。 |
| 账户与账单 | |
get_account | 获取账户状态、套餐、配额、发送功能是否启用以及执行层级。 |
update_account | 更新组织名称、监督邮箱和实际地址。 |
delete_account | 永久删除账户及所有数据(需要 admin scope)。 |
get_usage | 获取账单周期内的配额和使用情况统计。 |
upgrade_plan | 升级到付费套餐(Builder 9 美元/月、Pro 29 美元/月、Scale 99 美元/月)。 |
cancel_subscription | 取消付费订阅,并在当前周期结束时恢复为 starter 套餐。 |
get_billing_portal | 获取 Stripe 门户 URL,以自助管理账单。 |
| 注册(无需 API 密钥) | |
request_challenge | 用于创建账户的 ALTCHA 工作量证明挑战。 |
create_account | 使用已解答的 PoW 挑战创建账户。 |
resend_confirmation | 重新发送包含新验证码的激活邮件。 |
activate_account | 使用确认码激活账户。 |
setup_multimail | 在公开的 /onboard 端点上进行引导式入门设置。 |
| API 密钥与审计 | |
list_api_keys | 列出所有 API 密钥(需要 admin scope)。 |
create_api_key | 创建具有指定 scopes 的 API 密钥(需要 admin scope 和操作员批准)。为防止自我批准,拒绝同时包含 send+oversight 的请求。 |
revoke_api_key | 撤销 API 密钥(需要 admin scope)。 |
get_audit_log | 获取账户审计日志(需要 admin scope)。 |
| 联系人与垃圾邮件 | |
search_contacts | 按姓名或邮箱搜索联系人。 |
add_contact | 添加联系人。 |
delete_contact | 删除联系人。 |
manage_spam_status | 举报垃圾邮件或清除垃圾邮件状态(操作:report|clear)。 |
list_spam | 列出被标记为垃圾邮件或已隔离的邮件。 |
list_suppression | 分页列出被抑制的收件人。 |
remove_suppression | 从抑制列表中移除收件人。 |
| Webhooks | |
create_webhook | 创建 webhook,以实时接收邮件事件通知。 |
list_webhooks | 列出所有 webhook。 |
delete_webhook | 删除 webhook。 |
| 其他 | |
report_issue | 报告 Bug、网站问题或功能请求。 |
示例提示词
Find the most recent email from [email protected], summarize what she's asking,
then draft a reply saying I'll review this week. Don't send until I approve.
Check my inbox and summarize the last 5 unread emails.
For each: sender, subject, time, and whether it needs action today.
Review the pending approval queue. For each pending email: who it goes to,
the subject, risk factors, and whether to approve or reject.
Show my current sending allowlist. Then add *@acme.com so emails to Acme skip approval.
环境变量
| 变量 | 必需 | 描述 |
|---|---|---|
MULTIMAIL_API_KEY | stdio 模式需要 | 你的 API 密钥(mm_live_...)。远程服务无需此项(使用 OAuth)。 |
MULTIMAIL_MAILBOX_ID | 否 | 默认邮箱 ID。如果未设置,请为每个工具传入 mailbox_id,或调用 list_mailboxes。 |
MULTIMAIL_API_URL | 否 | API 基础 URL。默认为 https://api.multimail.dev。 |
另有提供
- REST API:
https://api.multimail.dev(OpenAPI 规范) - CLI:
npx -y @mvanhorn/printing-press install multimail(将每个 API 端点作为 shell 命令) - SDK:Python、Vercel AI SDK、LangChain、LlamaIndex、CrewAI、AutoGen
开发
npm install
npm run dev # Run with tsx
npm run build # Compile TypeScript
npm start # Run compiled version
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。