Resend Email
offiziellSenden Sie E-Mails direkt aus Ihrem Editor mit der Resend API.
Was kann man mit Resend Email MCP machen?
- E-Mails senden und verwalten — Bitten Sie Ihren Assistenten, E-Mails mit Anhängen, CC/BCC, Zeitplanung und benutzerdefinierten Kopfzeilen über
send_emailzu senden, aufzulisten, abzurufen, zu stornieren oder in Stapeln zu versenden. - Kontakte und Zielgruppen verwalten — Kontakte erstellen, aktualisieren oder entfernen, Segmentmitgliedschaften und Themenabonnements verwalten sowie Kontakte per CSV über
create_contactimportieren. - Broadcasts erstellen und senden — Broadcast-Kampagnen mit Personalisierungs-Platzhaltern und Vorschautext über
create_broadcasterstellen, planen, senden oder stornieren. - Eingehende E-Mails verarbeiten — Empfangene E-Mails auflisten und lesen sowie Anhänge aus eingehenden Nachrichten über
list_received_emailsherunterladen. - Vorlagen und Domains verwalten — E-Mail-Vorlagen mit Variablen erstellen, aktualisieren, veröffentlichen oder duplizieren sowie Absenderdomains über
create_templateundverify_domainverifizieren oder konfigurieren. - Überwachen und automatisieren — API-Anfrageprotokolle einsehen, Webhooks verwalten und Automatisierungen durch Senden von Ereignissen für Kontakte über
list_logsundsend_eventauslösen.
Dokumentation
Resend MCP Server
Verbinde deinen KI-Agenten mit der Resend-Plattform. Sende und empfange E-Mails, verwalte Kontakte, Broadcasts, Domains und mehr – direkt aus jedem MCP-Client wie Claude, Cursor oder Claude Code.
Wir bieten sowohl einen von Resend gehosteten Remote-MCP-Server als auch einen lokalen MCP-Server (dieses Paket) an.
Remote-MCP-Server
Resend hostet den MCP-Server unter:
https://mcp.resend.com/mcp
Verbinde jeden MCP-Client, der Remote-Server unterstützt (Streamable HTTP). Es muss nichts installiert und kein lokaler Prozess ausgeführt werden – das macht ihn zur besten Option für webbasierte Clients wie Claude und gehostete Agent-Plattformen.
Beim Verbinden öffnet dein Client ein Browserfenster, um sich bei Resend anzumelden und den Zugriff per OAuth zu genehmigen.
Claude Code
claude mcp add --transport http resend https://mcp.resend.com/mcp
Führe dann /mcp in Claude Code aus und wähle resend, um den OAuth-Login abzuschließen.
Claude
Öffne in Claude (Web oder Desktop) Einstellungen > Connectors > Benutzerdefinierten Connector hinzufügen und gib Folgendes ein:
https://mcp.resend.com/mcp
Cursor
Öffne die Befehlspalette und wähle „Cursor Settings" > „MCP" > „Neuen globalen MCP-Server hinzufügen".
{
"mcpServers": {
"resend": {
"url": "https://mcp.resend.com/mcp"
}
}
}
Codex
codex mcp add resend --url https://mcp.resend.com/mcp
Copilot
Um GitHub Copilot in VS Code zu verwenden, füge Folgendes zu deiner settings.json hinzu:
{
"mcp": {
"servers": {
"resend": {
"type": "http",
"url": "https://mcp.resend.com/mcp"
}
}
}
}
Windsurf
{
"mcpServers": {
"resend": {
"serverUrl": "https://mcp.resend.com/mcp"
}
}
}
Warp
Navigiere in den Warp-Einstellungen zu Agents > MCP-Server und klicke auf +Hinzufügen, um einen neuen Server hinzuzufügen.
{
"resend": {
"serverUrl": "https://mcp.resend.com/mcp"
}
}
Authentifizierung mit einem API-Schlüssel
Wenn dein Client an einem Ort läuft, an dem ein Browser-Login nicht möglich ist (ein Server, CI oder ein Headless-Agent), übergib einen Resend-API-Schlüssel als Bearer-Token anstelle von OAuth.
Claude Code:
claude mcp add --transport http resend https://mcp.resend.com/mcp --header "Authorization: Bearer re_xxxxxxxxx"
JSON-Konfiguration (Cursor, Windsurf und andere): Füge einen Authorization-Header hinzu:
{
"mcpServers": {
"resend": {
"url": "https://mcp.resend.com/mcp",
"headers": {
"Authorization": "Bearer re_xxxxxxxxx"
}
}
}
}
Lokaler MCP-Server
Der gehostete Server läuft mit demselben Open-Source-Code, der auf NPM als resend-mcp verfügbar ist. Wenn du den Server lieber selbst betreiben möchtest, kannst du ihn mit npx in jeden unterstützten MCP-Client integrieren. Du benötigst:
Der lokale Server unterstützt zwei Transportmodi: stdio (Standard) und HTTP.
Wähle unten deinen bevorzugten Modus und Client, um loszulegen. Denke daran, re_xxxxxxxxx durch deinen tatsächlichen API-Schlüssel zu ersetzen.
Stdio-Transport (Standard)
Schnellinstallation
Installiere für alle erkannten/ausgewählten Agenten und Editoren:
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
Öffne die Befehlspalette und wähle „Cursor Settings" > „MCP" > „Neuen globalen MCP-Server hinzufügen".
{
"mcpServers": {
"resend": {
"command": "npx",
"args": ["-y", "resend-mcp"],
"env": {
"RESEND_API_KEY": "re_xxxxxxxxx"
}
}
}
}
Claude Desktop
Öffne die Claude-Desktop-Einstellungen > Registerkarte „Developer" > „Config bearbeiten".
{
"mcpServers": {
"resend": {
"command": "npx",
"args": ["-y", "resend-mcp"],
"env": {
"RESEND_API_KEY": "re_xxxxxxxxx"
}
}
}
}
Copilot
Um GitHub Copilot in VS Code zu verwenden, füge Folgendes zu deiner settings.json hinzu:
{
"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
Füge zu deiner opencode.json-Konfiguration hinzu:
{
"$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
Öffne in Devin Einstellungen > Verbindungen > MCP-Server und klicke auf Benutzerdefinierten MCP hinzufügen. Die vollständige Schritt-für-Schritt-Anleitung findest du in der Devin-Anleitung.
{
"mcpServers": {
"resend": {
"command": "npx",
"args": ["-y", "resend-mcp"],
"env": {
"RESEND_API_KEY": "re_xxxxxxxxx",
"SENDER_EMAIL_ADDRESS": "onboarding@resend.dev"
}
}
}
}
HTTP-Transport
Führe den Server über HTTP für Remote- oder webbasierte Integrationen aus, zum Beispiel hinter deinem eigenen Tunnel oder Reverse-Proxy, anstatt den von Resend gehosteten Remote-MCP-Server zu verwenden. Im HTTP-Modus authentifiziert sich jeder Client, indem er seinen Resend-API-Schlüssel als Bearer-Token im Authorization-Header übergibt.
Starte den Server:
npx -y resend-mcp --http --port 3000
Der Server lauscht auf http://127.0.0.1:3000 und stellt den MCP-Endpunkt unter /mcp mit Streamable HTTP bereit.
Claude Code
claude mcp add resend --transport http http://127.0.0.1:3000/mcp --header "Authorization: Bearer re_xxxxxxxxx"
Cursor
Öffne die Befehlspalette und wähle „Cursor Settings" > „MCP" > „Neuen globalen MCP-Server hinzufügen".
{
"mcpServers": {
"resend": {
"url": "http://127.0.0.1:3000/mcp",
"headers": {
"Authorization": "Bearer re_xxxxxxxxx"
}
}
}
}
Du kannst den Port auch über die Umgebungsvariable MCP_PORT festlegen:
MCP_PORT=3000 npx -y resend-mcp --http
Als Bibliothek verwenden
Der HTTP-Transport wird ebenfalls exportiert, sodass er in einen anderen Dienst eingebettet werden kann, anstatt über die CLI ausgeführt zu werden. Jeder verbundene Client authentifiziert sich mit seinem eigenen Resend-API-Schlüssel, der als Bearer-Token übergeben wird.
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);
Standardmäßig wendet der Server eine Host-Validierung nur für Localhost an (DNS-Rebinding-Schutz). Wenn du hinter einem Reverse-Proxy oder Load-Balancer bereitstellst, wo der Server durch den Bearer-API-Schlüssel pro Anfrage geschützt ist, setze host auf 0.0.0.0, damit die weitergeleiteten Host des Proxys und die Health-Checks des Load-Balancers nicht mit 403 Invalid Host abgelehnt werden:
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'] });
Über die CLI entspricht dies --host / --allowed-hosts (oder MCP_HOST / MCP_ALLOWED_HOSTS).
Optionen
Du kannst zusätzliche Argumente übergeben, um den lokalen Server zu konfigurieren:
--key: Dein Resend-API-Schlüssel (nur im stdio-Modus, da der HTTP-Modus das Bearer-Token vom Client verwendet)--sender: Standard-Absender-E-Mail-Adresse von einer verifizierten Domain--reply-to: Standard-Antwort-E-Mail-Adresse (kann mehrfach angegeben werden)--http: HTTP-Transport anstelle von stdio verwenden (Standard: stdio)--port: HTTP-Port bei Verwendung von--http(Standard: 3000, oderMCP_PORT-Umgebungsvariable)--host: Host für den DNS-Rebinding-Schutz bei Verwendung von--http(Standard:127.0.0.1, oderMCP_HOST). Setze auf0.0.0.0, um dieHost-Validierung hinter einem Proxy/Load-Balancer zu deaktivieren.--allowed-hosts: KommagetrennteHost-Zulassungsliste bei Verwendung von--http(oderMCP_ALLOWED_HOSTS)
Umgebungsvariablen:
RESEND_API_KEY: Dein Resend-API-Schlüssel (erforderlich für stdio, optional für HTTP, da Clients ihn über das Bearer-Token übergeben)SENDER_EMAIL_ADDRESS: Standard-Absender-E-Mail-Adresse von einer verifizierten Domain (optional)REPLY_TO_EMAIL_ADDRESSES: Kommagetrennte Antwort-E-Mail-Adressen (optional)MCP_PORT: HTTP-Port bei Verwendung von--http(optional)MCP_HOST: Host für den DNS-Rebinding-Schutz bei Verwendung von--http(optional)MCP_ALLOWED_HOSTS: KommagetrennteHost-Zulassungsliste bei Verwendung von--http(optional)
[!NOTE] Wenn du keine Absender-E-Mail-Adresse angibst, fordert dich der MCP-Server bei jedem Tool-Aufruf dazu auf, eine anzugeben.
MCP-Server-Tools
Der MCP-Server von Resend gibt deinem KI-Agenten über eine einzige Integration nativen Zugriff auf die gesamte Resend-Plattform. Du kannst alle Aspekte deiner E-Mail-Infrastruktur in natürlicher Sprache verwalten.
- E-Mails: E-Mails senden, auflisten, abrufen, stornieren, aktualisieren und in Stapeln senden. Unterstützt HTML, Klartext, Anhänge (lokale Datei, URL oder Base64), CC/BCC, Antwort-an, Zeitplanung, Tags, benutzerdefinierte Header, themenbasiertes Senden und Idempotenzschlüssel.
- Empfangene E-Mails: Eingehende E-Mails auflisten und lesen. Empfangene E-Mail-Anhänge auflisten und herunterladen.
- Vorlagen: E-Mail-Vorlagen erstellen, auflisten, abrufen, aktualisieren, veröffentlichen, duplizieren und entfernen. Unterstützt das Verfassen von Vorlageninhalten und
{{{VARIABLE}}}-Platzhalter. - Kontakte: Kontakte erstellen, auflisten, abrufen, aktualisieren und entfernen. Segmentmitgliedschaften, Themenabonnements und CSV-Kontaktimporte verwalten. Unterstützt benutzerdefinierte Kontakteigenschaften.
- Broadcasts: Broadcast-Kampagnen erstellen, senden, stornieren, auflisten, abrufen, aktualisieren und entfernen. Unterstützt Zeitplanung, Personalisierungs-Platzhalter und Vorschautext.
- Automatisierungen: Automatisierungen erstellen, auflisten, abrufen, aktualisieren und entfernen. Die Läufe einer Automatisierung überprüfen.
- Ereignisse: Ereignisse senden, um Automatisierungen für einen Kontakt auszulösen. Ereignisdefinitionen erstellen, aktualisieren und entfernen.
- Domains: Absender-Domains erstellen, auflisten, abrufen, aktualisieren, entfernen und verifizieren. Tracking, TLS und Sende-/Empfangsfunktionen konfigurieren. Domain-Ansprüche erstellen und verifizieren.
- Segmente: Zielgruppensegmente erstellen, auflisten, abrufen und entfernen.
- Unterdrückungen: Einträge in Unterdrückungslisten auflisten, abrufen, hinzufügen und entfernen, einzeln oder in Stapeln. Harte Bounces und Spam-Beschwerden werden automatisch unterdrückt; füge Adressen manuell hinzu, um Kontaktverbotsanfragen zu berücksichtigen.
- Themen: Abonnement-Themen erstellen, auflisten, abrufen, aktualisieren und entfernen.
- Kontakteigenschaften: Benutzerdefinierte Kontaktattribute erstellen, auflisten, abrufen, aktualisieren und entfernen.
- API-Schlüssel: API-Schlüssel erstellen, auflisten und entfernen.
- Webhooks: Webhooks für Ereignisbenachrichtigungen erstellen, auflisten, abrufen, aktualisieren und entfernen.
- Protokolle: API-Anfrageprotokolle auflisten und prüfen, einschließlich vollständiger Anfrage- und Antworttexte.
- Editor: Verbinde dich mit dem visuellen Editor im Resend-Dashboard (und trenne dich), und lies den Inhalt eines Entwurfs, während du an Broadcasts und Vorlagen zusammenarbeitest.
Lokale Entwicklung
- Klone dieses Projekt und baue es:
git clone https://github.com/resend/resend-mcp.git
pnpm install
pnpm run build
- Um den lokalen Build zu verwenden, ersetze den
npx-Befehl durch den Pfad zu deinem lokalen Build:
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"
}
}
}
}
Live-Tests mit einem MCP-Client
Während der Entwicklung kannst du Änderungen in einer echten MCP-Client-Sitzung testen, während du in einer anderen Code bearbeitest.
Die Idee: Führe tsc --watch aus, um dist/ kontinuierlich neu zu erstellen, und richte einen separaten MCP-Client auf das erstellte dist/index.js aus einem anderen Verzeichnis. Wenn du Codeänderungen übernehmen möchtest, starte die MCP-Client-Sitzung neu (MCP-Server sind langlebige stdio-Prozesse, die kein Hot-Reload unterstützen).
Beispiel mit Claude Code:
-
Führe den TypeScript-Watcher aus, um beim Speichern automatisch neu zu erstellen:
pnpm tsc --watch -
Erstelle in einem separaten Verzeichnis eine
.mcp.json, die auf die Build-Ausgabe zeigt: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" } } } } -
Starte Claude Code aus diesem Verzeichnis und verwende die MCP-Tools. Starte nach Codeänderungen eine neue Claude-Code-Sitzung, um den neuen Build zu übernehmen.
Das gleiche Prinzip gilt für jeden MCP-Client – trenne deine Testumgebung von deiner Entwicklungsumgebung, verwende einen absoluten Pfad zu dist/index.js und verbinde den MCP-Server nach dem Neuerstellen neu.
Testen mit dem MCP-Inspector
Hinweis: Stelle sicher, dass du das Projekt zuerst gebaut hast (siehe Abschnitt Lokale Entwicklung oben).
Verwendung des Stdio-Transports
-
Setze deinen API-Schlüssel:
export RESEND_API_KEY=re_your_key_here -
Starte den Inspector:
pnpm inspector -
Im Browser (Inspector-UI):
- Wähle stdio (Prozess starten).
- Befehl:
node - Argumente:
dist/index.js(oder den vollständigen Pfad zudist/index.js) - Env:
RESEND_API_KEY=re_your_key_here(oder leer lassen, wenn du es bereits im selben Terminal exportiert hast). - Klicke auf Verbinden und verwende dann „List tools", um zu überprüfen, ob der Server funktioniert.
Verwendung des HTTP-Transports
-
Starte den HTTP-Server in einem Terminal:
node dist/index.js --http --port 3000 -
Starte den Inspector in einem anderen Terminal:
pnpm inspector -
Im Browser (Inspector-UI):
- Wähle Streamable HTTP (mit URL verbinden).
- URL:
http://127.0.0.1:3000/mcp - Füge einen benutzerdefinierten Header hinzu:
Authorization: Bearer re_your_key_hereund aktiviere den Schalter. - Klicke auf Verbinden und verwende dann „List tools", um zu überprüfen, ob der Server funktioniert.