Qu’est-ce que le serveur MCP Emailit ?
Le serveur MCP Emailit est un serveur Model Context Protocol open source qui connecte directement les assistants IA à Emailit.
Il vous permet d’envoyer des emails, de gérer vos contacts, domaines, modèles et bien plus encore en langage naturel — directement depuis Claude, Cursor, ou tout autre client compatible MCP.
- Package :
@emailit/emailit-mcp - Runtime : Node.js 18+
- Licence : MIT
- Dépôt : github.com/emailit/emailit-mcp
Prérequis
- Un compte Emailit
- Une clé API
- Un domaine d’envoi vérifié
- Node.js 18 ou version ultérieure
Modes de transport
Le serveur prend en charge deux modes de transport :
Stdio (par défaut)
Le client MCP démarre le serveur en tant que sous-processus et communique via l’entrée/sortie standard. La clé API est transmise via une variable d’environnement ou un argument CLI. C’est l’option la plus simple qui fonctionne avec tous les clients principaux.
HTTP (Streamable HTTP)
Pour les intégrations distantes ou web, le serveur s’exécute en tant que serveur HTTP utilisant le transport Streamable HTTP. Les clients s’authentifient par session en transmettant leur clé API comme token Bearer dans l’en-tête Authorization. Le point de terminaison est exposé à /mcp.
Installation et configuration
Claude Code (Stdio)
claude mcp add emailit \
-e EMAILIT_API_KEY=votre_cle_api \
-- npx -y @emailit/emailit-mcp
Claude Code (HTTP)
Démarrez d’abord le serveur :
npx -y @emailit/emailit-mcp --http --port 3000
Puis enregistrez-le :
claude mcp add emailit \
--transport http http://127.0.0.1:3000/mcp \
--header "Authorization: Bearer votre_cle_api"
Cursor (Stdio)
Ouvrez la palette de commandes et choisissez Cursor Settings → MCP → Add new global MCP server, puis collez :
{
"mcpServers": {
"emailit": {
"command": "npx",
"args": ["-y", "@emailit/emailit-mcp"],
"env": {
"EMAILIT_API_KEY": "votre_cle_api"
}
}
}
}
Cursor (HTTP)
Démarrez le serveur, puis ajoutez :
{
"mcpServers": {
"emailit": {
"url": "http://127.0.0.1:3000/mcp",
"headers": {
"Authorization": "Bearer votre_cle_api"
}
}
}
}
Claude Desktop (Stdio)
Ouvrez Paramètres Claude Desktop → onglet Développeur → Modifier la config, puis collez :
{
"mcpServers": {
"emailit": {
"command": "npx",
"args": ["-y", "@emailit/emailit-mcp"],
"env": {
"EMAILIT_API_KEY": "votre_cle_api"
}
}
}
}
Options CLI
| Option | Description |
|---|---|
--key <clé> | Clé API (stdio uniquement ; HTTP utilise un token Bearer) |
--sender <email> | Expéditeur par défaut depuis un domaine vérifié |
--reply-to <email> | Répondre à par défaut (peut être répété) |
--http | Utiliser le transport HTTP au lieu de stdio |
--port <port> | Port HTTP (par défaut : 3000) |
-h, --help | Afficher le message d’aide |
Variables d’environnement
| Variable | Description |
|---|---|
EMAILIT_API_KEY | Clé API (obligatoire pour stdio) |
SENDER_EMAIL_ADDRESS | Expéditeur par défaut depuis un domaine vérifié |
REPLY_TO_EMAIL_ADDRESSES | Adresses de réponse séparées par des virgules |
MCP_PORT | Port HTTP (par défaut : 3000) |
Astuce : Si vous ne fournissez pas d’adresse email d’expéditeur, le serveur MCP vous en demandera une à chaque envoi d’email.
Outils disponibles
Le serveur expose 47 outils répartis en 8 catégories.
Emails (10 outils)
| Outil | Description |
|---|---|
send-email | Envoyer un email (HTML, texte, modèles, pièces jointes, programmation) |
list-emails | Lister les emails avec pagination et filtrage optionnel |
get-email | Récupérer un email unique par ID |
get-email-raw | Obtenir le message MIME brut complet |
get-email-body | Obtenir le contenu du corps analysé (texte et HTML) |
get-email-attachments | Obtenir les pièces jointes avec contenu base64 |
get-email-meta | Obtenir les métadonnées de l’email |
update-email | Mettre à jour l’heure d’envoi d’un email programmé |
cancel-email | Annuler un email programmé ou en attente |
retry-email | Réessayer un email échoué, en erreur ou bloqué |
Domaines (6 outils)
| Outil | Description |
|---|---|
create-domain | Créer un domaine et obtenir les enregistrements DNS |
get-domain | Obtenir les infos du domaine et le statut de vérification |
list-domains | Lister tous les domaines |
update-domain | Mettre à jour les paramètres de suivi |
delete-domain | Supprimer un domaine (irréversible) |
verify-domain | Déclencher la vérification DNS |
Clés API (5 outils)
| Outil | Description |
|---|---|
create-api-key | Créer une nouvelle clé API (affichée une seule fois) |
get-api-key | Récupérer les infos de la clé API |
list-api-keys | Lister toutes les clés API |
update-api-key | Mettre à jour le nom d’une clé API |
delete-api-key | Supprimer une clé API (irréversible) |
Audiences (5 outils)
| Outil | Description |
|---|---|
create-audience | Créer une audience pour les campagnes |
get-audience | Obtenir les détails d’une audience |
list-audiences | Lister toutes les audiences |
update-audience | Mettre à jour le nom d’une audience |
delete-audience | Supprimer une audience et tous ses abonnés |
Contacts (5 outils)
| Outil | Description |
|---|---|
create-contact | Créer un contact avec abonnements aux audiences |
get-contact | Obtenir un contact par ID ou adresse email |
list-contacts | Lister tous les contacts |
update-contact | Mettre à jour les détails d’un contact |
delete-contact | Supprimer un contact et ses enregistrements d’abonné |
Modèles (6 outils)
| Outil | Description |
|---|---|
create-template | Créer un modèle d’email |
get-template | Obtenir un modèle par ID avec toutes les versions |
list-templates | Lister les modèles publiés avec filtrage |
update-template | Mettre à jour un modèle |
delete-template | Supprimer définitivement un modèle |
publish-template | Publier une version de modèle |
Suppressions (5 outils)
| Outil | Description |
|---|---|
create-suppression | Ajouter une adresse email à la liste de suppression |
get-suppression | Obtenir une suppression par ID ou email |
list-suppressions | Lister toutes les suppressions |
update-suppression | Mettre à jour une suppression |
delete-suppression | Supprimer une suppression |
Webhooks (5 outils)
| Outil | Description |
|---|---|
create-webhook | Créer un webhook avec abonnements aux événements |
get-webhook | Obtenir les infos du webhook |
list-webhooks | Lister tous les webhooks |
update-webhook | Mettre à jour un webhook |
delete-webhook | Supprimer un webhook |
Exemples d’utilisation
Envoyer un email simple
Demandez à votre assistant IA :
“Envoie un email de bienvenue à john@example.com avec le sujet ‘Bienvenue !’”
L’IA appelle send-email avec :
{
"from": "hello@mondomaine.com",
"to": "john@example.com",
"subject": "Bienvenue !",
"html": "<h1>Bienvenue !</h1><p>Merci de vous être inscrit.</p>"
}
Envoyer avec un modèle et des variables
“Envoie le modèle welcome-email à sarah@example.com avec son prénom Sarah.”
{
"from": "hello@mondomaine.com",
"to": "sarah@example.com",
"template": "welcome-email",
"variables": { "name": "Sarah" }
}
Programmer un email
“Programme un email de rappel à equipe@entreprise.com pour demain à 9h.”
{
"from": "rappels@mondomaine.com",
"to": "equipe@entreprise.com",
"subject": "Rappel Daily Standup",
"text": "N'oubliez pas le standup à 9h30 !",
"scheduled_at": "demain à 9h"
}
Envoyer avec des pièces jointes
“Envoie un email à comptabilite@entreprise.com avec le PDF de facture en pièce jointe.”
{
"from": "facturation@mondomaine.com",
"to": "comptabilite@entreprise.com",
"subject": "Facture mensuelle",
"html": "<p>Veuillez trouver la facture en pièce jointe.</p>",
"attachments": [
{
"filename": "facture-2026-05.pdf",
"url": "https://example.com/factures/2026-05.pdf"
}
]
}
Gérer les domaines
“Ajoute mon domaine mail.example.com et montre-moi les enregistrements DNS.”
L’IA appelle create-domain et affiche les enregistrements DNS requis que vous devez configurer chez votre fournisseur DNS.
“Vérifie mon domaine.”
L’IA appelle verify-domain pour vérifier la propagation DNS et vous rapporte le statut de vérification.
Gérer les contacts
“Ajoute Jane Smith (jane@example.com) à l’audience aud_abc123.”
{
"email": "jane@example.com",
"first_name": "Jane",
"last_name": "Smith",
"audiences": ["aud_abc123"]
}
Gérer les modèles
“Crée un modèle de newsletter avec l’alias newsletter-mensuelle.”
{
"name": "Newsletter mensuelle",
"alias": "newsletter-mensuelle",
"subject": "Actualités {{mois}}",
"html": "<h1>Actualités {{mois}}</h1>..."
}
Gérer les suppressions
“Supprime bounced@example.com pour trop de rebonds définitifs.”
{
"email": "bounced@example.com",
"type": "bounce",
"reason": "trop de rebonds définitifs"
}
Configurer des webhooks
“Crée un webhook qui envoie les événements de livraison et de rebond à mon endpoint.”
{
"name": "Suivi de livraison",
"url": "https://monapp.com/webhooks/email",
"events": ["email.delivered", "email.bounced"]
}
Notes de sécurité
- Les clés API ne doivent jamais être commitées dans le contrôle de version.
- En mode stdio, la clé API est stockée dans la configuration du client MCP.
- En mode HTTP, les clients transmettent la clé API par session via un token Bearer.
- Les URLs de webhook sont validées contre les attaques SSRF avant création.
- Les opérations de suppression demandent à l’IA de confirmer avec vous d’abord.
Dépannage
“Clé API requise pour le mode stdio”
Définissez la variable d’environnement EMAILIT_API_KEY ou passez --key.
Domaine non vérifié
Configurez les enregistrements DNS depuis la sortie de create-domain, puis appelez verify-domain.
Email rejeté / ne s’envoie pas Assurez-vous que le domaine est vérifié et que l’adresse expéditeur utilise ce domaine.
L’email programmé ne peut pas être annulé Doit être au moins 3 minutes avant l’heure programmée.
La nouvelle tentative échoue Seuls les emails définitivement échoués, en erreur, bloqués ou supprimés peuvent être retentés.
Développement local
git clone https://github.com/emailit/emailit-mcp.git
cd emailit-mcp
npm install
# Exécuter en mode stdio
EMAILIT_API_KEY=votre_cle node src/index.js
# Exécuter en mode HTTP
node src/index.js --http --port 3000
Pour plus de détails, consultez le dépôt GitHub.