INTÉGRATIONS

Serveur MCP

Le serveur MCP de Zendou permet à votre assistant IA (Claude Desktop, Claude Code, Cursor, tout client MCP) d'envoyer un email, de consulter votre solde, de relire le journal des envois et de vérifier l'état de vos domaines.

Bientôt disponible sur npm

Le paquet @zendou/mcp n’est pas encore publié sur npm : les commandes ci-dessous ne fonctionneront qu’une fois le paquet disponible. Cette page décrit la configuration prévue.

Qu’est-ce que le serveur MCP Zendou ?

MCP (Model Context Protocol) est un protocole qui permet à un assistant IA d’utiliser des outils externes. Le serveur MCP Zendou tourne sur votre machine, avec votre clé API. Il ne fait que traduire les demandes de l’assistant en appels à l’API publique de Zendou : toutes les règles (domaine vérifié, portée de la clé, crédits) restent appliquées par le serveur Zendou.

Il nécessite Node.js 18 ou plus. Le client MCP le lance lui-même avec npx : il n’y a rien à installer à la main.

Créer une clé API

  1. 1.Dans le tableau de bord, ouvrez Clés API puis Nouvelle clé.
  2. 2.Pour que l’assistant puisse lire le journal des envois et les domaines, cochez Autoriser la lecture. Sans cette case, la clé permet seulement d’envoyer des emails et de lire le solde.
  3. 3.Copiez la clé : elle n’est affichée qu’une fois.

La permission de lecture se choisit à la création et ne peut pas être ajoutée ensuite : si vous avez oublié la case, créez une nouvelle clé. Voir Clés API pour le détail.

Configuration des clients

Remplacez zd_live_VOTRE_CLE par votre clé. Une variable facultative, ZENDOU_API_URL, permet de changer l’adresse de l’API ; par défaut, le serveur utilise https://api.zendou.app. Ne la renseignez que pour l’API Zendou (voir la section Sécurité).

Formats vérifiés le 23/10/2026 aux documentations officielles.

Claude Desktop

Dans le menu Claude de la barre de menus du système (et non dans les réglages de la fenêtre), choisissez Settings..., onglet Developer, puis le bouton Edit Config. Le fichier claude_desktop_config.json se trouve à :
  • macOS : ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows : %APPDATA%\Claude\claude_desktop_config.json
Ajoutez :
claude_desktop_config.json
{
  "mcpServers": {
    "zendou": {
      "command": "npx",
      "args": ["-y", "@zendou/mcp"],
      "env": { "ZENDOU_API_KEY": "zd_live_VOTRE_CLE" }
    }
  }
}

Quittez complètement Claude Desktop, puis relancez-le. En cas de souci, consultez les journaux mcp*.log dans ~/Library/Logs/Claude (macOS) ou %APPDATA%\Claude\logs (Windows).

Claude Code

Avec la ligne de commande :
Terminal
claude mcp add --env ZENDOU_API_KEY=zd_live_VOTRE_CLE --transport stdio zendou -- npx -y @zendou/mcp

Les options de Claude Code viennent avant le nom du serveur, et -- sépare la commande du serveur. Si une autre option suit --env, elle la sépare du nom.

Pour partager la configuration d’un projet, un fichier .mcp.json à la racine, au même format mcpServers (une entrée sans type est lue comme stdio). Il accepte ${VAR} et ${VAR:-defaut} dans command, args et env : la clé y est lue dans votre environnement, ne la committez pas.

.mcp.json
{
  "mcpServers": {
    "zendou": {
      "command": "npx",
      "args": ["-y", "@zendou/mcp"],
      "env": { "ZENDOU_API_KEY": "${ZENDOU_API_KEY}" }
    }
  }
}

Cursor

Fichier .cursor/mcp.json (dans le projet) ou ~/.cursor/mcp.json (global), avec l’interpolation ${env:NOM} :
.cursor/mcp.json
{
  "mcpServers": {
    "zendou": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@zendou/mcp"],
      "env": { "ZENDOU_API_KEY": "${env:ZENDOU_API_KEY}" }
    }
  }
}

