Emailens Mcp

Servidor MCP para análise de compatibilidade de e-mails. Analise, visualize, diferencie e corrija e-mails HTML em 15 clientes de e-mail — além de capturar capturas de tela reais e criar links compartilháveis com uma chave de API opcional.

Documentação

emailens / mcp

Análise de renderização de e-mail para assistentes de IA

CI npm license MCP Registry Smithery GitHub stars

Servidor MCP para análise de compatibilidade de e-mail. Analise, visualize, compare e corrija e-mails em 21 clientes de e-mail, além de capturar capturas de tela reais e criar links compartilháveis com uma chave de API opcional.

Envie HTML, MJML, Maizzle ou React Email. Defina format e o template será compilado antes da análise, para que o que seja verificado seja o HTML que seus leitores realmente recebem.

Por que seu assistente precisa disso: entre os 298 recursos de CSS e HTML que rastreamos, apenas 6 são totalmente suportados em todos os principais clientes de e-mail (veja os dados). Peça ao Claude para verificar seu e-mail antes de enviá-lo.

Construído em @emailens/engine. Também disponível como uma GitHub Action.

Instalação

npx -y @emailens/mcp

Configuração

Claude Desktop

Adicione ao claude_desktop_config.json:

{
  "mcpServers": {
    "emailens": {
      "command": "npx",
      "args": ["-y", "@emailens/mcp"]
    }
  }
}

Claude Code

claude mcp add emailens -- npx -y @emailens/mcp

Com chave de API (opcional, desbloqueia capturas de tela + compartilhamento)

{
  "mcpServers": {
    "emailens": {
      "command": "npx",
      "args": ["-y", "@emailens/mcp"],
      "env": {
        "EMAILENS_API_KEY": "ek_live_..."
      }
    }
  }
}

Obtenha sua chave de API gratuita em emailens.dev/settings/api-keys.

Remoto (sem instalação)

Use o endpoint hospedado: sem necessidade de npm ou Node.js. Chave de API necessária.

{
  "mcpServers": {
    "emailens": {
      "url": "https://emailens.dev/api/mcp",
      "headers": {
        "Authorization": "Bearer ek_live_..."
      }
    }
  }
}

Ferramentas

Ferramentas locais (sem necessidade de conta)

preview_email

Visualização completa de compatibilidade de e-mail: transforma HTML para 21 clientes, analisa CSS, gera pontuações, simula modo escuro, verifica pré-visualização da caixa de entrada e tamanho do e-mail.

ParâmetroTipoObrigatórioDescrição
htmlstringSimFonte HTML do e-mail
clientsstring[]NãoFiltrar para IDs de clientes específicos
formatenumNão"html", "jsx", "mjml", "maizzle"

analyze_email

Análise rápida de compatibilidade CSS; retorna pontuações por cliente e um achado por problema. Mais rápido que audit_email quando você só precisa de compatibilidade CSS.

ParâmetroTipoObrigatórioDescrição
htmlstringSimFonte HTML do e-mail
formatenumNãoFormato de entrada
detailenumNão"summary" (padrão) ou "full"
clientsstring[]NãoRelatar apenas estes IDs de clientes
targetingPolicyenumNão"progressive" (padrão), "strict" ou "lenient"

Um achado por problema, não um por cliente. O mecanismo relata por cliente porque uma pontuação é por cliente, e por seletor porque uma correção é por seletor. Em um boletim informativo comum, border-radius chega doze vezes (dois clientes que o descartam, seis seletores que o usam) com a mesma frase em cada cópia. Isso era 286KB de JSON, cerca de 73.000 tokens, para um e-mail de 11KB.

Os achados são agrupados por propriedade, gravidade e mensagem, listando os clientes afetados, com posições mescladas em todos eles. O mesmo e-mail agora retorna 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]
}

Snippets de correção não estão incluídos; eles eram 93KB desses 286KB, e fix_email os produz para os problemas que você decidir corrigir. hasFix informa se um está disponível; fixType informa se o reparo é de marcação ou CSS.

