Resend Email MCP Server
официальныйОтправляйте электронные письма прямо из редактора с помощью Resend API.
Документация
Resend MCP Server
MCP-сервер для платформы Resend. Отправляйте и получайте письма, управляйте контактами, рассылками, доменами и многим другим — напрямую из любого MCP-клиента, такого как Claude Desktop, Cursor или Claude Code.
Возможности
- Письма — Отправка, просмотр списка, получение, отмена, обновление и пакетная отправка писем. Поддерживает HTML, простой текст, вложения (локальный файл, URL или base64), CC/BCC, reply-to, планирование, теги и отправку по темам.
- Полученные письма — Просмотр списка и чтение входящих писем. Просмотр списка и скачивание вложений полученных писем.
- Контакты — Создание, просмотр списка, получение, обновление и удаление контактов. Управление членством в сегментах и подписками на темы. Поддержка пользовательских свойств контактов.
- Рассылки — Создание, отправка, просмотр списка, получение, обновление и удаление кампаний-рассылок. Поддержка планирования, плейсхолдеров персонализации и превью-текста.
- Шаблоны — Создание, просмотр списка, получение, обновление, публикация, дублирование и удаление многоразовых шаблонов писем.
- Визуальный редактор — Составление контента рассылок и шаблонов, который в реальном времени отображается в панели управления Resend. Агенты отображаются в редакторе как именованный аватар во время работы.
- Домены — Создание, просмотр списка, получение, обновление, удаление и верификация доменов отправителя. Настройка отслеживания, TLS и возможностей отправки/получения.
- Сегменты — Создание, просмотр списка, получение и удаление сегментов аудитории.
- Темы — Создание, просмотр списка, получение, обновление и удаление тем подписки.
- Свойства контактов — Создание, просмотр списка, получение, обновление и удаление пользовательских атрибутов контактов.
- API-ключи — Создание, просмотр списка и удаление API-ключей.
- Вебхуки — Создание, просмотр списка, получение, обновление и удаление вебхуков для уведомлений о событиях.
Настройка
Создайте бесплатную учетную запись Resend и создайте API-ключ. Для отправки на адреса, не принадлежащие вам, потребуется верифицировать ваш домен.
Использование
Сервер поддерживает два режима транспорта: stdio (по умолчанию) и HTTP.
Транспорт 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
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"
}
}
}
}
HTTP-транспорт
Запустите сервер по HTTP для удаленных или веб-интеграций. В режиме HTTP каждый клиент аутентифицируется, передавая свой API-ключ Resend как Bearer-токен в заголовке Authorization.
Запуск сервера:
npx -y resend-mcp --http --port 3000
Сервер будет слушать на http://127.0.0.1:3000 и предоставлять конечную точку MCP на /mcp, используя Streamable HTTP.
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. Каждый подключающийся клиент аутентифицируется своим API-ключом Resend, переданным как 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 только для localhost (защита от 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: Ваш API-ключ Resend (только в режиме stdio; в режиме HTTP используется Bearer-токен от клиента)--sender: Адрес электронной почты отправителя по умолчанию с верифицированного домена--reply-to: Адрес электронной почты для ответа по умолчанию (можно указать несколько раз)--http: Использовать HTTP-транспорт вместо stdio (по умолчанию: stdio)--port: HTTP-порт при использовании--http(по умолчанию: 3000, или переменная окруженияMCP_PORT)--host: Хост для защиты от DNS-ребандинга при использовании--http(по умолчанию:127.0.0.1, илиMCP_HOST). Установите в0.0.0.0, чтобы отключить проверкуHostза прокси/балансировщиком нагрузки.--allowed-hosts: Список разрешенныхHost, разделенных запятыми, при использовании--http(илиMCP_ALLOWED_HOSTS)
Переменные окружения:
RESEND_API_KEY: Ваш API-ключ Resend (обязателен для stdio, опционален для HTTP, так как клиенты передают его через Bearer-токен)SENDER_EMAIL_ADDRESS: Адрес электронной почты отправителя по умолчанию с верифицированного домена (опционально)REPLY_TO_EMAIL_ADDRESSES: Адреса электронной почты для ответа, разделенные запятыми (опционально)MCP_PORT: HTTP-порт при использовании--http(опционально)MCP_HOST: Хост для защиты от DNS-ребандинга при использовании--http(опционально)MCP_ALLOWED_HOSTS: Список разрешенныхHost, разделенных запятыми, при использовании--http(опционально)
[!NOTE] Если вы не укажете адрес электронной почты отправителя, MCP-сервер будет запрашивать его при каждом вызове инструмента.
Локальная разработка
- Клонируйте этот проект и выполните сборку:
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) - Env:
RESEND_API_KEY=re_your_key_here(или оставьте пустым, если вы уже экспортировали его в том же терминале). - Нажмите Connect, затем используйте «List tools», чтобы убедиться, что сервер работает.
Использование HTTP-транспорта
-
Запустите HTTP-сервер в одном терминале:
node dist/index.js --http --port 3000 -
Запустите инспектор в другом терминале:
pnpm inspector -
В браузере (Inspector UI):
- Выберите Streamable HTTP (подключиться к URL).
- URL:
http://127.0.0.1:3000/mcp - Добавьте пользовательский заголовок:
Authorization: Bearer re_your_key_hereи активируйте переключатель. - Нажмите Connect, затем используйте «List tools», чтобы убедиться, что сервер работает.