¿Qué es el Servidor MCP de Emailit?
El Servidor MCP de Emailit es un servidor de código abierto del Protocolo de Contexto de Modelo que conecta asistentes de IA directamente con Emailit.
Te permite enviar correos electrónicos, gestionar contactos, dominios, plantillas y más a través de lenguaje natural, directamente desde Claude, Cursor o cualquier cliente compatible con MCP.
- Paquete:
@emailit/emailit-mcp - Entorno de ejecución: Node.js 18+
- Licencia: MIT
- Repositorio: github.com/emailit/emailit-mcp
Requisitos previos
- Una cuenta de Emailit
- Una clave de API
- Un dominio de envío verificado
- Node.js 18 o superior
Modos de transporte
El servidor admite dos modos de transporte:
Stdio (predeterminado)
El cliente MCP inicia el servidor como un subproceso y se comunica a través de entrada/salida estándar. La clave de API se pasa mediante una variable de entorno o argumento CLI. Esta es la opción más sencilla y funciona con todos los clientes principales.
HTTP (HTTP Transmisible)
Para integraciones remotas o basadas en web, el servidor funciona como un servidor HTTP utilizando transporte HTTP Transmisible. Los clientes se autentican por sesión pasando su clave de API como token Bearer en el encabezado Authorization. El endpoint se expone en /mcp.
Instalación y configuración
Claude Code (Stdio)
claude mcp add emailit \
-e EMAILIT_API_KEY=tu_clave_api \
-- npx -y @emailit/emailit-mcp
Claude Code (HTTP)
Primero inicia el servidor:
npx -y @emailit/emailit-mcp --http --port 3000
Luego regístralo:
claude mcp add emailit \
--transport http http://127.0.0.1:3000/mcp \
--header "Authorization: Bearer tu_clave_api"
Cursor (Stdio)
Abre la paleta de comandos y elige Cursor Settings → MCP → Add new global MCP server, luego pega:
{
"mcpServers": {
"emailit": {
"command": "npx",
"args": ["-y", "@emailit/emailit-mcp"],
"env": {
"EMAILIT_API_KEY": "tu_clave_api"
}
}
}
}
Cursor (HTTP)
Inicia el servidor, luego agrega:
{
"mcpServers": {
"emailit": {
"url": "http://127.0.0.1:3000/mcp",
"headers": {
"Authorization": "Bearer tu_clave_api"
}
}
}
}
Claude Desktop (Stdio)
Abre Configuración de Claude Desktop → pestaña Developer → Edit Config, luego pega:
{
"mcpServers": {
"emailit": {
"command": "npx",
"args": ["-y", "@emailit/emailit-mcp"],
"env": {
"EMAILIT_API_KEY": "tu_clave_api"
}
}
}
}
Opciones CLI
| Opción | Descripción |
|---|---|
--key <clave> | Clave de API (solo stdio; HTTP usa token Bearer) |
--sender <email> | Remitente predeterminado de un dominio verificado |
--reply-to <email> | Responder a predeterminado (se puede repetir) |
--http | Usar transporte HTTP en lugar de stdio |
--port <puerto> | Puerto HTTP (predeterminado: 3000) |
-h, --help | Mostrar mensaje de ayuda |
Variables de entorno
| Variable | Descripción |
|---|---|
EMAILIT_API_KEY | Clave de API (requerida para stdio) |
SENDER_EMAIL_ADDRESS | Remitente predeterminado de un dominio verificado |
REPLY_TO_EMAIL_ADDRESSES | Direcciones de respuesta separadas por comas |
MCP_PORT | Puerto HTTP (predeterminado: 3000) |
Consejo: Si no proporcionas una dirección de correo del remitente, el servidor MCP te pedirá una cada vez que envíes un correo.
Herramientas disponibles
El servidor expone 47 herramientas en 8 categorías.
Correos electrónicos (10 herramientas)
| Herramienta | Descripción |
|---|---|
send-email | Enviar un correo (HTML, texto, plantillas, adjuntos, programación) |
list-emails | Listar correos con paginación y filtrado opcional |
get-email | Obtener un correo específico por ID |
get-email-raw | Obtener el mensaje MIME completo sin procesar |
get-email-body | Obtener contenido del cuerpo procesado (texto y HTML) |
get-email-attachments | Obtener adjuntos con contenido base64 |
get-email-meta | Obtener metadatos del correo |
update-email | Actualizar la hora de envío de un correo programado |
cancel-email | Cancelar un correo programado o pendiente |
retry-email | Reintentar un correo fallido, con error o retenido |
Dominios (6 herramientas)
| Herramienta | Descripción |
|---|---|
create-domain | Crear un dominio y obtener registros DNS |
get-domain | Obtener información del dominio y estado de verificación |
list-domains | Listar todos los dominios |
update-domain | Actualizar configuración de seguimiento |
delete-domain | Eliminar un dominio (irreversible) |
verify-domain | Activar verificación DNS |
Claves de API (5 herramientas)
| Herramienta | Descripción |
|---|---|
create-api-key | Crear una nueva clave de API (se muestra solo una vez) |
get-api-key | Obtener información de la clave de API |
list-api-keys | Listar todas las claves de API |
update-api-key | Actualizar el nombre de una clave de API |
delete-api-key | Eliminar una clave de API (irreversible) |
Audiencias (5 herramientas)
| Herramienta | Descripción |
|---|---|
create-audience | Crear una audiencia para campañas |
get-audience | Obtener detalles de la audiencia |
list-audiences | Listar todas las audiencias |
update-audience | Actualizar el nombre de una audiencia |
delete-audience | Eliminar una audiencia y todos sus suscriptores |
Contactos (5 herramientas)
| Herramienta | Descripción |
|---|---|
create-contact | Crear un contacto con suscripciones a audiencias |
get-contact | Obtener un contacto por ID o dirección de correo |
list-contacts | Listar todos los contactos |
update-contact | Actualizar los detalles de un contacto |
delete-contact | Eliminar un contacto y sus registros de suscriptor |
Plantillas (6 herramientas)
| Herramienta | Descripción |
|---|---|
create-template | Crear una plantilla de correo |
get-template | Obtener una plantilla por ID con todas las versiones |
list-templates | Listar plantillas publicadas con filtrado |
update-template | Actualizar una plantilla |
delete-template | Eliminar una plantilla permanentemente |
publish-template | Publicar una versión de plantilla |
Supresiones (5 herramientas)
| Herramienta | Descripción |
|---|---|
create-suppression | Agregar una dirección de correo a la lista de supresión |
get-suppression | Obtener una supresión por ID o correo |
list-suppressions | Listar todas las supresiones |
update-suppression | Actualizar una supresión |
delete-suppression | Eliminar una supresión |
Webhooks (5 herramientas)
| Herramienta | Descripción |
|---|---|
create-webhook | Crear un webhook con suscripciones a eventos |
get-webhook | Obtener información del webhook |
list-webhooks | Listar todos los webhooks |
update-webhook | Actualizar un webhook |
delete-webhook | Eliminar un webhook |
Ejemplos de uso
Enviar un correo simple
Pregúntale a tu asistente de IA:
“Envía un correo de bienvenida a john@example.com con el asunto ‘¡Bienvenido!’”
La IA llama a send-email con:
{
"from": "hola@midominio.com",
"to": "john@example.com",
"subject": "¡Bienvenido!",
"html": "<h1>¡Bienvenido!</h1><p>Gracias por registrarte.</p>"
}
Enviar con plantilla y variables
“Envía la plantilla correo-bienvenida a sarah@example.com con su nombre como Sarah.”
{
"from": "hola@midominio.com",
"to": "sarah@example.com",
"template": "correo-bienvenida",
"variables": { "name": "Sarah" }
}
Programar un correo
“Programa un correo recordatorio para equipo@empresa.com para mañana a las 9am.”
{
"from": "recordatorios@midominio.com",
"to": "equipo@empresa.com",
"subject": "Recordatorio de Reunión Diaria",
"text": "¡No olviden la reunión a las 9:30!",
"scheduled_at": "mañana a las 9am"
}
Enviar con adjuntos
“Envía un correo a contabilidad@empresa.com con la factura en PDF adjunta.”
{
"from": "facturacion@midominio.com",
"to": "contabilidad@empresa.com",
"subject": "Factura Mensual",
"html": "<p>Por favor encuentra la factura adjunta.</p>",
"attachments": [
{
"filename": "factura-2026-05.pdf",
"url": "https://example.com/facturas/2026-05.pdf"
}
]
}
Gestionar dominios
“Agrega mi dominio correo.example.com y muéstrame los registros DNS.”
La IA llama a create-domain y muestra los registros DNS requeridos para que los configures con tu proveedor de DNS.
“Verifica mi dominio.”
La IA llama a verify-domain para verificar la propagación DNS e informa el estado de verificación.
Gestionar contactos
“Agrega a Jane Smith (jane@example.com) a la audiencia aud_abc123.”
{
"email": "jane@example.com",
"first_name": "Jane",
"last_name": "Smith",
"audiences": ["aud_abc123"]
}
Gestionar plantillas
“Crea una plantilla de boletín con alias boletin-mensual.”
{
"name": "Boletín Mensual",
"alias": "boletin-mensual",
"subject": "Actualización {{mes}}",
"html": "<h1>Actualización de {{mes}}</h1>..."
}
Gestionar supresiones
“Suprime rebotado@example.com por demasiados rebotes duros.”
{
"email": "rebotado@example.com",
"type": "bounce",
"reason": "demasiados rebotes duros"
}
Configurar webhooks
“Crea un webhook que envíe eventos de entrega y rebote a mi endpoint.”
{
"name": "Rastreador de Entregas",
"url": "https://miapp.com/webhooks/email",
"events": ["email.delivered", "email.bounced"]
}
Notas de seguridad
- Las claves de API nunca deben confirmarse en el control de versiones.
- En modo stdio, la clave de API se almacena en la configuración del cliente MCP.
- En modo HTTP, los clientes pasan la clave de API por sesión mediante token Bearer.
- Las URLs de webhook se validan contra SSRF antes de la creación.
- Las operaciones de eliminación solicitan a la IA que confirme contigo primero.
Solución de problemas
“Se requiere clave de API para modo stdio”
Establece la variable de entorno EMAILIT_API_KEY o pasa --key.
Dominio no verificado
Configura los registros DNS de la salida de create-domain, luego llama a verify-domain.
Correo rechazado / no se envía Asegúrate de que el dominio esté verificado y la dirección del remitente use ese dominio.
No se puede cancelar el correo programado Debe ser al menos 3 minutos antes de la hora programada.
Falla el reintento Solo se pueden reintentar correos con fallas graves, con errores, retenidos o suprimidos.
Desarrollo local
git clone https://github.com/emailit/emailit-mcp.git
cd emailit-mcp
npm install
# Ejecutar en modo stdio
EMAILIT_API_KEY=tu_clave node src/index.js
# Ejecutar en modo HTTP
node src/index.js --http --port 3000
Para más detalles, consulta el repositorio de GitHub.