关于 email
@wraps.dev/mcp 是供 AI Agent 使用的 Amazon SES 服务,可发送邮件并检查账户和投递状态。它通过 stdio 在本地运行,AWS 凭据保留在本机;配置后还可提供 Wraps 历史记录和事件工具。
主要功能
- 01通过 Amazon SES 发送邮件
- 02检查域名验证和 DKIM
- 03查看抑制列表与沙盒状态
- 04查看近期发送记录和投递事件
- 05通过收件人限制约束发送
- 06可选的强制模式审批
适用场景
- 01在 AI 工作流中发送事务邮件
- 02检查 SES 域名是否已具备发送条件
- 03发送前核查抑制列表条目
- 04跟踪投递、退信、投诉、打开或点击事件
MCP 相关
MCP 服务提供发送邮件及检查 SES 配置、抑制列表和状态的工具。配置 Wraps 事件管道后,还可提供发送历史和投递事件。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
npx -y @wraps.dev/mcpAWS_REGIONRegion your Wraps stack is deployed in. Optional only if your active AWS profile supplies one — SES identities are per-region.AWS_PROFILEAWS profile to use. Credentials are read locally and never leave the machine.WRAPS_WRITE_ENABLEDSet to true to enable the send_email tool. Read-only by default.WRAPS_FROM_EMAILDefault from address for send_email. Must be a domain verified in your SES account.WRAPS_ALLOWED_RECIPIENTSComma-separated addresses the agent may send to. Restricts send_email when write mode is on.WRAPS_ALLOWED_RECIPIENT_DOMAINSComma-separated domains the agent may send to. Matching is exact; list subdomains explicitly.WRAPS_HISTORY_TABLE_NAMEDynamoDB table holding email history. Defaults to wraps-email-history.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
7收录的工具列表 · 更新于 4 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| to | any | 是 | 收件人地址,或最多包含 1000 个地址的数组。 |
| from | string | 否 | 发件人地址。必须是此账户中已验证的 SES 身份。默认为 WRAPS_FROM_EMAIL。 |
| html | string | 否 | HTML 正文。提供 `html`、`text` 或两者;至少需要提供其中一项。 |
| text | string | 否 | 纯文本正文。请提供 `html`、`text` 或两者;至少需要提供一个。 |
| subject | string | 是 | 主题行。 |
详细介绍
@wraps.dev/mcp
用于 Amazon SES 的 MCP 服务。可让 AI Agent 通过你自己的 AWS 账户发送电子邮件、检查域名验证和 DKIM、查询抑制列表,并查看账户是否仍处于 SES 沙盒中。
适用于任何 SES 账户。Wraps 还提供发送历史记录和投递事件。
通过 stdio 在本地运行。你的 AWS 凭证不会离开你的计算机。
前提条件
- 已在环境中配置 AWS 凭证(配置文件、SSO 或环境变量)
- 目标区域中有 SES 账户
- 仅适用于
list_recent_sends和get_email_event_log:已部署 Wraps 事件流水线,使用npx @wraps.dev/cli email init部署
工具
| 工具 | 描述 | 需要 Wraps? | 写入? |
|---|---|---|---|
send_email | 通过你的 SES 账户发送事务性电子邮件 | 否 | 是 — 需要 WRAPS_WRITE_ENABLED=true |
verify_domain_status | 检查发信域名的验证和 DKIM 状态 | 否 | 否 |
list_suppressions | 列出 SES 抑制列表中的地址(分页显示,并明确提示结果是否被截断),或通过 email 精确检查一个地址 | 否 | 否 |
get_setup_status | 检查账户是否处于 SES 沙盒中,并了解首次发送前的下一步操作 | 否 | 否 |
estimate_cost | 估算指定发送量下 Wraps + AWS 的月度费用,包括账户所属的 SES 定价方案。无需 AWS 凭证 | 否 | 否 |
list_recent_sends | 列出电子邮件历史记录中的近期发送 | 是 | 否 |
get_email_event_log | 获取邮件的完整投递事件日志(发送、投递、退信、投诉、打开、点击) | 是 | 否 |
check_send_status | 通过 approvalId 轮询 pending_approval 发送的结果(仅限强制模式) | 是 | 否 |
设置
Claude Desktop
添加到 ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"wraps": {
"command": "npx",
"args": ["-y", "@wraps.dev/mcp"],
"env": {
"AWS_REGION": "us-east-1",
"AWS_PROFILE": "your-aws-profile"
}
}
}
}
Claude Code
添加到项目根目录下的 .mcp.json:
{
"mcpServers": {
"wraps": {
"command": "npx",
"args": ["-y", "@wraps.dev/mcp"],
"env": {
"AWS_REGION": "us-east-1"
}
}
}
}
将 AWS_REGION 设置为部署 Wraps 堆栈的区域 — SES 身份按区域划分,在其他区域验证过的域名会显示为“未找到”。Claude Code 会继承 shell 的 AWS 环境;如果 AWS_REGION(或当前 AWS 配置文件中的区域)已在其中设置,可以完全省略 env 块;如果两者都未提供区域,服务会在启动时失败。
配置
所有配置均通过环境变量完成。
| 变量 | 必需 | 默认值 | 描述 |
|---|---|---|---|
AWS_REGION | 是* | — | 部署 Wraps 堆栈的 AWS 区域。*除非当前 AWS 配置文件(~/.aws/config)提供了区域,否则此项为必需 — 服务会依次解析 AWS_REGION、AWS_DEFAULT_REGION 和配置文件中的区域;如果均未设置,则会在启动时报错。 |
WRAPS_HISTORY_TABLE_NAME | 否 | wraps-email-history | 用于电子邮件历史记录的 DynamoDB 表名 |
WRAPS_ACCOUNT_ID | 否 | 通过 STS 自动检测 | 你的 AWS 账户 ID(设置后跳过 STS 调用) |
WRAPS_WRITE_ENABLED | 否 | false | 设置为 true 以启用 send_email |
WRAPS_FROM_EMAIL | 否 | — | send_email 的默认 from 地址 |
写入模式
send_email 默认处于禁用状态。设置 WRAPS_WRITE_ENABLED=true 即可启用。from 地址必须是已在你的 SES 账户中验证的域名。
{
"mcpServers": {
"wraps": {
"command": "npx",
"args": ["-y", "@wraps.dev/mcp"],
"env": {
"AWS_REGION": "us-east-1",
"WRAPS_WRITE_ENABLED": "true",
"WRAPS_FROM_EMAIL": "[email protected]"
}
}
}
}
发送防护措施
启用写入模式后,send_email 工具默认可以联系任何经过 SES 验证的地址。使用这些环境变量来限制 Agent 的发送范围:
| 变量 | 默认值 | 说明 |
|---|---|---|
WRAPS_ALLOWED_RECIPIENTS | —(不限制) | Agent 可以发送邮件的精确地址列表,以逗号分隔。设置后,不在此列表或 WRAPS_ALLOWED_RECIPIENT_DOMAINS 中的地址都会被拒绝。 |
WRAPS_ALLOWED_RECIPIENT_DOMAINS | —(不限制) | Agent 可以发送邮件的域名,以逗号分隔(例如 company.com,partner.org)。与 WRAPS_ALLOWED_RECIPIENTS 组合使用;收件人匹配任一列表即可发送。匹配是精确的:example.com 允许 [email protected],但不允许 [email protected] 这样的子域名地址——请明确列出每个子域名。 |
WRAPS_MAX_RECIPIENTS | 50 | 每次 send_email 调用允许的最大收件人数。 |
WRAPS_ALLOW_FROM_OVERRIDE | false | 设置为 true 后,Agent 可以提供与 WRAPS_FROM_EMAIL 不同的 from 地址。设置为 false(默认值)时,如果调用方提供的 from 与配置的地址不匹配,该地址会被拒绝。 |
注意: 以
WRAPS_WRITE_ENABLED=true运行且未设置允许列表时,Agent 可以不受限制地向 SES 账户中的任何地址发送邮件。
请求缺失的输入(询问)
如果 MCP 客户端支持询问,send_email 会在缺少输入时向你询问,而不是报错。它绝不会要求你确认普通发送,而且只有在通过上述写入、收件人数和允许列表检查后才会询问。
- 未提供发件人。 如果调用中没有
from,且未设置WRAPS_FROM_EMAIL,客户端会提示你输入发件人地址。 - SES 沙盒。 如果 SES 因账户处于沙盒模式而拒绝收件人,客户端会询问是否改为向 AWS 邮箱模拟器(
[email protected])发送邮件,以验证发送功能是否正常。此操作只会发生一次,且模拟器地址必须通过你的收件人允许列表检查。结果会说明邮件已发送到模拟器,而非原始收件人。
如果你拒绝或取消,或者客户端不支持询问,返回的错误与之前相同。无需进行任何设置。强制模式不使用询问;审批仍由操作员负责。
强制模式(Agent 强制器)
对于通过 wraps email agent create 配置的 Agent,MCP 服务会以强制模式运行。Agent 的 AWS 凭证只能调用客户侧的强制器 Lambda,无法直接调用 SES。所有策略(紧急停用开关、收件人允许列表、每小时/每日上限)均由该 Lambda 决定,因此会跳过上述本地防护措施。
| 变量 | 必需 | 描述 |
|---|---|---|
WRAPS_AGENT_ID | 是(强制模式下) | Agent 的 ID。与强制器函数一同设置时会启用强制模式。 |
WRAPS_AGENT_ENFORCER_ARN | 是(强制模式下) | 客户的 wraps-agent-enforcer Lambda 的限定 Agent 别名 ARN(arn:aws:lambda:<region>:<acct>:function:wraps-agent-enforcer:agent-<agentId>)。仅函数名称或未限定的 ARN 会调用 $LATEST,强制器会将其视为平台调用方并阻止 Agent 发送邮件。 |
同时设置这两项后,send_email 会调用强制器而非 SES,并针对策略处理结果返回结构化状态,而不是错误:
sent— 已送达,并附带messageId。pending_approval— 需要操作员批准;使用返回的approvalId轮询check_send_status。blocked— 因策略而被拒绝(紧急停用开关、允许列表或上限),并附带reason。
只有传输或配置失败才会作为错误返回。check_send_status 工具仅在强制模式下注册。
强制模式下,每次发送只能有一个收件人。传入一个地址字符串或只含一个地址的数组;含多个收件人的 to 数组会作为错误被拒绝(请为每位收件人各发送一封邮件)。请注意,强制模式下不适用 WRAPS_ALLOWED_RECIPIENTS、WRAPS_ALLOWED_RECIPIENT_DOMAINS、WRAPS_MAX_RECIPIENTS 和 WRAPS_ALLOW_FROM_OVERRIDE — 收件人和发件人策略完全由 Lambda 强制执行。
回复和会话串接
强制模式下的 send_email 接受三个可选字段,用于对话式发送 —
SDR 序列、日程安排后续跟进,以及任何可能收到人工回复的场景:
| 字段 | 用途 |
|---|---|
replyTo | 人工回复应送达的单个地址。不设置时,回复会送到 Agent 自己的邮箱 — 适用于 support@,但如果需要由某个人接手对话,则不适用。 |
inReplyTo | 所回复邮件的 Message-ID,例如 <[email protected]>。 |
references | 用空格分隔的会话至今所有 Message-ID 链。请与 inReplyTo 一同设置,以便后续邮件串接到原会话中,而非作为孤立邮件送达。 |
replyTo 不会放宽发件人锁定:from 仍会强制设为 Agent 自己的已验证身份,将 replyTo 指向队友正是预期用途。强制器会拒绝包含多个地址的 replyTo,也会拒绝含有换行符或不可打印字符的 inReplyTo/references — 这两种情况都会返回附带原因的 blocked 状态,且均不会占用速率限制额度。
需要使用基于 @wraps/core 2026-08-28 或更高版本构建的强制器 Lambda;如果使用较旧的强制器,这些字段会被忽略,而不会报错。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。