Emailens Mcp
Servidor MCP para análisis de compatibilidad de correos electrónicos. Analiza, previsualiza, compara y corrige correos HTML en 15 clientes de correo, además de capturar capturas de pantalla reales y crear enlaces compartibles con una clave API opcional.
Documentación
Servidor MCP para análisis de compatibilidad de correos electrónicos. Analiza, previsualiza, compara y corrige correos en 21 clientes de correo, además de capturar capturas de pantalla reales y crear enlaces compartibles con una clave API opcional.
Envía HTML, MJML, Maizzle o React Email. Establece format y la plantilla se compila antes del análisis, de modo que lo que se verifica es el HTML que tus lectores realmente reciben.
Por qué tu asistente lo necesita: de las 298 funciones CSS y HTML que rastreamos, solo 6 son totalmente compatibles en todos los principales clientes de correo (ver los datos). Pide a Claude que revise tu correo antes de enviarlo.
Construido sobre @emailens/engine. También disponible como GitHub Action.
Instalación
npx -y @emailens/mcp
Configuración
Claude Desktop
Añade a claude_desktop_config.json:
{
"mcpServers": {
"emailens": {
"command": "npx",
"args": ["-y", "@emailens/mcp"]
}
}
}
Claude Code
claude mcp add emailens -- npx -y @emailens/mcp
Con clave API (opcional, desbloquea capturas de pantalla y uso compartido)
{
"mcpServers": {
"emailens": {
"command": "npx",
"args": ["-y", "@emailens/mcp"],
"env": {
"EMAILENS_API_KEY": "ek_live_..."
}
}
}
}
Obtén tu clave API gratuita en emailens.dev/settings/api-keys.
Remoto (sin instalación)
Usa el endpoint alojado: no se necesitan npm ni Node.js. Se requiere clave API.
{
"mcpServers": {
"emailens": {
"url": "https://emailens.dev/api/mcp",
"headers": {
"Authorization": "Bearer ek_live_..."
}
}
}
}
Herramientas
Herramientas locales (sin necesidad de cuenta)
preview_email
Vista previa completa de compatibilidad de correo: transforma HTML para 21 clientes, analiza CSS, genera puntuaciones, simula modo oscuro, verifica la vista previa de la bandeja de entrada y el tamaño del correo.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
html | string | Sí | Código fuente HTML del correo |
clients | string[] | No | Filtrar a IDs de cliente específicos |
format | enum | No | "html", "jsx", "mjml", "maizzle" |
analyze_email
Análisis rápido de compatibilidad CSS; devuelve puntuaciones por cliente y un hallazgo por problema. Más rápido que audit_email cuando solo necesitas compatibilidad CSS.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
html | string | Sí | Código fuente HTML del correo |
format | enum | No | Formato de entrada |
detail | enum | No | "summary" (predeterminado) o "full" |
clients | string[] | No | Informar solo estos IDs de cliente |
Un hallazgo por problema, no uno por cliente. El motor informa por cliente
porque una puntuación es por cliente, y por selector porque una corrección es por selector.
En un boletín ordinario, border-radius llega doce veces (dos clientes
que lo eliminan, seis selectores que lo usan) con la misma frase en cada copia.
Eso eran 286KB de JSON, alrededor de 73,000 tokens, para un correo de 11KB.
Los hallazgos se agrupan por propiedad, gravedad y mensaje, enumerando los clientes afectados, con posiciones fusionadas en todos ellos. El mismo correo ahora devuelve 40KB.
{
"property": "border-radius",
"severity": "warning",
"clients": ["outlook-windows", "outlook-windows-legacy"],
"message": "Does not support \"border-radius\". Round corners can be used in VML…",
"fixType": "structural",
"hasFix": true,
"loc": { "line": 61, "column": 28, "offset": 2753, "length": 171 },
"alsoAtLines": [62, 64, 75, 78, 87]
}
Los fragmentos de corrección no se incluyen; eran 93KB de esos 286KB, y fix_email
los produce para los problemas en los que decides actuar. hasFix te indica que uno está
disponible; fixType te indica si la reparación es de marcado o CSS.
Pasa detail: "full" para la forma por cliente del motor con fragmentos, y
clients: ["gmail-web", "outlook-windows"] para informar solo lo que te importa:
el ahorro adicional más rápido, reduciendo aproximadamente a la mitad la respuesta para dos clientes.
Las puntuaciones permanecen de correo completo de cualquier manera: reducir el informe no cambia
el valor del correo en otros lugares. Un ID de cliente desconocido se rechaza por nombre; un
resultado vacío se leería como "este correo está bien para ese cliente".
Posiciones de origen. Para entrada HTML, cada advertencia lleva loc (line,
column, offset, length) para la primera aparición, además de alsoAtLines para
cualquier otra, de modo que un asistente pueda editar el origen exacto y sepa dónde están
las demás. audit_email posiciona sus otros hallazgos de la misma manera.
{
"property": "border-radius",
"loc": { "line": 7, "column": 8, "offset": 142, "length": 25 },
"alsoAtLines": [12, 19]
}
Las apariciones posteriores son números de línea en lugar de posiciones completas a propósito: esta respuesta es leída por un modelo que paga por cada token, y un boletín real puede producir más de mil apariciones; llevarlas todas completas casi duplica la carga útil.
Las posiciones se informan solo para entrada html. JSX, MJML y Maizzle se compilan
antes del análisis, por lo que un número de línea apuntaría a la salida generada en lugar de
al archivo que tienes abierto: las herramientas lo omiten en lugar de devolver uno que parezca
autoritativo.
audit_email
Auditoría de calidad integral: compatibilidad CSS, puntuación de spam, validación de enlaces, accesibilidad, imágenes, vista previa de bandeja de entrada, tamaño (recorte de Gmail), variables de plantilla, desbordamiento de contenido, errores visuales, contraste de texto en modo oscuro y móvil, y consistencia de diseño.
Los últimos tres cubren lo que una vista previa de escritorio ligera no puede mostrar: texto que desaparece cuando un cliente fuerza el modo oscuro o cuando el bloque oscuro del propio correo repinta una superficie sin volver a colorear el texto sobre ella, contraste por debajo del punto de interrupción del correo, y colores que difieren en valor pero no para un lector.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
html | string | Sí | Código fuente HTML del correo |
format | enum | No | Formato de entrada |
detail | enum | No | "summary" (predeterminado) o "full" |
clients | string[] | No | Informar solo estos IDs de cliente |
skip | string[] | No | Comprobaciones a omitir (p. ej. ["spam", "images"]) |
fix_email
Genera un mensaje de corrección estructurado para problemas de compatibilidad. Devuelve markdown con instrucciones de corrección que la IA puede aplicar directamente.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
html | string | Sí | HTML del correo a corregir |
format | enum | No | Controla la sintaxis de corrección |
scope | enum | No | "all" o "current" |
selectedClientId | string | No | ID de cliente para correcciones específicas |
list_clients
Enumera los 21 clientes de correo compatibles con IDs, nombres, motores y soporte de modo oscuro.
diff_emails
Compara dos versiones de HTML de correo; muestra cambios de puntuación, problemas corregidos y problemas introducidos por cliente.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
before | string | Sí | HTML del correo original |
after | string | Sí | HTML del correo modificado |
format | enum | No | Formato de entrada |
check_deliverability
Verifica la entregabilidad del correo para un dominio: registros SPF, DKIM, DMARC, MX, BIMI con una puntuación y problemas accionables.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
domain | string | Sí | Dominio a verificar (p. ej. "company.com") |
Herramientas alojadas (requieren EMAILENS_API_KEY)
capture_screenshots
Captura capturas de pantalla reales de correos en 21 clientes en navegadores reales. Las capturas se alojan en CDN.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
html | string | Sí | Código fuente HTML del correo |
format | enum | No | Formato de entrada |
clients | string[] | No | Filtrar clientes |
modes | string[] | No | ["light"], ["dark"] o ["light", "dark"] |
title | string | No | Nombre para la vista previa |
Plan gratuito: 30 vistas previas/día. Regístrate
share_preview
Crea un enlace compartible. Los destinatarios ven el análisis completo sin una cuenta.
| Parámetro | Tipo | Obligatorio | Descripción |
|---|---|---|---|
html | string | Sí | Código fuente HTML del correo |
title | string | No | Título para mostrar |
format | enum | No | Formato de entrada |
Requiere plan Dev ($9/mes). Los enlaces compartidos caducan después de 7 días (Dev) o nunca (Pro).
Formatos de plantilla
format acepta html (el predeterminado), mjml, maizzle y jsx (React
Email). Cualquier cosa que no sea html se compila antes del análisis y también decide la
sintaxis en la que se devuelven los fragmentos de corrección.
Compilar importa más de lo que parece. Un cliente de correo renderiza la salida, por lo
que eso es lo que debe verificarse: si se entrega un documento <mjml> sin procesar, un analizador
HTML no encuentra CSS en él e informa un correo perfectamente limpio. Una respuesta así es
peor que un error, porque un asistente la repetirá.
Los compiladores no están incluidos. MJML solo ocupa 56MB, y este servidor se
inicia normalmente con npx, por lo que el motor los mantiene como dependencias
opcionales entre pares:
npm install mjml # MJML
npm install @maizzle/framework # Maizzle
npm install sucrase react @react-email/components @react-email/render # React Email
Deben instalarse donde se ejecuta el servidor, que no siempre es un lugar que
controles. Si no es así, compila la plantilla tú mismo y envía el HTML resultante
con format: "html": las herramientas lo indican cuando llegan a esto.
Clientes de correo compatibles (21)
| Cliente | ID | Modo oscuro | Notas |
|---|---|---|---|
| Gmail | gmail-web | Sí | |
| Gmail Android | gmail-android | Sí | |
| Gmail iOS | gmail-ios | Sí | |
| Outlook 365 | outlook-web | Sí | |
| Outlook Windows | outlook-windows | No | |
| Outlook Windows Legacy | outlook-windows-legacy | No | Obsoleto oct. 2026 |
| Outlook iOS | outlook-ios | Sí | Nuevo en v0.4.0 |
| Outlook Android | outlook-android | Sí | Nuevo en v0.4.0 |
| Outlook para Mac | outlook-macos | Sí | Nuevo en v0.10.0 |
| Apple Mail | apple-mail-macos | Sí | |
| Apple Mail iOS | apple-mail-ios | Sí | |
| Yahoo Mail | yahoo-mail | Sí | |
| Yahoo Mail Android | yahoo-mail-android | Sí | Nuevo en v0.10.0 |
| Yahoo Mail iOS | yahoo-mail-ios | Sí | Nuevo en v0.10.0 |
| Samsung Mail | samsung-mail | Sí | |
| Thunderbird | thunderbird | No | |
| HEY Mail | hey-mail | Sí | |
| Proton Mail | protonmail | Sí | Nuevo en v0.10.0 |
| AOL Mail | aol | Sí | Nuevo en v0.10.0 |
| Fastmail | fastmail | Sí | Nuevo en v0.10.0 |
| Superhuman | superhuman | Sí |
Publicación
Dos publicaciones: npm y el registro MCP. El listado del registro quedó cinco
versiones atrás porque nada empujaba server.json, así que esa mitad es un
flujo de trabajo ahora. RELEASING.md tiene los detalles y los cuatro
lugares donde la versión debe coincidir.
Desarrollo
bun install
bun run build
bun test
bun run typecheck
Licencia
MIT
Si esto te salvó de una sorpresa de Outlook, una estrella ayuda a otros desarrolladores de correo a encontrarlo.