Resend Email

официальный

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

Что можно делать с Resend Email MCP?

  • Отправка транзакционных писем — Попросите вашего ассистента составить и отправить HTML- или текстовое письмо с вложениями, копией/скрытой копией и пользовательскими заголовками через https://mcp.resend.com/mcp.
  • Управление шаблонами писем — Попросите вашего ассистента создавать, обновлять, публиковать или дублировать шаблоны с плейсхолдерами {{{VARIABLE}}} для многоразовых кампаний.
  • Отслеживание доставки и вовлеченности — Попросите ассистента вывести список отправленных писем и получить метрики доставки, а также отменить запланированные отправки до их выполнения.
  • Обработка входящих писем — Попросите ассистента прочитать полученные сообщения и загрузить их вложения прямо из вашего почтового ящика Resend.
  • Управление контактами и аудиториями — Поручите ассистенту создавать, обновлять или сегментировать контакты, а также импортировать CSV-списки с пользовательскими свойствами.
  • Мониторинг использования API — Запросите квоты на уровне аккаунта и информацию о лимитах запросов, чтобы следить за вашей почтовой инфраструктурой.

Размещённый MCP-сервер

npx add-mcp 'https://mcp.resend.com/mcp'

Устанавливается в Claude Code, Codex, Cursor и другие

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

Resend MCP Server

npm version

Подключите своего ИИ-агента к платформе Resend. Отправляйте и получайте электронные письма, управляйте контактами, рассылками, доменами и многим другим напрямую из любого MCP-клиента, такого как Claude, Cursor или Claude Code.

Мы предлагаем как удаленный MCP-сервер, размещенный Resend, так и локальный MCP-сервер (этот пакет).

Удаленный MCP-сервер

Resend размещает MCP-сервер по адресу:

https://mcp.resend.com/mcp

Подключите любой MCP-клиент, поддерживающий удаленные серверы (Streamable HTTP). Ничего устанавливать не нужно, и не требуется запускать локальный процесс, что делает этот вариант лучшим для веб-клиентов, таких как Claude, и размещенных агентских платформ.

При подключении ваш клиент открывает окно браузера для входа в Resend и подтверждения доступа через OAuth.

Claude Code

claude mcp add --transport http resend https://mcp.resend.com/mcp

Затем выполните /mcp в Claude Code и выберите resend для завершения OAuth-входа.

Claude

В Claude (веб или десктоп) откройте Настройки > Коннекторы > Добавить пользовательский коннектор и введите:

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

Чтобы использовать GitHub Copilot в VS Code, добавьте следующее в ваш settings.json:

{
  "mcp": {
    "servers": {
      "resend": {
        "type": "http",
        "url": "https://mcp.resend.com/mcp"
      }
    }
  }
}

Windsurf

{
  "mcpServers": {
    "resend": {
      "serverUrl": "https://mcp.resend.com/mcp"
    }
  }
}

Warp

В настройках Warp перейдите в Agents > MCP servers и нажмите +Add, чтобы добавить новый сервер.

{
  "resend": {
    "serverUrl": "https://mcp.resend.com/mcp"
  }
}

Аутентификация с помощью API-ключа

Если ваш клиент работает в среде, где вход через браузер невозможен (сервер, CI или headless-агент), передайте API-ключ Resend как 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. Если вы предпочитаете запускать сервер самостоятельно, вы можете интегрировать его в любой поддерживаемый MCP-клиент с помощью npx. Вам потребуется:

Локальный сервер поддерживает два режима транспорта: 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 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

Чтобы использовать GitHub Copilot в VS Code, добавьте следующее в ваш 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": "onboarding@resend.dev"
      }
    }
  }
}

HTTP-транспорт

