Cos’è il Server MCP di Emailit?
Il Server MCP di Emailit è un server open-source del Model Context Protocol che collega direttamente gli assistenti AI a Emailit.
Ti permette di inviare email, gestire contatti, domini, template e molto altro attraverso il linguaggio naturale — direttamente da Claude, Cursor o qualsiasi client compatibile con MCP.
- Pacchetto:
@emailit/emailit-mcp - Runtime: Node.js 18+
- Licenza: MIT
- Repository: github.com/emailit/emailit-mcp
Prerequisiti
- Un account Emailit
- Una chiave API
- Un dominio di invio verificato
- Node.js 18 o versione successiva
Modalità di trasporto
Il server supporta due modalità di trasporto:
Stdio (predefinita)
Il client MCP avvia il server come sottoprocesso e comunica tramite input/output standard. La chiave API viene passata tramite variabile d’ambiente o argomento CLI. Questa è l’opzione più semplice e funziona con tutti i principali client.
HTTP (Streamable HTTP)
Per integrazioni remote o basate su web, il server funziona come server HTTP utilizzando il trasporto Streamable HTTP. I client si autenticano per sessione passando la loro chiave API come token Bearer nell’header Authorization. L’endpoint è esposto su /mcp.
Installazione e configurazione
Claude Code (Stdio)
claude mcp add emailit \
-e EMAILIT_API_KEY=la_tua_chiave_api \
-- npx -y @emailit/emailit-mcp
Claude Code (HTTP)
Prima avvia il server:
npx -y @emailit/emailit-mcp --http --port 3000
Poi registralo:
claude mcp add emailit \
--transport http http://127.0.0.1:3000/mcp \
--header "Authorization: Bearer la_tua_chiave_api"
Cursor (Stdio)
Apri la palette dei comandi e scegli Cursor Settings → MCP → Add new global MCP server, poi incolla:
{
"mcpServers": {
"emailit": {
"command": "npx",
"args": ["-y", "@emailit/emailit-mcp"],
"env": {
"EMAILIT_API_KEY": "la_tua_chiave_api"
}
}
}
}
Cursor (HTTP)
Avvia il server, poi aggiungi:
{
"mcpServers": {
"emailit": {
"url": "http://127.0.0.1:3000/mcp",
"headers": {
"Authorization": "Bearer la_tua_chiave_api"
}
}
}
}
Claude Desktop (Stdio)
Apri Impostazioni Claude Desktop → scheda Developer → Edit Config, poi incolla:
{
"mcpServers": {
"emailit": {
"command": "npx",
"args": ["-y", "@emailit/emailit-mcp"],
"env": {
"EMAILIT_API_KEY": "la_tua_chiave_api"
}
}
}
}
Opzioni CLI
| Opzione | Descrizione |
|---|---|
--key <chiave> | Chiave API (solo stdio; HTTP usa token Bearer) |
--sender <email> | Mittente predefinito da un dominio verificato |
--reply-to <email> | Reply-to predefinito (può essere ripetuto) |
--http | Usa trasporto HTTP invece di stdio |
--port <porta> | Porta HTTP (predefinita: 3000) |
-h, --help | Mostra messaggio di aiuto |
Variabili d’ambiente
| Variabile | Descrizione |
|---|---|
EMAILIT_API_KEY | Chiave API (richiesta per stdio) |
SENDER_EMAIL_ADDRESS | Mittente predefinito da un dominio verificato |
REPLY_TO_EMAIL_ADDRESSES | Indirizzi reply-to separati da virgola |
MCP_PORT | Porta HTTP (predefinita: 3000) |
Suggerimento: Se non fornisci un indirizzo email mittente, il server MCP te ne chiederà uno ogni volta che invii un’email.
Strumenti disponibili
Il server espone 47 strumenti suddivisi in 8 categorie.
Email (10 strumenti)
| Strumento | Descrizione |
|---|---|
send-email | Invia un’email (HTML, testo, template, allegati, programmazione) |
list-emails | Elenca email con paginazione e filtri opzionali |
get-email | Recupera una singola email per ID |
get-email-raw | Ottieni il messaggio MIME completo |
get-email-body | Ottieni il contenuto del corpo analizzato (testo e HTML) |
get-email-attachments | Ottieni allegati con contenuto base64 |
get-email-meta | Ottieni metadati dell’email |
update-email | Aggiorna l’orario di invio di un’email programmata |
cancel-email | Annulla un’email programmata o in sospeso |
retry-email | Riprova un’email fallita, in errore o trattenuta |
Domini (6 strumenti)
| Strumento | Descrizione |
|---|---|
create-domain | Crea un dominio e ottieni record DNS |
get-domain | Ottieni info dominio e stato di verifica |
list-domains | Elenca tutti i domini |
update-domain | Aggiorna impostazioni di tracciamento |
delete-domain | Elimina un dominio (irreversibile) |
verify-domain | Attiva verifica DNS |
Chiavi API (5 strumenti)
| Strumento | Descrizione |
|---|---|
create-api-key | Crea una nuova chiave API (mostrata solo una volta) |
get-api-key | Recupera info chiave API |
list-api-keys | Elenca tutte le chiavi API |
update-api-key | Aggiorna il nome di una chiave API |
delete-api-key | Elimina una chiave API (irreversibile) |
Audience (5 strumenti)
| Strumento | Descrizione |
|---|---|
create-audience | Crea un’audience per campagne |
get-audience | Ottieni dettagli audience |
list-audiences | Elenca tutte le audience |
update-audience | Aggiorna il nome di un’audience |
delete-audience | Elimina un’audience e tutti i suoi iscritti |
Contatti (5 strumenti)
| Strumento | Descrizione |
|---|---|
create-contact | Crea un contatto con iscrizioni audience |
get-contact | Ottieni un contatto per ID o indirizzo email |
list-contacts | Elenca tutti i contatti |
update-contact | Aggiorna i dettagli di un contatto |
delete-contact | Elimina un contatto e i suoi record iscritto |
Template (6 strumenti)
| Strumento | Descrizione |
|---|---|
create-template | Crea un template email |
get-template | Ottieni un template per ID con tutte le versioni |
list-templates | Elenca template pubblicati con filtri |
update-template | Aggiorna un template |
delete-template | Elimina un template permanentemente |
publish-template | Pubblica una versione template |
Soppressioni (5 strumenti)
| Strumento | Descrizione |
|---|---|
create-suppression | Aggiungi un indirizzo email alla lista soppressioni |
get-suppression | Ottieni una soppressione per ID o email |
list-suppressions | Elenca tutte le soppressioni |
update-suppression | Aggiorna una soppressione |
delete-suppression | Rimuovi una soppressione |
Webhook (5 strumenti)
| Strumento | Descrizione |
|---|---|
create-webhook | Crea un webhook con iscrizioni eventi |
get-webhook | Ottieni info webhook |
list-webhooks | Elenca tutti i webhook |
update-webhook | Aggiorna un webhook |
delete-webhook | Elimina un webhook |
Esempi d’uso
Invia un’email semplice
Chiedi al tuo assistente AI:
“Invia un’email di benvenuto a john@example.com con oggetto ‘Benvenuto!’”
L’AI chiama send-email con:
{
"from": "hello@miodominio.com",
"to": "john@example.com",
"subject": "Benvenuto!",
"html": "<h1>Benvenuto!</h1><p>Grazie per esserti registrato.</p>"
}
Invia con template e variabili
“Invia il template welcome-email a sarah@example.com con il suo nome come Sarah.”
{
"from": "hello@miodominio.com",
"to": "sarah@example.com",
"template": "welcome-email",
"variables": { "name": "Sarah" }
}
Programma un’email
“Programma un’email di promemoria a team@company.com per domani alle 9.”
{
"from": "promemoria@miodominio.com",
"to": "team@company.com",
"subject": "Promemoria Standup Giornaliero",
"text": "Non dimenticare lo standup alle 9:30!",
"scheduled_at": "domani alle 9"
}
Invia con allegati
“Invia un’email a accounting@company.com con il PDF della fattura allegato.”
{
"from": "fatturazione@miodominio.com",
"to": "accounting@company.com",
"subject": "Fattura Mensile",
"html": "<p>Trova la fattura in allegato.</p>",
"attachments": [
{
"filename": "fattura-2026-05.pdf",
"url": "https://example.com/fatture/2026-05.pdf"
}
]
}
Gestisci domini
“Aggiungi il mio dominio mail.example.com e mostrami i record DNS.”
L’AI chiama create-domain e visualizza i record DNS necessari da configurare con il tuo provider DNS.
“Verifica il mio dominio.”
L’AI chiama verify-domain per controllare la propagazione DNS e riporta lo stato di verifica.
Gestisci contatti
“Aggiungi Jane Smith (jane@example.com) all’audience aud_abc123.”
{
"email": "jane@example.com",
"first_name": "Jane",
"last_name": "Smith",
"audiences": ["aud_abc123"]
}
Gestisci template
“Crea un template newsletter con alias monthly-newsletter.”
{
"name": "Newsletter Mensile",
"alias": "monthly-newsletter",
"subject": "Aggiornamento {{month}}",
"html": "<h1>Aggiornamento {{month}}</h1>..."
}
Gestisci soppressioni
“Sopprimi bounced@example.com per troppi rimbalzi definitivi.”
{
"email": "bounced@example.com",
"type": "bounce",
"reason": "troppi rimbalzi definitivi"
}
Configura webhook
“Crea un webhook che invia eventi di consegna e rimbalzo al mio endpoint.”
{
"name": "Tracker Consegne",
"url": "https://miaapp.com/webhooks/email",
"events": ["email.delivered", "email.bounced"]
}
Note sulla sicurezza
- Le chiavi API non dovrebbero mai essere committate nel controllo versione.
- In modalità stdio, la chiave API è memorizzata nella configurazione del client MCP.
- In modalità HTTP, i client passano la chiave API per sessione tramite token Bearer.
- Gli URL webhook sono validati contro SSRF prima della creazione.
- Le operazioni di eliminazione richiedono all’AI di confermare prima con te.
Risoluzione problemi
“Chiave API richiesta per modalità stdio”
Imposta la variabile d’ambiente EMAILIT_API_KEY o passa --key.
Dominio non verificato
Configura i record DNS dall’output di create-domain, poi chiama verify-domain.
Email rifiutata / non invia Assicurati che il dominio sia verificato e l’indirizzo mittente usi quel dominio.
Email programmata non può essere annullata Deve essere almeno 3 minuti prima dell’orario programmato.
Riprova fallisce Solo email completamente fallite, in errore, trattenute o soppresse possono essere riprovate.
Sviluppo locale
git clone https://github.com/emailit/emailit-mcp.git
cd emailit-mcp
npm install
# Esegui in modalità stdio
EMAILIT_API_KEY=la_tua_chiave node src/index.js
# Esegui in modalità HTTP
node src/index.js --http --port 3000
Per maggiori dettagli, vedi il repository GitHub.