mcpField
E
Email sending MCP 💌

Email sending MCP 💌

本地服务
github.com/resend通信协作5782 天前更新

关于 Email sending MCP 💌

Resend MCP 服务为 AI Agent 提供访问 Resend 平台的能力,可发送和接收邮件,并管理联系人、群发邮件、域名等资源。它同时提供远程托管版本和可本地运行的开源包 resend-mcp。

主要功能

  1. 01远程服务,支持 OAuth 或 API key 登录
  2. 02本地运行,支持 stdio 与 HTTP 两种传输方式
  3. 03发送和接收邮件
  4. 04管理联系人、群发邮件和域名
  5. 05通过 --allowed-file-dirs 限制附件读取目录

适用场景

  1. 01让编码 Agent 在开发过程中发送测试邮件
  2. 02通过自然语言管理邮件联系人与群发任务
  3. 03在无浏览器环境中以 API key 方式接入

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"send-email-resend": {
"command": "npx",
"args": [
"-y",
"add-mcp"
]
}
}
}
启动命令npx -y add-mcp

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmadd-mcp

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Resend MCP 服务

npm version

将你的 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 控制面板中的可视化编辑器,并在协作处理群发和模板时读取草稿内容。

本地开发

  1. 克隆此项目并构建:
git clone https://github.com/resend/resend-mcp.git
pnpm install
pnpm run build
  1. 如需使用本地构建,请将 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 示例:

  1. 运行 TypeScript 监视器,以便在保存时自动重新构建:

    pnpm tsc --watch
    
  2. 在另一个目录中,创建一个 .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"
          }
        }
      }
    }
    
  3. 从该目录启动 Claude Code,并使用 MCP 工具。更改代码后,启动新的 Claude Code 会话以加载新构建的内容。

同样的原则适用于任何 MCP 客户端——将测试环境与开发环境分开,使用 dist/index.js 的绝对路径,并在重新构建后重新连接 MCP 服务。

使用 MCP Inspector 进行测试

注意: 请确保已先构建项目(参见上文的本地开发部分)。

使用 Stdio 传输
  1. 设置 API 密钥:

    export RESEND_API_KEY=re_your_key_here
    
  2. 启动 Inspector:

    pnpm inspector
    
  3. 在浏览器中(Inspector UI):

    • 选择 stdio(启动进程)。
    • 命令: node
    • 参数: dist/index.js(或 dist/index.js 的完整路径)
    • 环境变量: RESEND_API_KEY=re_your_key_here(如果已在同一终端中导出该变量,也可以留空)。
    • 点击 Connect,然后使用“List tools”验证服务是否正常运行。
使用 HTTP 传输
  1. 在一个终端中启动 HTTP 服务:

    node dist/index.js --http --port 3000
    
  2. 在另一个终端中启动 Inspector:

    pnpm inspector
    
  3. 在浏览器中(Inspector UI):

    • 选择 Streamable HTTP(连接到 URL)。
    • URL: http://127.0.0.1:3000/mcp
    • 添加自定义请求头:Authorization: Bearer re_your_key_here,并启用切换开关。
    • 点击 Connect,然后使用“List tools”验证服务是否正常运行。

评论

支持 Markdown

第一次接触 MCP?

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

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