| .gitea/workflows | ||
| cmd/email-mcp | ||
| docs/superpowers | ||
| internal | ||
| .gitignore | ||
| go.mod | ||
| go.sum | ||
| Makefile | ||
| mcp.toml | ||
| README.md | ||
email-mcp
Serveur MCP local pour lire une boîte mail via IMAP. Le serveur parle le protocole MCP standard sur stdio, avec des messages JSON-RPC 2.0 (initialize, notifications/initialized, tools/list, tools/call).
Le binaire s’appuie maintenant sur mcp-framework pour :
- la gestion de profils CLI
- le stockage JSON de configuration dans
os.UserConfigDir() - le stockage du mot de passe dans le wallet natif de l’OS
- le manifeste
mcp.toml - l’auto-update via
email-mcp update
Commandes
email-mcp config: configure un profil IMAPemail-mcp setup: alias de compatibilité versconfigemail-mcp mcp: lance le serveur MCP surstdin/stdoutemail-mcp doctor: diagnostique la configuration locale, le wallet, le manifeste et l’accès IMAPemail-mcp update: met à jour le binaire courant depuis la dernière release
Outils MCP
list_mailboxes: lister les boîtes IMAP visibleslist_messages: lister les messages récents d’une boîteget_message: récupérer un message par UID IMAP
Configuration
La configuration est séparée en deux parties :
hostetusernamesont stockés dansconfig.jsonpasswordest stocké dans le wallet système
Le profil actif est résolu dans cet ordre :
--profileEMAIL_MCP_PROFILEcurrent_profiledansconfig.jsondefault
Configurer un profil
./email-mcp config
Pour un profil nommé :
./email-mcp config --profile work
Le binaire demande ensuite :
- l’hôte IMAP
- le nom d’utilisateur
- le mot de passe
Si un mot de passe existe déjà dans le wallet, laisser le champ vide le conserve.
Lancer le serveur MCP
./email-mcp mcp
Pour un profil nommé :
./email-mcp mcp --profile work
Si aucun credential n’a été configuré pour le profil résolu, le serveur renvoie l’erreur :
credentials not configured; run `email-mcp config`
Auto-update
email-mcp update lit mcp.toml depuis le répertoire du binaire courant, puis remonte les répertoires parents. Si aucun manifeste n’est trouvé, la commande échoue.
./email-mcp update
Le manifeste de ce repo pointe vers l’endpoint Gitea :
[update]
source_name = "email-mcp releases"
base_url = "https://gitea.lclr.dev"
latest_release_url = "https://gitea.lclr.dev/api/v1/repos/AI/email-mcp/releases/latest"
Diagnostic
email-mcp doctor vérifie :
- la lisibilité du fichier de configuration
- le profil IMAP résolu
- la disponibilité du wallet système
- la présence du mot de passe stocké
- la validité du manifeste
mcp.toml - la connectivité IMAP avec les credentials résolus
./email-mcp doctor
./email-mcp doctor --profile work
La commande retourne un code de sortie non nul si au moins un check échoue.
Installation
Claude Code CLI
Ajoute le serveur MCP en pointant vers le binaire et la sous-commande mcp :
claude mcp add email-mcp -- /absolute/path/to/bin/email-mcp mcp
La configuration se fait une fois séparément via email-mcp config.
Configuration JSON manuelle
Ajoute le bloc suivant à ta configuration MCP (~/.claude.json côté utilisateur, ou .mcp.json dans un projet) :
{
"mcpServers": {
"email-mcp": {
"command": "/absolute/path/to/bin/email-mcp",
"args": ["mcp"]
}
}
}
Releases
Une release est générée automatiquement quand tu pousses un tag v* sur le repo Gitea.
Les assets publiés sont :
build/email-mcp-linux-amd64mcp.toml
Compiler depuis les sources
make build
Le binaire est généré dans build/email-mcp-<goos>-<goarch> avec une version injectée depuis git describe.
Pour cross-compiler :
make build GOOS=windows GOARCH=amd64
Pour lancer les tests :
make test