mcpField
E
email

email

本地服务
wraps.dev通信协作15 天前更新

关于 email

@wraps.dev/mcp 是供 AI Agent 使用的 Amazon SES 服务,可发送邮件并检查账户和投递状态。它通过 stdio 在本地运行,AWS 凭据保留在本机;配置后还可提供 Wraps 历史记录和事件工具。

主要功能

  1. 01通过 Amazon SES 发送邮件
  2. 02检查域名验证和 DKIM
  3. 03查看抑制列表与沙盒状态
  4. 04查看近期发送记录和投递事件
  5. 05通过收件人限制约束发送
  6. 06可选的强制模式审批

适用场景

  1. 01在 AI 工作流中发送事务邮件
  2. 02检查 SES 域名是否已具备发送条件
  3. 03发送前核查抑制列表条目
  4. 04跟踪投递、退信、投诉、打开或点击事件

MCP 相关

MCP 服务提供发送邮件及检查 SES 配置、抑制列表和状态的工具。配置 Wraps 事件管道后,还可提供发送历史和投递事件。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"dev-wraps-email": {
"command": "npx",
"args": [
"-y",
"@wraps.dev/mcp"
],
"env": {
"AWS_REGION": "<AWS_REGION>",
"AWS_PROFILE": "<AWS_PROFILE>",
"WRAPS_WRITE_ENABLED": "<WRAPS_WRITE_ENABLED>",
"WRAPS_FROM_EMAIL": "<WRAPS_FROM_EMAIL>",
"WRAPS_ALLOWED_RECIPIENTS": "<WRAPS_ALLOWED_RECIPIENTS>",
"WRAPS_ALLOWED_RECIPIENT_DOMAINS": "<WRAPS_ALLOWED_RECIPIENT_DOMAINS>",
"WRAPS_HISTORY_TABLE_NAME": "<WRAPS_HISTORY_TABLE_NAME>"
}
}
}
}
启动命令npx -y @wraps.dev/mcp
需要配置的环境变量
AWS_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@wraps.dev/mcp0.9.0

工具

7

收录的工具列表 · 更新于 4 天前

参数类型必填说明
toany是收件人地址,或最多包含 1000 个地址的数组。
fromstring否发件人地址。必须是此账户中已验证的 SES 身份。默认为 WRAPS_FROM_EMAIL。
htmlstring否HTML 正文。提供 `html`、`text` 或两者;至少需要提供其中一项。
textstring否纯文本正文。请提供 `html`、`text` 或两者;至少需要提供一个。
subjectstring是主题行。

详细介绍

@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_RECIPIENTS50每次 send_email 调用允许的最大收件人数。
WRAPS_ALLOW_FROM_OVERRIDEfalse设置为 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

评论

支持 Markdown

第一次接触 MCP?

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

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