Resend Email MCP Server

официальный

Отправляйте электронные письма прямо из редактора с помощью Resend API.

Документация

Resend MCP Server

smithery badge npm version

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-сервер будет запрашивать его при каждом вызове инструмента.

Локальная разработка

  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. Запустите инспектор:

    pnpm inspector
    
  3. В браузере (Inspector UI):

    • Выберите stdio (запустить процесс).
    • Команда: node
    • Аргументы: dist/index.js (или полный путь к dist/index.js)
    • Env: RESEND_API_KEY=re_your_key_here (или оставьте пустым, если вы уже экспортировали его в том же терминале).
    • Нажмите Connect, затем используйте «List tools», чтобы убедиться, что сервер работает.

Использование HTTP-транспорта

  1. Запустите HTTP-сервер в одном терминале:

    node dist/index.js --http --port 3000
    
  2. Запустите инспектор в другом терминале:

    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», чтобы убедиться, что сервер работает.