关于 Email sending MCP 💌
Resend MCP 服务为 AI Agent 提供访问 Resend 平台的能力,可发送和接收邮件,并管理联系人、群发邮件、域名等资源。它同时提供远程托管版本和可本地运行的开源包 resend-mcp。
主要功能
- 01远程服务,支持 OAuth 或 API key 登录
- 02本地运行,支持 stdio 与 HTTP 两种传输方式
- 03发送和接收邮件
- 04管理联系人、群发邮件和域名
- 05通过 --allowed-file-dirs 限制附件读取目录
适用场景
- 01让编码 Agent 在开发过程中发送测试邮件
- 02通过自然语言管理邮件联系人与群发任务
- 03在无浏览器环境中以 API key 方式接入
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Resend MCP 服务
将你的 AI Agent 连接到 Resend 平台。直接通过 Claude、Cursor 或 Claude Code 等任意 MCP 客户端发送和接收邮件、管理联系人、群发邮件、域名等。
我们同时提供由 Resend 托管的远程 MCP 服务和本地 MCP 服务(本软件包)。
远程 MCP 服务
Resend 托管的 MCP 服务地址:
https://mcp.resend.com/mcp
连接任何支持远程服务(Streamable HTTP)的 MCP 客户端。无需安装,也无需运行本地进程,因此最适合 Claude 等 Web 客户端和托管式 Agent 平台。
连接时,客户端会打开浏览器窗口,让你登录 Resend 并通过 OAuth 授权访问。
Claude Code
claude mcp add --transport http resend https://mcp.resend.com/mcp
然后在 Claude Code 中运行 /mcp,并选择 resend,完成 OAuth 登录。
Claude
在 Claude(Web 版或桌面版)中,打开 Settings > Connectors > Add custom connector 并输入:
https://mcp.resend.com/mcp
Cursor
打开命令面板,选择“Cursor Settings” > “MCP” > “Add new global MCP server”。
{
"mcpServers": {
"resend": {
"url": "https://mcp.resend.com/mcp"
}
}
}
Codex
codex mcp add resend --url https://mcp.resend.com/mcp
Copilot
要在 VS Code 中使用 GitHub Copilot,请将以下内容添加到 settings.json:
{
"mcp": {
"servers": {
"resend": {
"type": "http",
"url": "https://mcp.resend.com/mcp"
}
}
}
}
Windsurf
{
"mcpServers": {
"resend": {
"serverUrl": "https://mcp.resend.com/mcp"
}
}
}
Warp
在 Warp 的 Settings 中,前往 Agents > MCP servers,然后点击 +Add 添加新服务。
{
"resend": {
"serverUrl": "https://mcp.resend.com/mcp"
}
}
使用 API 密钥进行身份验证
如果你的客户端运行在无法通过浏览器登录的环境中(例如服务器、CI 或无头 Agent),请传递 Resend API 密钥作为 Bearer 令牌,而不是使用 OAuth。
Claude Code:
claude mcp add --transport http resend https://mcp.resend.com/mcp --header "Authorization: Bearer re_xxxxxxxxx"
JSON 配置(Cursor、Windsurf 等),添加 Authorization 标头:
{
"mcpServers": {
"resend": {
"url": "https://mcp.resend.com/mcp",
"headers": {
"Authorization": "Bearer re_xxxxxxxxx"
}
}
}
}
本地 MCP 服务
托管服务运行的代码与 NPM 上以 resend-mcp 名义提供的开源代码相同。如果你更愿意自行运行服务,可以使用 npx 将其集成到任何受支持的 MCP 客户端中。你需要:
本地服务支持两种传输模式:stdio(默认)和 HTTP。
选择你偏好的模式和客户端,开始使用。记得将 re_xxxxxxxxx 替换为你的实际 API 密钥。
Stdio 传输(默认)
快速设置
为检测到或选定的所有 Agent 和编辑器安装:
npx add-mcp resend-mcp --name resend --env "RESEND_API_KEY=re_xxxxxxxxx"
Claude Code
claude mcp add resend -e RESEND_API_KEY=re_xxxxxxxxx -- npx -y resend-mcp
Codex
codex mcp add resend \
--env RESEND_API_KEY=re_xxxxxxxxx \
-- npx -y resend-mcp
Cursor
打开命令面板,选择“Cursor Settings” > “MCP” > “Add new global MCP server”。
{
"mcpServers": {
"resend": {
"command": "npx",
"args": ["-y", "resend-mcp"],
"env": {
"RESEND_API_KEY": "re_xxxxxxxxx"
}
}
}
}
Claude Desktop
打开 Claude Desktop 设置 > “Developer”选项卡 > “Edit Config”。
{
"mcpServers": {
"resend": {
"command": "npx",
"args": ["-y", "resend-mcp"],
"env": {
"RESEND_API_KEY": "re_xxxxxxxxx"
}
}
}
}
Copilot
要在 VS Code 中使用 GitHub Copilot,请将以下内容添加到 settings.json:
{
"mcp": {
"servers": {
"resend": {
"command": "npx",
"args": ["-y", "resend-mcp"],
"env": {
"RESEND_API_KEY": "re_xxxxxxxxx"
}
}
}
}
}
Gemini CLI
{
"mcpServers": {
"resend": {
"command": "npx",
"args": ["-y", "resend-mcp"],
"env": {
"RESEND_API_KEY": "re_xxxxxxxxx"
}
}
}
}
OpenCode
将以下内容添加到你的 opencode.json 配置中:
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"resend": {
"type": "local",
"command": ["npx", "-y", "resend-mcp"],
"enabled": true,
"environment": {
"RESEND_API_KEY": "re_xxxxxxxxx"
}
}
}
}
Windsurf
{
"mcpServers": {
"resend": {
"command": "npx",
"args": ["-y", "resend-mcp"],
"env": {
"RESEND_API_KEY": "re_xxxxxxxxx"
}
}
}
}
Devin
在 Devin 中,打开 Settings > Connections > MCP Servers,然后点击 Add a custom MCP。完整步骤请参阅 Devin 指南。
{
"mcpServers": {
"resend": {
"command": "npx",
"args": ["-y", "resend-mcp"],
"env": {
"RESEND_API_KEY": "re_xxxxxxxxx",
"SENDER_EMAIL_ADDRESS": "[email protected]"
}
}
}
}
HTTP 传输
通过 HTTP 运行服务,用于远程或基于 Web 的集成,例如部署在你自己的隧道或反向代理后面,而不是使用 Resend 的托管远程 MCP 服务。在 HTTP 模式下,每个客户端都通过在 Authorization 标头中传递 Resend API 密钥作为 Bearer 令牌来进行身份验证。
启动服务:
npx -y resend-mcp --http --port 3000
服务将在 http://127.0.0.1:3000 上监听,并使用 Streamable HTTP 在 /mcp 提供 MCP 端点。
Claude Code
claude mcp add resend --transport http http://127.0.0.1:3000/mcp --header "Authorization: Bearer re_xxxxxxxxx"
Cursor
打开命令面板,选择“Cursor Settings” > “MCP” > “Add new global MCP server”。
{
"mcpServers": {
"resend": {
"url": "http://127.0.0.1:3000/mcp",
"headers": {
"Authorization": "Bearer re_xxxxxxxxx"
}
}
}
}
你也可以通过 MCP_PORT 环境变量设置端口:
MCP_PORT=3000 npx -y resend-mcp --http
作为库使用
HTTP 传输也已导出,因此可以嵌入其他服务中,而不是通过 CLI 运行。每个连接的客户端都使用自己作为 Bearer 令牌传入的 Resend API 密钥进行身份验证。
import { runHttp } from 'resend-mcp/http';
// Options are optional — pass `senderEmailAddress` / `replierEmailAddresses`
// to set defaults. Binds the port and returns the Node http.Server, exposing
// the MCP endpoint at POST/GET/DELETE /mcp and a GET /health check.
const server = await runHttp({}, 3000);
默认情况下,服务会应用仅限 localhost 的 Host 验证(防止 DNS 重绑定)。
部署在反向代理或负载均衡器后面时,服务会通过每个请求的 Bearer API 密钥进行保护;请将
host 设置为 0.0.0.0,这样代理转发的 Host 和负载均衡器运行状况检查就不会被拒绝并返回
403 Invalid Host:
const server = await runHttp({}, 3000, { host: '0.0.0.0' });
// or pin specific hostnames instead of disabling validation:
const server = await runHttp({}, 3000, { allowedHosts: ['mcp.example.com'] });
通过 CLI,这对应于 --host / --allowed-hosts(或 MCP_HOST /
MCP_ALLOWED_HOSTS)。
选项
你可以传入其他参数来配置本地服务:
--key:你的 Resend API 密钥(仅用于 stdio 模式,因为 HTTP 模式使用客户端传入的 Bearer 令牌)--sender:来自已验证域名的默认发件人邮箱地址--reply-to:默认回复邮箱地址(可多次指定)--http:使用 HTTP 传输而非 stdio(默认:stdio)--port:使用--http时的 HTTP 端口(默认:3000,或使用MCP_PORT环境变量)--host:使用--http时用于防止 DNS 重绑定的主机(默认:127.0.0.1,或使用MCP_HOST)。在代理/负载均衡器后面时,设置为0.0.0.0可禁用Host验证。--allowed-hosts:使用--http时,以逗号分隔的Host允许列表(或使用MCP_ALLOWED_HOSTS)--allowed-file-dirs:以逗号分隔的目录列表,本地文件附件和 CSV 导入可从这些目录读取(或使用MCP_ALLOWED_FILE_DIRS)。未设置时,stdio 不受限制;除非设置,否则通过--http时始终禁用。
环境变量:
RESEND_API_KEY:你的 Resend API 密钥(stdio 必需;HTTP 可选,因为客户端会通过 Bearer 令牌传入)SENDER_EMAIL_ADDRESS:来自已验证域名的默认发件人邮箱地址(可选)REPLY_TO_EMAIL_ADDRESSES:以逗号分隔的回复邮箱地址(可选)MCP_PORT:使用--http时的 HTTP 端口(可选)MCP_HOST:使用--http时用于防止 DNS 重绑定的主机(可选)MCP_ALLOWED_HOSTS:使用--http时,以逗号分隔的Host允许列表(可选)MCP_ALLOWED_FILE_DIRS:可读取本地文件的目录列表,以逗号分隔(可选)
说明
如果你没有提供发件人邮箱地址,MCP 服务会在每次调用工具时要求你提供。
警告
send-email(attachments[].filePath)和create-contact-import(filePath)会读取本地文件。通过--http时默认禁用此功能,以防远程客户端读取服务的磁盘;使用--allowed-file-dirs可允许访问指定目录。在 stdio 模式下,设置--allowed-file-dirs可阻止受到提示词注入的 Agent 附加所选文件夹以外的文件。
MCP 服务工具
Resend 的 MCP 服务通过单一集成,为你的 AI Agent 原生提供对整个 Resend 平台的访问权限。你可以使用自然语言管理电子邮件基础设施的各个方面。
- 电子邮件:发送、列出、获取、取消、更新、共享和批量发送电子邮件。检索送达和互动指标。支持 HTML、纯文本、附件(本地文件、URL 或 base64)、CC/BCC、回复地址、定时发送、标签、自定义标头、基于主题的发送和幂等键。
- 接收的电子邮件:列出并读取收到的电子邮件。列出并下载收到的电子邮件附件。
- 收件箱:创建、列出、获取、更新和移除收件箱。读取和更新收件箱 Agent 设置。列出、搜索、获取、更新和移除会话,并添加、设置或移除会话标签。列出和获取会话中的电子邮件,并通过附件和自定义标头进行回复或转发。创建、列出、更新和移除标签。创建、列出、获取、更新、移除和发送草稿,并添加附件。从收件箱发送新邮件以开始会话。在回复、转发、创建草稿、发送草稿和发送新邮件时支持幂等键。
- 模板:创建、列出、获取、更新、发布、复制和移除电子邮件模板。支持撰写模板内容和
{{{VARIABLE}}}占位符。 - 联系人:创建、列出、获取、更新和移除联系人。管理细分群组成员资格、主题订阅和 CSV 联系人导入。支持自定义联系人属性。
- 群发:创建、发送、取消、复制、列出、获取、更新和移除群发活动。列出群发活动中被点击的链接,以及按事件类型(已发送、已送达、已打开、已点击、退信、投诉、已取消订阅、已抑制)分类的收件人。支持定时发送、个性化占位符和预览文本。
- 自动化:创建、列出、获取、更新、复制和移除自动化。查看自动化的运行记录。
- 事件:向事件发送数据,以触发联系人的自动化。创建、更新和移除事件定义。
- 域名:创建、列出、获取、更新、移除和验证发件人域名。配置跟踪、TLS 以及发送和接收功能。创建并验证域名声明。
- 细分群组:创建、列出、获取、更新和移除受众细分群组。
- 抑制名单:单独或批量列出、获取、添加和移除抑制名单条目。硬退信和垃圾邮件投诉会自动加入抑制名单;手动添加地址以遵从勿联系请求。
- 主题:创建、列出、获取、更新和移除订阅主题。
- 联系人属性:创建、列出、获取、更新和移除自定义联系人属性。
- API 密钥:创建、列出、更新和移除 API 密钥。
- Webhook:创建、列出、获取、更新和移除用于事件通知的 Webhook,并检查其送达历史记录——发送到 Webhook 的事件、单个事件的负载,以及尝试送达的记录。重放事件以排队安排再次送达,并轮换 Webhook 的签名密钥。
- 日志:列出并检查 API 请求日志,包括完整的请求和响应正文。
- 用量:检索账户级用量和配额信息:电子邮件、联系人、细分群组、群发、AI 点数、自动化运行次数、域名和 API 速率限制。
- 编辑器:连接到(以及断开与)Resend 控制面板中的可视化编辑器,并在协作处理群发和模板时读取草稿内容。
本地开发
- 克隆此项目并构建:
git clone https://github.com/resend/resend-mcp.git
pnpm install
pnpm run build
- 如需使用本地构建,请将
npx命令替换为本地构建的路径:
Claude Code(stdio):
claude mcp add resend -e RESEND_API_KEY=re_xxxxxxxxx -- node ABSOLUTE_PATH_TO_PROJECT/dist/index.js
Claude Code(HTTP):
claude mcp add resend --transport http http://127.0.0.1:3000/mcp --header "Authorization: Bearer re_xxxxxxxxx"
Cursor / Claude Desktop(stdio):
{
"mcpServers": {
"resend": {
"command": "node",
"args": ["ABSOLUTE_PATH_TO_PROJECT/dist/index.js"],
"env": {
"RESEND_API_KEY": "re_xxxxxxxxx"
}
}
}
}
Cursor(HTTP):
{
"mcpServers": {
"resend": {
"url": "http://127.0.0.1:3000/mcp",
"headers": {
"Authorization": "Bearer re_xxxxxxxxx"
}
}
}
}
使用 MCP 客户端进行实时测试
开发时,你可以一边在代码中编辑,一边在真实的 MCP 客户端会话中测试更改。
原理:运行 tsc --watch,持续重新构建 dist/;然后在另一个目录中,让单独的 MCP 客户端连接到构建生成的 dist/index.js。要应用代码更改时,重启 MCP 客户端会话(MCP 服务是长期运行的 stdio 进程,不会热重载)。
Claude Code 示例:
-
运行 TypeScript 监视器,以便在保存时自动重新构建:
pnpm tsc --watch -
在另一个目录中,创建一个
.mcp.json,指向构建输出:mkdir -p /tmp/mcp-test// /tmp/mcp-test/.mcp.json { "mcpServers": { "resend-dev": { "command": "node", "args": ["/absolute/path/to/resend-mcp/dist/index.js"], "env": { "RESEND_API_KEY": "re_xxxxxxxxx" } } } } -
从该目录启动 Claude Code,并使用 MCP 工具。更改代码后,启动新的 Claude Code 会话以加载新构建的内容。
同样的原则适用于任何 MCP 客户端——将测试环境与开发环境分开,使用 dist/index.js 的绝对路径,并在重新构建后重新连接 MCP 服务。
使用 MCP Inspector 进行测试
注意: 请确保已先构建项目(参见上文的本地开发部分)。
使用 Stdio 传输
-
设置 API 密钥:
export RESEND_API_KEY=re_your_key_here -
启动 Inspector:
pnpm inspector -
在浏览器中(Inspector UI):
- 选择 stdio(启动进程)。
- 命令:
node - 参数:
dist/index.js(或dist/index.js的完整路径) - 环境变量:
RESEND_API_KEY=re_your_key_here(如果已在同一终端中导出该变量,也可以留空)。 - 点击 Connect,然后使用“List tools”验证服务是否正常运行。
使用 HTTP 传输
-
在一个终端中启动 HTTP 服务:
node dist/index.js --http --port 3000 -
在另一个终端中启动 Inspector:
pnpm inspector -
在浏览器中(Inspector UI):
- 选择 Streamable HTTP(连接到 URL)。
- URL:
http://127.0.0.1:3000/mcp - 添加自定义请求头:
Authorization: Bearer re_your_key_here,并启用切换开关。 - 点击 Connect,然后使用“List tools”验证服务是否正常运行。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。