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 asistente que envíe, liste, obtenga, cancele o envíe en lote correos con archivos adjuntos, CC/CCO, programación y encabezados personalizados mediante
send_email. - Gestionar contactos y audiencias — Crea, actualiza o elimina contactos, administra membresías de segmentos y suscripciones a temas, e importa contactos desde CSV usando
create_contact. - Crear y enviar transmisiones — Crea, programa, envía o cancela campañas de transmisión con marcadores de personalización y texto de vista previa a través de
create_broadcast. - Manejar correos entrantes — Lista y lee correos recibidos, y descarga archivos adjuntos de mensajes entrantes usando
list_received_emails. - Gestionar plantillas y dominios — Crea, actualiza, publica o duplica plantillas de correo con variables, y verifica o configura dominios de remitente mediante
create_templateyverify_domain. - Monitorear y automatizar — Revisa registros de solicitudes de API, gestiona webhooks y activa automatizaciones enviando eventos para contactos usando
list_logsysend_event.
Documentación
Servidor MCP de Resend
Conecta tu agente de IA a la plataforma Resend. Envía y recibe correos electrónicos, gestiona contactos, transmisiones, 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 admita servidores remotos (Streamable HTTP). No hay nada que instalar y no hay 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 alojados.
Cuando te conectas, 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 añadir 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 el inicio de sesión con navegador (un servidor, CI o un agente sin interfaz), 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 código abierto que está 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 admite dos modos de transporte: stdio (por defecto) y HTTP. Elige tu modo y cliente preferidos a continuación para empezar. Recuerda reemplazar re_xxxxxxxxx con tu clave API real.
Transporte Stdio (por defecto)
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 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 los pasos completos.
{
"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 a través de 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 Streamable HTTP.
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 configurar el puerto mediante la variable de entorno MCP_PORT:
MCP_PORT=3000 npx -y resend-mcp --http
Uso como biblioteca
El transporte HTTP también se exporta para que pueda 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 de Host solo para localhost (protección contra rebinding de DNS). Al implementar 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 del 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'] });
Mediante 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 en modo stdio, ya que el modo HTTP usa el token Bearer del cliente)--sender: Dirección de correo del remitente por defecto de un dominio verificado--reply-to: Dirección de correo de respuesta por defecto (se puede especificar varias veces)--http: Usar transporte HTTP en lugar de stdio (por defecto: stdio)--port: Puerto HTTP al usar--http(por defecto: 3000, o variable de entornoMCP_PORT)--host: Host para la protección contra rebinding de DNS al usar--http(por defecto:127.0.0.1, oMCP_HOST). Establece a0.0.0.0para deshabilitar la validación deHostdetrá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 del remitente por defecto de un dominio verificado (opcional)REPLY_TO_EMAIL_ADDRESSES: Direcciones de correo de respuesta separadas por comas (opcional)MCP_PORT: Puerto HTTP al usar--http(opcional)MCP_HOST: Host para la protección contra rebinding de 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 del remitente, el servidor MCP te pedirá que la proporciones 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 mediante 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 en lote. Admite HTML, texto plano, archivos adjuntos (archivo local, URL o base64), CC/CCO, responder a, programación, etiquetas, encabezados personalizados, envío basado en temas y claves de idempotencia.
- Correos recibidos: Listar y leer correos entrantes. Listar y descargar archivos adjuntos de correos recibidos.
- Plantillas: Crear, listar, obtener, actualizar, publicar, duplicar y eliminar plantillas de correo. Admite la composición de contenido de plantillas y placeholders de
{{{VARIABLE}}}. - Contactos: Crear, listar, obtener, actualizar y eliminar contactos. Gestionar membresías de segmentos, suscripciones a temas e importaciones de contactos CSV. Admite propiedades personalizadas de contactos.
- Transmisiones: Crear, enviar, cancelar, listar, obtener, actualizar y eliminar campañas de transmisión. Admite programación, placeholders 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 personalizados de contacto.
- 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, incluidos los cuerpos completos de solicitud y respuesta.
- Editor: Conectarse (y desconectarse) al editor visual en el panel de Resend, y leer el contenido de un borrador mientras colaboras en transmisiones 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 cambios en una sesión real de cliente MCP mientras editas 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 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 reconstruir automáticamente al guardar:
pnpm tsc --watch -
En un directorio separado, crea un
.mcp.jsonque apunte 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 de 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 prueba 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 anterior).
Uso del transporte Stdio
-
Configura tu clave API:
export RESEND_API_KEY=re_your_key_here -
Inicia el inspector:
pnpm inspector -
En el navegador (IU del Inspector):
- Elige stdio (iniciar un proceso).
- Comando:
node - Argumentos:
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 y luego usa "Listar herramientas" para verificar que el servidor funciona.
Uso del 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 (IU del Inspector):
- Elige Streamable HTTP (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 y luego usa "Listar herramientas" para verificar que el servidor funciona.