Resend Email
官方使用 Resend API 直接从你的编辑器发送电子邮件。
你可以用 Resend Email MCP 做什么?
- 发送和管理电子邮件 — 让您的 AI 使用
sendEmail及相关工具发送、安排或批量发送包含 HTML、附件、CC/BCC 和自定义标头的电子邮件。 - 管理联系人和受众 — 创建、更新、导入或删除联系人,并管理他们的细分成员身份和主题订阅。
- 创建和发送广播活动 — 起草、安排和发送包含个性化占位符和预览文本的广播电子邮件。
- 验证和配置域名 — 添加、验证和更新发件人域名,包括跟踪、TLS 和接收设置。
- 检查 API 日志和 Webhook — 检索并检查包含完整请求/响应体的 API 请求日志,并管理 Webhook 端点。
- 协作处理模板和广播 — 连接到 Resend 可视化编辑器,读取并迭代模板和广播的草稿内容。
文档
Resend MCP 服务器
将您的 AI 代理连接到 Resend 平台。直接从任何 MCP 客户端(如 Claude、Cursor 或 Claude Code)发送和接收电子邮件、管理联系人、广播、域名等。
我们提供由 Resend 托管的远程 MCP 服务器和本地 MCP 服务器(此软件包)。
远程 MCP 服务器
Resend 在以下地址托管 MCP 服务器:
https://mcp.resend.com/mcp
连接任何支持远程服务器(可流式传输的 HTTP)的 MCP 客户端。无需安装任何内容,也无需运行本地进程,这使其成为基于 Web 的客户端(如 Claude)和托管代理平台的最佳选择。
连接时,您的客户端会打开一个浏览器窗口,以登录 Resend 并使用 OAuth 批准访问。
Claude Code
claude mcp add --transport http resend https://mcp.resend.com/mcp
然后在 Claude Code 中运行 /mcp 并选择 resend 以完成 OAuth 登录。
Claude
在 Claude(Web 或桌面版)中,打开 设置 > 连接器 > 添加自定义连接器 并输入:
https://mcp.resend.com/mcp
Cursor
打开命令面板,选择“Cursor 设置”>“MCP”>“添加新的全局 MCP 服务器”。
{
"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 的设置中,导航到 代理 > MCP 服务器,然后点击 +添加 以添加新服务器。
{
"resend": {
"serverUrl": "https://mcp.resend.com/mcp"
}
}
使用 API 密钥进行身份验证
如果您的客户端在无法进行浏览器登录的环境中运行(服务器、CI 或无头代理),请传递 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 传输(默认)
快速设置
为所有检测到/选定的代理和编辑器安装:
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 设置”>“MCP”>“添加新的全局 MCP 服务器”。
{
"mcpServers": {
"resend": {
"command": "npx",
"args": ["-y", "resend-mcp"],
"env": {
"RESEND_API_KEY": "re_xxxxxxxxx"
}
}
}
}
Claude Desktop
打开 Claude Desktop 设置 >“开发者”选项卡 >“编辑配置”。
{
"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 中,打开 设置 > 连接 > MCP 服务器 并点击 添加自定义 MCP。有关完整的分步说明,请参阅 Devin 指南。
{
"mcpServers": {
"resend": {
"command": "npx",
"args": ["-y", "resend-mcp"],
"env": {
"RESEND_API_KEY": "re_xxxxxxxxx",
"SENDER_EMAIL_ADDRESS": "onboarding@resend.dev"
}
}
}
}
HTTP 传输
通过 HTTP 运行服务器以进行远程或基于 Web 的集成,例如在您自己的隧道或反向代理后面,而不是使用 Resend 的托管远程 MCP 服务器。在 HTTP 模式下,每个客户端通过将其 Resend API 密钥作为 Bearer 令牌传递到 Authorization 标头中进行身份验证。
启动服务器:
npx -y resend-mcp --http --port 3000
服务器将监听 http://127.0.0.1:3000 并使用可流式传输的 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 设置”>“MCP”>“添加新的全局 MCP 服务器”。
{
"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 运行。每个连接的客户端使用其自己的 Resend API 密钥(作为 Bearer 令牌传递)进行身份验证。
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);
默认情况下,服务器应用仅限本地主机的 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(或MCP_ALLOWED_HOSTS)时,以逗号分隔的Host允许列表
环境变量:
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允许列表(可选)
[!NOTE] 如果您不提供发件人电子邮件地址,MCP 服务器将在您每次调用工具时要求您提供一个。
MCP 服务器工具
Resend 的 MCP 服务器通过单一集成,为您的 AI 代理提供对整个 Resend 平台的原生访问。您可以使用自然语言管理电子邮件基础架构的所有方面。
- 电子邮件:发送、列出、获取、取消、更新和批量发送电子邮件。支持 HTML、纯文本、附件(本地文件、URL 或 base64)、抄送/密送、回复、计划发送、标签、自定义标头、基于主题的发送和幂等键。
- 已接收的电子邮件:列出和阅读入站电子邮件。列出和下载已接收的电子邮件附件。
- 模板:创建、列出、获取、更新、发布、复制和删除电子邮件模板。支持编写模板内容和
{{{VARIABLE}}}占位符。 - 联系人:创建、列出、获取、更新和删除联系人。管理细分成员资格、主题订阅和 CSV 联系人导入。支持自定义联系人属性。
- 广播:创建、发送、列出、获取、更新和删除广播活动。支持计划发送、个性化占位符和预览文本。
- 自动化:创建、列出、获取、更新和删除自动化。查看自动化的运行情况。
- 事件:发送事件以触发联系人的自动化。创建、更新和删除事件定义。
- 域名:创建、列出、获取、更新、删除和验证发件人域名。配置跟踪、TLS 和发送/接收功能。创建和验证域名声明。
- 细分:创建、列出、获取和删除受众细分。
- 禁止列表:列出、获取、添加和删除禁止列表条目,可单独或批量操作。硬退信和垃圾邮件投诉会自动被禁止;手动添加地址以遵守请勿联系请求。
- 主题:创建、列出、获取、更新和删除订阅主题。
- 联系人属性:创建、列出、获取、更新和删除自定义联系人属性。
- API 密钥:创建、列出和删除 API 密钥。
- Webhooks:创建、列出、获取、更新和删除用于事件通知的 webhooks。
- 日志:列出和检查 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 -
启动检查器:
pnpm inspector -
在浏览器(Inspector UI)中:
- 选择 stdio(启动一个进程)。
- 命令:
node - 参数:
dist/index.js(或dist/index.js的完整路径) - 环境变量:
RESEND_API_KEY=re_your_key_here(如果您已在同一终端中导出,则留空)。 - 点击 连接,然后使用“列出工具”来验证服务器是否正常工作。
使用 HTTP 传输
-
在一个终端中启动 HTTP 服务器:
node dist/index.js --http --port 3000 -
在另一个终端中启动检查器:
pnpm inspector -
在浏览器(Inspector UI)中:
- 选择 可流式传输的 HTTP(连接到 URL)。
- URL:
http://127.0.0.1:3000/mcp - 添加自定义标头:
Authorization: Bearer re_your_key_here并激活切换开关。 - 点击 连接,然后使用“列出工具”来验证服务器是否正常工作。