O que é o Servidor MCP do Emailit?
O Servidor MCP do Emailit é um servidor de código aberto do Protocolo de Contexto de Modelo que conecta assistentes de IA diretamente ao Emailit.
Permite enviar emails, gerenciar contatos, domínios, modelos e muito mais através de linguagem natural — diretamente do Claude, Cursor ou qualquer cliente compatível com MCP.
- Pacote:
@emailit/emailit-mcp - Runtime: Node.js 18+
- Licença: MIT
- Repositório: github.com/emailit/emailit-mcp
Pré-requisitos
- Uma conta Emailit
- Uma chave de API
- Um domínio de envio verificado
- Node.js 18 ou superior
Modos de transporte
O servidor suporta dois modos de transporte:
Stdio (padrão)
O cliente MCP inicia o servidor como um subprocesso e se comunica através de entrada/saída padrão. A chave de API é passada via variável de ambiente ou argumento CLI. Esta é a opção mais simples e funciona com todos os principais clientes.
HTTP (HTTP Streamable)
Para integrações remotas ou baseadas na web, o servidor executa como um servidor HTTP usando transporte HTTP Streamable. Os clientes se autenticam por sessão passando sua chave de API como token Bearer no cabeçalho Authorization. O endpoint é exposto em /mcp.
Instalação e configuração
Claude Code (Stdio)
claude mcp add emailit \
-e EMAILIT_API_KEY=sua_chave_api \
-- npx -y @emailit/emailit-mcp
Claude Code (HTTP)
Primeiro inicie o servidor:
npx -y @emailit/emailit-mcp --http --port 3000
Depois registre-o:
claude mcp add emailit \
--transport http http://127.0.0.1:3000/mcp \
--header "Authorization: Bearer sua_chave_api"
Cursor (Stdio)
Abra a paleta de comandos e escolha Cursor Settings → MCP → Add new global MCP server, depois cole:
{
"mcpServers": {
"emailit": {
"command": "npx",
"args": ["-y", "@emailit/emailit-mcp"],
"env": {
"EMAILIT_API_KEY": "sua_chave_api"
}
}
}
}
Cursor (HTTP)
Inicie o servidor, depois adicione:
{
"mcpServers": {
"emailit": {
"url": "http://127.0.0.1:3000/mcp",
"headers": {
"Authorization": "Bearer sua_chave_api"
}
}
}
}
Claude Desktop (Stdio)
Abra Configurações do Claude Desktop → aba Developer → Edit Config, depois cole:
{
"mcpServers": {
"emailit": {
"command": "npx",
"args": ["-y", "@emailit/emailit-mcp"],
"env": {
"EMAILIT_API_KEY": "sua_chave_api"
}
}
}
}
Opções CLI
| Opção | Descrição |
|---|---|
--key <chave> | Chave de API (apenas stdio; HTTP usa token Bearer) |
--sender <email> | Remetente padrão de um domínio verificado |
--reply-to <email> | Reply-to padrão (pode ser repetido) |
--http | Usar transporte HTTP em vez de stdio |
--port <porta> | Porta HTTP (padrão: 3000) |
-h, --help | Mostrar mensagem de ajuda |
Variáveis de ambiente
| Variável | Descrição |
|---|---|
EMAILIT_API_KEY | Chave de API (obrigatória para stdio) |
SENDER_EMAIL_ADDRESS | Remetente padrão de um domínio verificado |
REPLY_TO_EMAIL_ADDRESSES | Endereços reply-to separados por vírgula |
MCP_PORT | Porta HTTP (padrão: 3000) |
Dica: Se você não fornecer um endereço de email remetente, o servidor MCP pedirá um a cada envio de email.
Ferramentas disponíveis
O servidor expõe 47 ferramentas em 8 categorias.
Emails (10 ferramentas)
| Ferramenta | Descrição |
|---|---|
send-email | Enviar um email (HTML, texto, modelos, anexos, agendamento) |
list-emails | Listar emails com paginação e filtragem opcional |
get-email | Recuperar um único email por ID |
get-email-raw | Obter a mensagem MIME bruta completa |
get-email-body | Obter conteúdo do corpo analisado (texto e HTML) |
get-email-attachments | Obter anexos com conteúdo base64 |
get-email-meta | Obter metadados do email |
update-email | Atualizar horário de envio de um email agendado |
cancel-email | Cancelar um email agendado ou pendente |
retry-email | Tentar novamente um email falhado, com erro ou retido |
Domínios (6 ferramentas)
| Ferramenta | Descrição |
|---|---|
create-domain | Criar um domínio e obter registros DNS |
get-domain | Obter informações do domínio e status de verificação |
list-domains | Listar todos os domínios |
update-domain | Atualizar configurações de rastreamento |
delete-domain | Excluir um domínio (irreversível) |
verify-domain | Acionar verificação DNS |
Chaves de API (5 ferramentas)
| Ferramenta | Descrição |
|---|---|
create-api-key | Criar uma nova chave de API (mostrada apenas uma vez) |
get-api-key | Recuperar informações da chave de API |
list-api-keys | Listar todas as chaves de API |
update-api-key | Atualizar nome de uma chave de API |
delete-api-key | Excluir uma chave de API (irreversível) |
Audiências (5 ferramentas)
| Ferramenta | Descrição |
|---|---|
create-audience | Criar uma audiência para campanhas |
get-audience | Obter detalhes da audiência |
list-audiences | Listar todas as audiências |
update-audience | Atualizar nome de uma audiência |
delete-audience | Excluir uma audiência e todos os seus assinantes |
Contatos (5 ferramentas)
| Ferramenta | Descrição |
|---|---|
create-contact | Criar um contato com assinaturas de audiência |
get-contact | Obter um contato por ID ou endereço de email |
list-contacts | Listar todos os contatos |
update-contact | Atualizar detalhes de um contato |
delete-contact | Excluir um contato e seus registros de assinante |
Modelos (6 ferramentas)
| Ferramenta | Descrição |
|---|---|
create-template | Criar um modelo de email |
get-template | Obter um modelo por ID com todas as versões |
list-templates | Listar modelos publicados com filtragem |
update-template | Atualizar um modelo |
delete-template | Excluir um modelo permanentemente |
publish-template | Publicar uma versão do modelo |
Supressões (5 ferramentas)
| Ferramenta | Descrição |
|---|---|
create-suppression | Adicionar um endereço de email à lista de supressão |
get-suppression | Obter uma supressão por ID ou email |
list-suppressions | Listar todas as supressões |
update-suppression | Atualizar uma supressão |
delete-suppression | Remover uma supressão |
Webhooks (5 ferramentas)
| Ferramenta | Descrição |
|---|---|
create-webhook | Criar um webhook com assinaturas de eventos |
get-webhook | Obter informações do webhook |
list-webhooks | Listar todos os webhooks |
update-webhook | Atualizar um webhook |
delete-webhook | Excluir um webhook |
Exemplos de uso
Enviar um email simples
Peça ao seu assistente de IA:
“Envie um email de boas-vindas para john@example.com com o assunto ‘Bem-vindo!’”
A IA chama send-email com:
{
"from": "ola@meudominio.com",
"to": "john@example.com",
"subject": "Bem-vindo!",
"html": "<h1>Bem-vindo!</h1><p>Obrigado por se cadastrar.</p>"
}
Enviar com modelo e variáveis
“Envie o modelo welcome-email para sarah@example.com com o nome dela como Sarah.”
{
"from": "ola@meudominio.com",
"to": "sarah@example.com",
"template": "welcome-email",
"variables": { "name": "Sarah" }
}
Agendar um email
“Agende um email de lembrete para equipe@empresa.com para amanhã às 9h.”
{
"from": "lembretes@meudominio.com",
"to": "equipe@empresa.com",
"subject": "Lembrete da Reunião Diária",
"text": "Não se esqueçam da reunião às 9:30!",
"scheduled_at": "amanhã às 9h"
}
Enviar com anexos
“Envie um email para contabilidade@empresa.com com o PDF da fatura anexado.”
{
"from": "faturamento@meudominio.com",
"to": "contabilidade@empresa.com",
"subject": "Fatura Mensal",
"html": "<p>Segue em anexo a fatura.</p>",
"attachments": [
{
"filename": "fatura-2026-05.pdf",
"url": "https://example.com/faturas/2026-05.pdf"
}
]
}
Gerenciar domínios
“Adicione meu domínio mail.example.com e me mostre os registros DNS.”
A IA chama create-domain e exibe os registros DNS necessários para você configurar com seu provedor DNS.
“Verifique meu domínio.”
A IA chama verify-domain para verificar a propagação DNS e reporta o status de verificação.
Gerenciar contatos
“Adicione Jane Smith (jane@example.com) à audiência aud_abc123.”
{
"email": "jane@example.com",
"first_name": "Jane",
"last_name": "Smith",
"audiences": ["aud_abc123"]
}
Gerenciar modelos
“Crie um modelo de newsletter com alias newsletter-mensal.”
{
"name": "Newsletter Mensal",
"alias": "newsletter-mensal",
"subject": "Atualização {{mes}}",
"html": "<h1>Atualização de {{mes}}</h1>..."
}
Gerenciar supressões
“Suprima bounced@example.com por muitos bounces duros.”
{
"email": "bounced@example.com",
"type": "bounce",
"reason": "muitos bounces duros"
}
Configurar webhooks
“Crie um webhook que envie eventos de entrega e bounce para meu endpoint.”
{
"name": "Rastreador de Entrega",
"url": "https://meuapp.com/webhooks/email",
"events": ["email.delivered", "email.bounced"]
}
Notas de segurança
- Chaves de API nunca devem ser commitadas no controle de versão.
- No modo stdio, a chave de API é armazenada na configuração do cliente MCP.
- No modo HTTP, clientes passam a chave de API por sessão via token Bearer.
- URLs de webhook são validadas contra SSRF antes da criação.
- Operações de exclusão fazem a IA confirmar com você primeiro.
Solução de problemas
“Chave de API obrigatória para modo stdio”
Configure a variável de ambiente EMAILIT_API_KEY ou passe --key.
Domínio não verificado
Configure os registros DNS da saída de create-domain, depois chame verify-domain.
Email rejeitado / não enviando Certifique-se de que o domínio está verificado e o endereço remetente usa esse domínio.
Email agendado não pode ser cancelado Deve ser pelo menos 3 minutos antes do horário agendado.
Retry falha Apenas emails com falha grave, erro, retidos ou suprimidos podem ser tentados novamente.
Desenvolvimento local
git clone https://github.com/emailit/emailit-mcp.git
cd emailit-mcp
npm install
# Executar em modo stdio
EMAILIT_API_KEY=sua_chave node src/index.js
# Executar em modo HTTP
node src/index.js --http --port 3000
Para mais detalhes, veja o repositório GitHub.