Les six outils

OutilCe qu’il permetClé requise
send_emailEnvoie un email (from, to, subject, html ou text, replyTo, headers).Toute clé active
get_balanceLit le solde de crédits du compte.Toute clé active
list_emailsListe le journal des envois, avec filtres (status, channel, from, to, q) et pagination.Clé avec lecture
get_emailDonne le détail et l'état de livraison d'un email.Clé avec lecture
list_domainsListe les domaines du compte et leur statut.Clé avec lecture
get_domainDonne le statut d'un domaine et les enregistrements DNS à créer.Clé avec lecture

Règles de send_email : un seul destinataire ; Nom <adresse> accepté (nom de 128 caractères au plus) ; domaine expéditeur vérifié ; html ou text requis ; headers limités à 20, parmi List-Unsubscribe, List-Unsubscribe-Post et X-* (hors X-SES-*), en ASCII imprimable.

Sécurité

  • ✓La clé reste sur votre machine. Elle est lue dans l’environnement du processus et envoyée uniquement à l’API Zendou.
  • ✓ZENDOU_API_URL reçoit votre clé. Ne la renseignez que pour l’API Zendou, en https:// seulement : le paquet refuse http://, sauf pour localhost et 127.0.0.1. Une adresse tierce lirait votre clé.
  • ✓La lecture est facultative. Elle se décide clé par clé, décochée par défaut. Une clé avec lecture qui fuit expose les destinataires et les sujets des emails de sa portée : ne l’activez que si vous en avez besoin, et préférez une clé dédiée à l’assistant.
  • ✓Portée par domaine. Une clé limitée à certains domaines ne peut envoyer, ni lire, que pour ces domaines ; le reste répond comme s’il n’existait pas.
  • ✓Aucune suppression ni création. Le serveur n’écrit rien d’autre que l’envoi d’un email : il ne peut ni créer ni supprimer un domaine, une clé ou un identifiant SMTP, ni recharger des crédits.

Ne committez jamais une clé

En cas de doute, révoquez-la depuis le tableau de bord.

Erreurs fréquentes

StatutCauseQue faire
401Clé absente, inconnue ou révoquée.Vérifiez ZENDOU_API_KEY dans la configuration du client MCP, puis redémarrez le client. Si la clé a été révoquée, créez-en une nouvelle.
403 (lecture)Outil de lecture appelé avec une clé créée sans la lecture. Message : « Cette clé API n'a pas l'autorisation de lecture : créez une clé avec la lecture autorisée. »La lecture ne peut pas être ajoutée après coup : créez une nouvelle clé en cochant « Autoriser la lecture », puis remplacez la clé de la configuration.
403 (hors portée)Envoi depuis un domaine que la clé n'est pas autorisée à utiliser (code CREDENTIAL_DOMAIN_OUT_OF_SCOPE).Utilisez une adresse d'un domaine de la portée de la clé, ou créez une clé couvrant ce domaine. En lecture, un domaine ou un email hors portée répond comme s'il n'existait pas (404).
402Solde de crédits insuffisant pour envoyer un email.Rechargez vos crédits depuis le tableau de bord. La lecture du solde reste possible.

Le 403 d’une clé sans lecture renvoie :

{
  "message": "Cette clé API n'a pas l'autorisation de lecture : créez une clé avec la lecture autorisée.",
  "error": "Forbidden",
  "statusCode": 403,
  "errors": [
    "Cette clé API n'a pas l'autorisation de lecture : créez une clé avec la lecture autorisée."
  ]
}

Le 403 d’un envoi hors de la portée de la clé renvoie :

{
  "message": "Cette clé API n'est autorisée que pour le domaine boutique-awa.gn.",
  "error": "Forbidden",
  "statusCode": 403,
  "code": "CREDENTIAL_DOMAIN_OUT_OF_SCOPE",
  "errors": [
    "Cette clé API n'est autorisée que pour le domaine boutique-awa.gn."
  ]
}

Voir aussi Clés API et Erreurs.