Запустите сервер через HTTP для удаленных или веб-интеграций, например, за вашим собственным туннелем или обратным прокси, вместо использования размещенного удаленного MCP-сервера Resend. В режиме 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-rebinding). При развертывании за обратным прокси или балансировщиком нагрузки, где сервер защищен поштучным 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: Адрес reply-to по умолчанию (можно указать несколько раз)
  • --http: Использовать HTTP-транспорт вместо stdio (по умолчанию: stdio)
  • --port: HTTP-порт при использовании --http (по умолчанию: 3000, или переменная окружения MCP_PORT)
  • --host: Хост для защиты от DNS-rebinding при использовании --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: Разделенные запятыми адреса reply-to (необязательно)
  • MCP_PORT: HTTP-порт при использовании --http (необязательно)
  • MCP_HOST: Хост для защиты от DNS-rebinding при использовании --http (необязательно)
  • MCP_ALLOWED_HOSTS: Разделенный запятыми список разрешенных Host при использовании --http (необязательно)

[!NOTE] Если вы не укажете адрес отправителя, MCP-сервер будет запрашивать его при каждом вызове инструмента.

Инструменты MCP-сервера

MCP-сервер Resend предоставляет вашему ИИ-агенту нативный доступ ко всей платформе Resend через единую интеграцию. Вы можете управлять всеми аспектами вашей email-инфраструктуры с помощью естественного языка.

  • Электронные письма: Отправка, список, получение, отмена, обновление, пересылка и массовая отправка писем. Получение метрик доставки и вовлеченности. Поддержка HTML, обычного текста, вложений (локальный файл, URL или base64), CC/BCC, reply-to, планирования, тегов, пользовательских заголовков, отправки на основе тем и ключей идемпотентности.
  • Полученные письма: Список и чтение входящих писем. Список и загрузка вложений полученных писем.
  • Шаблоны: Создание, список, получение, обновление, публикация, дублирование и удаление email-шаблонов. Поддержка составления содержимого шаблонов и плейсхолдеров {{{VARIABLE}}}.
  • Контакты: Создание, список, получение, обновление и удаление контактов. Управление членством в сегментах, подписками на темы и импортом контактов из CSV. Поддержка пользовательских свойств контактов.
  • Рассылки: Создание, отправка, отмена, дублирование, список, получение, обновление и удаление кампаний рассылок. Список кликов по ссылкам рассылки и ее получателей по типу события (отправлено, доставлено, открыто, кликнуто, отклонено, получена жалоба, отписано, подавлено). Поддержка планирования, плейсхолдеров персонализации и предварительного текста.
  • Автоматизации: Создание, список, получение, обновление, дублирование и удаление автоматизаций. Просмотр запусков автоматизации.
  • События: Отправка событий для запуска автоматизаций для контакта. Создание, обновление и удаление определений событий.
  • Домены: Создание, список, получение, обновление, удаление и проверка доменов отправителя. Настройка отслеживания, TLS и возможностей отправки/получения. Создание и проверка утверждений доменов.
  • Сегменты: Создание, список, получение, обновление и удаление сегментов аудитории.
  • Подавления: Список, получение, добавление и удаление записей списка подавлений, по отдельности или пакетно. Жесткие отказы и жалобы на спам подавляются автоматически; добавляйте адреса вручную для соблюдения запросов «не связываться».
  • Темы: Создание, список, получение, обновление и удаление тем подписки.
  • Свойства контактов: Создание, список, получение, обновление и удаление пользовательских атрибутов контактов.
  • API-ключи: Создание, список, обновление и удаление API-ключей.
  • Вебхуки: Создание, список, получение, обновление и удаление вебхуков для уведомлений о событиях, а также просмотр их истории доставки — события, отправленные на вебхук, полезная нагрузка одного события и попытки его доставки. Повторная отправка события для постановки в очередь новой доставки и ротация секрета подписи вебхука.
  • Журналы: Список и просмотр журналов 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. Запустите инспектор:

    pnpm inspector
    
  3. В браузере (интерфейс Inspector):

    • Выберите 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):

    • Выберите Streamable HTTP (подключение к URL).
    • URL: http://127.0.0.1:3000/mcp
    • Добавьте пользовательский заголовок: Authorization: Bearer re_your_key_here и активируйте переключатель.
    • Нажмите Connect, затем используйте «List tools», чтобы убедиться, что сервер работает.