email-mcp/README.md
2026-04-13 22:33:37 +02:00

168 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 sappuie maintenant sur [`mcp-framework`](../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 lOS
- le manifeste `mcp.toml`
- lauto-update via `email-mcp update`
## Commandes
- `email-mcp config` : configure un profil IMAP
- `email-mcp setup` : alias de compatibilité vers `config`
- `email-mcp mcp` : lance le serveur MCP sur `stdin/stdout`
- `email-mcp doctor` : diagnostique la configuration locale, le wallet, le manifeste et laccès IMAP
- `email-mcp update` : met à jour le binaire courant depuis la dernière release
## Outils MCP
- `list_mailboxes` : lister les boîtes IMAP visibles
- `list_messages` : lister les messages récents dune boîte
- `get_message` : récupérer un message par UID IMAP
## Configuration
La configuration est séparée en deux parties :
- `host` et `username` sont stockés dans `config.json`
- `password` est stocké dans le wallet système
Le profil actif est résolu dans cet ordre :
1. `--profile`
2. `EMAIL_MCP_PROFILE`
3. `current_profile` dans `config.json`
4. `default`
### Configurer un profil
```sh
./email-mcp config
```
Pour un profil nommé :
```sh
./email-mcp config --profile work
```
Le binaire demande ensuite :
1. lhôte IMAP
2. le nom dutilisateur
3. 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
```sh
./email-mcp mcp
```
Pour un profil nommé :
```sh
./email-mcp mcp --profile work
```
Si aucun credential na été configuré pour le profil résolu, le serveur renvoie lerreur :
```text
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 nest trouvé, la commande échoue.
```sh
./email-mcp update
```
Le manifeste de ce repo pointe vers lendpoint Gitea :
```toml
[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
```sh
./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` :
```sh
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) :
```json
{
"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-amd64`
- `mcp.toml`
## Compiler depuis les sources
```sh
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 :
```sh
make build GOOS=windows GOARCH=amd64
```
Pour lancer les tests :
```sh
make test
```