Passe detail: "full" para a forma por cliente do mecanismo com snippets, e clients: ["gmail-web", "outlook-windows"] para relatar apenas o que você se importa: a economia adicional mais rápida, reduzindo aproximadamente pela metade a resposta para dois clientes. As pontuações permanecem do e-mail inteiro de qualquer forma: estreitar o relatório não muda o que o e-mail vale em outros lugares. Um ID de cliente desconhecido é rejeitado pelo nome; um resultado vazio seria lido como "este e-mail está bom para esse cliente".

Posições de origem. Para entrada HTML, cada aviso carrega loc (line, column, offset, length) para a primeira ocorrência, além de alsoAtLines para quaisquer outras, para que um assistente possa editar a fonte exata e saiba onde as demais estão. audit_email posiciona seus outros achados da mesma forma.

{
  "property": "border-radius",
  "loc": { "line": 7, "column": 8, "offset": 142, "length": 25 },
  "alsoAtLines": [12, 19]
}

Ocorrências posteriores são números de linha em vez de posições completas de propósito: esta resposta é lida por um modelo que paga por cada token, e um boletim informativo real pode produzir mais de mil ocorrências; carregá-las todas por extenso quase dobra a carga útil.

As posições são relatadas apenas para entrada html. JSX, MJML e Maizzle são compilados antes da análise, então um número de linha apontaria para a saída gerada em vez do arquivo que você tem aberto: as ferramentas o omitem em vez de retornar um que pareça autoritativo.

audit_email

Auditoria abrangente de qualidade: compatibilidade CSS, pontuação de spam, validação de links, acessibilidade, imagens, pré-visualização da caixa de entrada, tamanho (corte do Gmail), variáveis de template, estouro de conteúdo, bugs visuais, contraste de texto em modo escuro e móvel, consistência de design e segmentação de clientes.

Os três últimos cobrem o que uma pré-visualização leve de desktop não pode mostrar: texto que desaparece quando um cliente força o modo escuro ou quando o próprio bloco escuro do e-mail repinta uma superfície sem recolorir o texto sobre ela, contraste abaixo do ponto de quebra do e-mail e cores que diferem por valor, mas não para um leitor.

ParâmetroTipoObrigatórioDescrição
htmlstringSimFonte HTML do e-mail
formatenumNãoFormato de entrada
detailenumNão"summary" (padrão) ou "full"
clientsstring[]NãoRelatar apenas estes IDs de clientes
skipstring[]NãoVerificações para pular (ex.: ["spam", "images"])
targetingPolicyenumNão"progressive" (padrão), "strict" ou "lenient"

fix_email

Gere um prompt de correção estruturado para problemas de compatibilidade. Retorna markdown com instruções de correção que a IA pode aplicar diretamente.

ParâmetroTipoObrigatórioDescrição
htmlstringSimHTML do e-mail para corrigir
formatenumNãoControla a sintaxe da correção
scopeenumNão"all" ou "current"
selectedClientIdstringNãoID do cliente para correções direcionadas

list_clients

Liste todos os 21 clientes de e-mail suportados com IDs, nomes, mecanismos e suporte a modo escuro.

diff_emails

Compare duas versões de HTML de e-mail; mostra mudanças de pontuação, problemas corrigidos e problemas introduzidos por cliente.

ParâmetroTipoObrigatórioDescrição
beforestringSimHTML do e-mail original
afterstringSimHTML do e-mail modificado
formatenumNãoFormato de entrada

check_deliverability

Verifique a entregabilidade de e-mail para um domínio: registros SPF, DKIM, DMARC, MX, BIMI com pontuação e problemas acionáveis.

ParâmetroTipoObrigatórioDescrição
domainstringSimDomínio para verificar (ex.: "company.com")

Ferramentas hospedadas (exigem EMAILENS_API_KEY)

