Resend Email
oficialEnvía correos electrónicos directamente desde tu editor usando la API de Resend.
¿Qué puedes hacer con Resend Email MCP?
- Enviar y gestionar correos electrónicos — Pide a tu IA que envíe, programe o envíe en lotes correos electrónicos con HTML, archivos adjuntos, CC/CCO y encabezados personalizados usando
sendEmaily herramientas relacionadas. - Gestionar contactos y audiencias — Crea, actualiza, importa o elimina contactos, y administra sus membresías de segmentos y suscripciones a temas.
- Crear y enviar campañas de difusión — Redacta, programa y envía correos electrónicos de difusión con marcadores de personalización y texto de vista previa.
- Verificar y configurar dominios — Agrega, verifica y actualiza dominios de remitente, incluyendo configuración de seguimiento, TLS y recepción.
- Inspeccionar registros de API y webhooks — Recupera y examina registros de solicitudes de API con cuerpos completos de solicitud/respuesta, y gestiona endpoints de webhook.
- Colaborar en plantillas y difusiones — Conéctate al editor visual de Resend para leer e iterar sobre contenido borrador de plantillas y difusiones.
Documentación
Servidor MCP de Resend
Conecta tu agente de IA a la plataforma Resend. Envía y recibe correos electrónicos, gestiona contactos, difusiones, dominios y más, directamente desde cualquier cliente MCP como Claude, Cursor o Claude Code.
Ofrecemos tanto un servidor MCP remoto alojado por Resend como un servidor MCP local (este paquete).
Servidor MCP Remoto
Resend aloja el servidor MCP en:
https://mcp.resend.com/mcp
Conecta cualquier cliente MCP que soporte servidores remotos (HTTP transmitible). No hay nada que instalar ni ningún proceso local que ejecutar, lo que lo convierte en la mejor opción para clientes basados en web como Claude y plataformas de agentes alojadas.
Al conectarte, tu cliente abre una ventana del navegador para iniciar sesión en Resend y aprobar el acceso mediante OAuth.
Claude Code
claude mcp add --transport http resend https://mcp.resend.com/mcp
Luego ejecuta /mcp en Claude Code y selecciona resend para completar el inicio de sesión OAuth.
Claude
En Claude (web o escritorio), abre Configuración > Conectores > Añadir conector personalizado e introduce:
https://mcp.resend.com/mcp
Cursor
Abre la paleta de comandos y elige "Configuración de Cursor" > "MCP" > "Añadir nuevo servidor MCP global".
{
"mcpServers": {
"resend": {
"url": "https://mcp.resend.com/mcp"
}
}
}
Codex
codex mcp add resend --url https://mcp.resend.com/mcp
Copilot
Para usar GitHub Copilot en VS Code, añade lo siguiente a tu settings.json:
{
"mcp": {
"servers": {
"resend": {
"type": "http",
"url": "https://mcp.resend.com/mcp"
}
}
}
}
Windsurf
{
"mcpServers": {
"resend": {
"serverUrl": "https://mcp.resend.com/mcp"
}
}
}
Warp
En la Configuración de Warp, navega a Agentes > Servidores MCP, y haz clic en +Añadir para agregar un nuevo servidor.
{
"resend": {
"serverUrl": "https://mcp.resend.com/mcp"
}
}
Autenticación con una clave API
Si tu cliente se ejecuta en un lugar donde no es posible iniciar sesión en el navegador (un servidor, CI o un agente sin interfaz gráfica), pasa una clave API de Resend como token Bearer en lugar de usar OAuth.
Claude Code:
claude mcp add --transport http resend https://mcp.resend.com/mcp --header "Authorization: Bearer re_xxxxxxxxx"
Configuración JSON (Cursor, Windsurf y otros), añade un encabezado Authorization:
{
"mcpServers": {
"resend": {
"url": "https://mcp.resend.com/mcp",
"headers": {
"Authorization": "Bearer re_xxxxxxxxx"
}
}
}
}
Servidor MCP Local
El servidor alojado ejecuta el mismo código de fuente abierta disponible en NPM como resend-mcp. Si prefieres ejecutar el servidor tú mismo, puedes integrarlo en cualquier cliente MCP compatible usando npx. Necesitarás:
El servidor local soporta dos modos de transporte: stdio (predeterminado) y HTTP.
Elige tu modo y cliente preferido a continuación para empezar. Recuerda reemplazar re_xxxxxxxxx con tu clave API real.
Transporte Stdio (Predeterminado)
Configuración Rápida
Instala para todos los agentes y editores detectados/seleccionados:
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
Abre la paleta de comandos y elige "Configuración de Cursor" > "MCP" > "Añadir nuevo servidor MCP global".
{
"mcpServers": {
"resend": {
"command": "npx",
"args": ["-y", "resend-mcp"],
"env": {
"RESEND_API_KEY": "re_xxxxxxxxx"
}
}
}
}
Claude Desktop
Abre la configuración de Claude Desktop > pestaña "Desarrollador" > "Editar Configuración".
{
"mcpServers": {
"resend": {
"command": "npx",
"args": ["-y", "resend-mcp"],
"env": {
"RESEND_API_KEY": "re_xxxxxxxxx"
}
}
}
}
Copilot
Para usar GitHub Copilot en VS Code, añade lo siguiente a tu 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
Añade a tu configuración de 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
En Devin, abre Configuración > Conexiones > Servidores MCP y haz clic en Añadir un MCP personalizado. Consulta la guía de Devin para el paso a paso completo.
{
"mcpServers": {
"resend": {
"command": "npx",
"args": ["-y", "resend-mcp"],
"env": {
"RESEND_API_KEY": "re_xxxxxxxxx",
"SENDER_EMAIL_ADDRESS": "onboarding@resend.dev"
}
}
}
}
Transporte HTTP
Ejecuta el servidor sobre HTTP para integraciones remotas o basadas en web, por ejemplo detrás de tu propio túnel o proxy inverso, en lugar de usar el servidor MCP remoto alojado de Resend. En modo HTTP, cada cliente se autentica pasando su clave API de Resend como token Bearer en el encabezado Authorization.
Inicia el servidor:
npx -y resend-mcp --http --port 3000
El servidor escuchará en http://127.0.0.1:3000 y expondrá el endpoint MCP en /mcp usando HTTP transmitible.
Claude Code
claude mcp add resend --transport http http://127.0.0.1:3000/mcp --header "Authorization: Bearer re_xxxxxxxxx"
Cursor
Abre la paleta de comandos y elige "Configuración de Cursor" > "MCP" > "Añadir nuevo servidor MCP global".
{
"mcpServers": {
"resend": {
"url": "http://127.0.0.1:3000/mcp",
"headers": {
"Authorization": "Bearer re_xxxxxxxxx"
}
}
}
}
También puedes establecer el puerto mediante la variable de entorno MCP_PORT:
MCP_PORT=3000 npx -y resend-mcp --http
Usar como biblioteca
El transporte HTTP también se exporta para poder integrarse en otro servicio en lugar de ejecutarse mediante la CLI. Cada cliente que se conecta se autentica con su propia clave API de Resend pasada como token 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);
Por defecto, el servidor aplica validación Host solo para localhost (protección contra reenlace DNS).
Al desplegar detrás de un proxy inverso o balanceador de carga, donde el
servidor está protegido por la clave API Bearer por solicitud, establece host a 0.0.0.0
para que el Host reenviado por el proxy y las comprobaciones de salud del balanceador de carga no sean rechazadas
con 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'] });
A través de la CLI esto se asigna a --host / --allowed-hosts (o MCP_HOST /
MCP_ALLOWED_HOSTS).
Opciones
Puedes pasar argumentos adicionales para configurar el servidor local:
--key: Tu clave API de Resend (solo modo stdio, ya que el modo HTTP usa el token Bearer del cliente)--sender: Dirección de correo electrónico del remitente predeterminado de un dominio verificado--reply-to: Dirección de correo electrónico de respuesta predeterminada (se puede especificar varias veces)--http: Usar transporte HTTP en lugar de stdio (predeterminado: stdio)--port: Puerto HTTP al usar--http(predeterminado: 3000, o variable de entornoMCP_PORT)--host: Host para protección contra reenlace DNS al usar--http(predeterminado:127.0.0.1, oMCP_HOST). Establecer a0.0.0.0para deshabilitar la validaciónHostdetrás de un proxy/balanceador de carga.--allowed-hosts: Lista de permitidosHostseparada por comas al usar--http(oMCP_ALLOWED_HOSTS)
Variables de entorno:
RESEND_API_KEY: Tu clave API de Resend (requerida para stdio, opcional para HTTP ya que los clientes la pasan mediante token Bearer)SENDER_EMAIL_ADDRESS: Dirección de correo electrónico del remitente predeterminado de un dominio verificado (opcional)REPLY_TO_EMAIL_ADDRESSES: Direcciones de correo electrónico de respuesta separadas por comas (opcional)MCP_PORT: Puerto HTTP al usar--http(opcional)MCP_HOST: Host para protección contra reenlace DNS al usar--http(opcional)MCP_ALLOWED_HOSTS: Lista de permitidosHostseparada por comas al usar--http(opcional)
[!NOTE] Si no proporcionas una dirección de correo electrónico del remitente, el servidor MCP te pedirá que proporciones una cada vez que llames a la herramienta.
Herramientas del Servidor MCP
El servidor MCP de Resend le da a tu agente de IA acceso nativo a toda la plataforma Resend a través de una única integración. Puedes gestionar todos los aspectos de tu infraestructura de correo electrónico usando lenguaje natural.
- Correos electrónicos: Enviar, listar, obtener, cancelar, actualizar y enviar correos electrónicos por lotes. Soporta HTML, texto plano, adjuntos (archivo local, URL o base64), CC/BCC, respuesta, programación, etiquetas, encabezados personalizados, envío basado en temas y claves de idempotencia.
- Correos electrónicos recibidos: Listar y leer correos electrónicos entrantes. Listar y descargar adjuntos de correos electrónicos recibidos.
- Plantillas: Crear, listar, obtener, actualizar, publicar, duplicar y eliminar plantillas de correo electrónico. Soporta la composición de contenido de plantillas y marcadores de posición
{{{VARIABLE}}}. - Contactos: Crear, listar, obtener, actualizar y eliminar contactos. Gestionar membresías de segmentos, suscripciones a temas e importaciones CSV de contactos. Soporta propiedades de contacto personalizadas.
- Difusiones: Crear, enviar, listar, obtener, actualizar y eliminar campañas de difusión. Soporta programación, marcadores de posición de personalización y texto de vista previa.
- Automatizaciones: Crear, listar, obtener, actualizar y eliminar automatizaciones. Revisar las ejecuciones de una automatización.
- Eventos: Enviar eventos para activar automatizaciones para un contacto. Crear, actualizar y eliminar definiciones de eventos.
- Dominios: Crear, listar, obtener, actualizar, eliminar y verificar dominios de remitente. Configurar seguimiento, TLS y capacidades de envío/recepción. Crear y verificar reclamaciones de dominio.
- Segmentos: Crear, listar, obtener y eliminar segmentos de audiencia.
- Supresiones: Listar, obtener, añadir y eliminar entradas de la lista de supresión, individualmente o en lote. Los rebotes duros y las quejas de spam se suprimen automáticamente; añade direcciones manualmente para cumplir con las solicitudes de no contacto.
- Temas: Crear, listar, obtener, actualizar y eliminar temas de suscripción.
- Propiedades de contacto: Crear, listar, obtener, actualizar y eliminar atributos de contacto personalizados.
- Claves API: Crear, listar y eliminar claves API.
- Webhooks: Crear, listar, obtener, actualizar y eliminar webhooks para notificaciones de eventos.
- Registros: Listar e inspeccionar registros de solicitudes API, incluyendo cuerpos completos de solicitud y respuesta.
- Editor: Conectarse (y desconectarse) del editor visual en el panel de Resend, y leer el contenido de un borrador mientras se colabora en difusiones y plantillas.
Desarrollo Local
- Clona este proyecto y compila:
git clone https://github.com/resend/resend-mcp.git
pnpm install
pnpm run build
- Para usar la compilación local, reemplaza el comando
npxcon la ruta a tu compilación local:
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"
}
}
}
}
Pruebas en Vivo con un Cliente MCP
Al desarrollar, puedes probar los cambios en una sesión real de cliente MCP mientras editas el código en otra.
La idea: ejecuta tsc --watch para reconstruir continuamente dist/, y apunta un cliente MCP separado al dist/index.js compilado desde un directorio diferente. Cuando quieras recoger los cambios de código, reinicia la sesión del cliente MCP (los servidores MCP son procesos stdio de larga duración que no se recargan en caliente).
Ejemplo con Claude Code:
-
Ejecuta el observador de TypeScript para auto-reconstruir al guardar:
pnpm tsc --watch -
En un directorio separado, crea un
.mcp.jsonapuntando a la salida de compilación: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" } } } } -
Inicia Claude Code desde ese directorio y usa las herramientas MCP. Después de hacer cambios en el código, inicia una nueva sesión de Claude Code para recoger la nueva compilación.
El mismo principio se aplica a cualquier cliente MCP — separa tu entorno de pruebas de tu entorno de desarrollo, usa una ruta absoluta a dist/index.js, y reconecta el servidor MCP después de reconstruir.
Pruebas con MCP Inspector
Nota: Asegúrate de haber compilado el proyecto primero (consulta la sección Desarrollo Local arriba).
Usando Transporte Stdio
-
Establece tu clave API:
export RESEND_API_KEY=re_your_key_here -
Inicia el inspector:
pnpm inspector -
En el navegador (Interfaz del Inspector):
- Elige stdio (lanzar un proceso).
- Comando:
node - Args:
dist/index.js(o la ruta completa adist/index.js) - Env:
RESEND_API_KEY=re_your_key_here(o déjalo en blanco si ya lo exportaste en la misma terminal). - Haz clic en Conectar, luego usa "Listar herramientas" para verificar que el servidor funciona.
Usando Transporte HTTP
-
Inicia el servidor HTTP en una terminal:
node dist/index.js --http --port 3000 -
Inicia el inspector en otra terminal:
pnpm inspector -
En el navegador (Interfaz del Inspector):
- Elige HTTP transmitible (conectar a URL).
- URL:
http://127.0.0.1:3000/mcp - Añade un encabezado personalizado:
Authorization: Bearer re_your_key_herey activa el interruptor. - Haz clic en Conectar, luego usa "Listar herramientas" para verificar que el servidor funciona.