capture_screenshots

Capture capturas de tela reais de e-mail em 21 clientes em navegadores reais. As capturas de tela são hospedadas em CDN.

ParâmetroTipoObrigatórioDescrição
htmlstringSimFonte HTML do e-mail
formatenumNãoFormato de entrada
clientsstring[]NãoFiltrar clientes
modesstring[]Não["light"], ["dark"] ou ["light", "dark"]
titlestringNãoNome para a pré-visualização

Plano gratuito: 30 pré-visualizações/dia. Inscreva-se

share_preview

Crie um link compartilhável. Os destinatários veem a análise completa sem uma conta.

ParâmetroTipoObrigatórioDescrição
htmlstringSimFonte HTML do e-mail
titlestringNãoTítulo de exibição
formatenumNãoFormato de entrada

Requer o plano Dev ($9/mês). Os links de compartilhamento expiram após 7 dias (Dev) ou nunca (Pro).

Formatos de template

format aceita html (o padrão), mjml, maizzle e jsx (React Email). maizzle é um template HTML ou um componente Vue de arquivo único. Um arquivo Vue colado sem format é compilado como maizzle. Qualquer coisa que não seja html é compilada antes da análise e também decide a sintaxe na qual os snippets de correção retornam.

Compilar importa mais do que parece. Um cliente de e-mail renderiza a saída, então é isso que precisa ser verificado: entregue um documento <mjml> bruto, um analisador HTML não encontra CSS nele e relata um e-mail perfeitamente limpo. Uma resposta assim é pior que um erro, porque um assistente a repetirá.

Os compiladores não estão incluídos. Somente MJML puxa 56MB, e este servidor é geralmente iniciado com npx, então o mecanismo os mantém como dependências opcionais de pares:

npm install mjml                                              # MJML
npm install @maizzle/framework@5                             # Maizzle HTML
npm install @maizzle/framework@6                             # Maizzle Vue single-file components
npm install sucrase react @react-email/components @react-email/render  # React Email

Eles precisam ser instalados onde o servidor roda, o que nem sempre é um lugar que você controla. Se não for, compile o template você mesmo e envie o HTML resultante com format: "html": as ferramentas avisam quando isso acontece.

Clientes de e-mail suportados (21)

ClienteIDModo escuroNotas
Gmailgmail-webSim
Gmail Androidgmail-androidSim
Gmail iOSgmail-iosSim
Outlook 365outlook-webSim
Outlook Windowsoutlook-windowsNão
Outlook Windows Legacyoutlook-windows-legacyNãoDescontinuado em outubro de 2026
Outlook iOSoutlook-iosSimNovo na v0.4.0
Outlook Androidoutlook-androidSimNovo na v0.4.0
Outlook para Macoutlook-macosSimNovo na v0.10.0
Apple Mailapple-mail-macosSim
Apple Mail iOSapple-mail-iosSim
Yahoo Mailyahoo-mailSim
Yahoo Mail Androidyahoo-mail-androidSimNovo na v0.10.0
Yahoo Mail iOSyahoo-mail-iosSimNovo na v0.10.0
Samsung Mailsamsung-mailSim
ThunderbirdthunderbirdNão
HEY Mailhey-mailSim
Proton MailprotonmailSimNovo na v0.10.0
AOL MailaolSimNovo na v0.10.0
FastmailfastmailSimNovo na v0.10.0
SuperhumansuperhumanSim

Lançamento

Duas publicações: npm e o registro MCP. A listagem do registro ficou cinco lançamentos atrasada porque nada empurrou server.json, então essa metade é um fluxo de trabalho agora. RELEASING.md tem os detalhes e os quatro lugares onde a versão precisa concordar.

Desenvolvimento

bun install
bun run build
bun test
bun run typecheck

Licença

MIT


Se isso te salvou de uma surpresa do Outlook, uma estrela ajuda outros desenvolvedores de e-mail a encontrá-lo.