mail-macos-mcp
README.md
# Mail macOS — MCP pour Claude Desktop
Un serveur **MCP** qui permet à Claude de piloter l'app **Mail de macOS** : lire,
rechercher, préparer des brouillons, envoyer et gérer ses mails — directement
depuis Claude Desktop, y compris dans des **routines** et des **agents**.
> Fonctionne uniquement sur **macOS** (utilise l'app Mail intégrée).
---
## 📥 Installation (pour l'utilisateur)
Aucune compétence technique requise, pas de terminal, pas de Node à installer.
1. **Télécharger** le fichier `mail-macos.mcpb` :
👉 **[Télécharger la dernière version](https://github.com/Maxtechexplore/mail-macos-mcp/releases/latest/download/mail-macos.mcpb)**
2. **Installer dans Claude Desktop** :
- D'abord, **mettre Claude Desktop à jour** (dernière version requise).
- Aller dans **Réglages → Extensions**
- Cliquer **« Advanced settings » / Paramètres avancés**
- Dans la section **« Extension Developer »**, cliquer **« Install Extension… »**
- Sélectionner le fichier `mail-macos.mcpb` téléchargé
- Un avertissement « développeur non vérifié » peut s'afficher : c'est normal
(l'extension n'est pas signée par un éditeur commercial). Cliquer **Installer**
quand même.
> Le glisser-déposer fonctionne surtout pour les extensions du répertoire officiel
> d'Anthropic ; pour ce bundle privé, utiliser le bouton **« Install Extension… »**
> via les paramètres avancés.
3. **Autoriser l'accès à Mail** :
Au **premier usage**, macOS demande : *« Claude souhaite contrôler Mail »*.
Cliquer **Autoriser**. (Sinon : Réglages Système → Confidentialité et sécurité
→ Automatisation → activer Mail pour Claude.)
C'est prêt. 🎉
---
## 💬 Exemples d'utilisation
Une fois installé, on parle simplement à Claude :
- « Liste mes 5 derniers mails non lus »
- « Cherche les mails de Clément des 7 derniers jours »
- « Ouvre le mail [id] et résume-le »
- « Prépare un brouillon de réponse à ce mail » *(le brouillon reste dans Mail,
rien n'est envoyé sans validation)*
- « Marque ce mail comme lu »
- « Mets ce mail à la corbeille »
---
## 🧰 Outils fournis
| Outil | Description | Sécurité |
|---|---|---|
| `tester_acces` | Vérifie que Claude peut contrôler Mail (diagnostic, ne touche pas aux mails) | lecture seule |
| `lister_mails` | Liste les derniers mails (filtre non lus / expéditeur) | lecture seule |
| `rechercher_mails` | Recherche dans les mails récents (sujet, expéditeur, corps en option) | lecture seule |
| `lire_mail` | Renvoie le contenu complet d'un mail | lecture seule |
| `lister_comptes` | Liste les comptes mail connectés (nom et adresse(s)) | lecture seule |
| `creer_brouillon` | Crée un brouillon **sans l'envoyer** (CC, CCI, expéditeur) | non destructif |
| `envoyer_mail` | Envoie un mail (CC, CCI, expéditeur ; Claude Desktop demande confirmation) | sortant |
| `repondre_mail` | Répond à un mail en reprenant le fil ; brouillon par défaut | non destructif |
| `transferer_mail` | Transfère un mail vers un ou plusieurs destinataires ; brouillon par défaut | non destructif |
| `marquer_mail` | Marque un mail lu / non lu | réversible |
| `deplacer_mail` | Déplace un mail vers un dossier | réversible |
| `corbeille_mail` | Met un mail à la **Corbeille** (récupérable) | récupérable |
**Aucune suppression définitive** : le pire cas possible est un mail envoyé ou un
mail en corbeille (récupérable depuis Mail).
### Multi-comptes
`lister_comptes` renvoie tous les comptes configurés dans l'app Mail, avec leur nom
et leurs adresses email. Tous les outils de rédaction (`creer_brouillon`,
`envoyer_mail`, `repondre_mail`, `transferer_mail`) acceptent un paramètre
optionnel `expediteur` : si tu passes une adresse qui correspond à un compte
connecté, Mail utilisera ce compte pour envoyer. Si le paramètre est absent, Mail
utilise le compte par défaut (ou le compte du mail d'origine pour les réponses).
Utilise d'abord `lister_comptes` pour connaître les adresses disponibles, puis
précise `expediteur` si tu veux choisir le compte d'envoi.
---
## 🆘 En cas de blocage (Mail qui rame ou se fige)
Sur un **gros compte pro synchronisé serveur** (IMAP/Exchange), Mail peut être lent
à répondre aux requêtes. Le MCP est conçu pour rester sûr dans ce cas :
- **Demande « Teste l'accès à Mail »** (outil `tester_acces`) : c'est l'appel le plus
léger. S'il répond, l'autorisation et l'accès sont bons ; le souci vient du volume.
- Le MCP a un **délai max** (20 s par défaut) : si Mail ne répond pas à temps, tu reçois
un message clair au lieu d'un blocage. Réessaie quelques secondes plus tard (Mail
finit souvent de se synchroniser).
- Les lectures sont **bornées aux mails récents** : `lister_mails` et `rechercher_mails`
ne parcourent qu'une fenêtre récente de la boîte de réception, jamais toute la boîte.
- Si Mail était figé : le quitter et le rouvrir, le laisser finir sa synchro, puis réessayer.
- Pour allonger le délai (réseau lent) : variable d'environnement `MAIL_MCP_TIMEOUT_MS`
(en millisecondes).
## 🔧 Développement (pour reconstruire le bundle)
Prérequis : Node.js ≥ 18.
```bash
npm install # installe les dépendances
npm run build # compile TypeScript -> dist/
npm start # lance le serveur (transport stdio) pour tester
```
Reconstruire le bundle `.mcpb` :
```bash
npm run build
npm prune --omit=dev # ne garder que les deps runtime
npx @anthropic-ai/mcpb pack . mail-macos.mcpb # produit le .mcpb
npm install # restaurer les deps de dev
```
### Architecture
```
src/
index.ts # serveur MCP : déclare les 11 outils (validation via zod)
mail.ts # logique métier : construit les scripts AppleScript
applescript.ts # exécution osascript + parsing + messages d'erreur FR
```
Le pilotage de Mail passe par **AppleScript** (via `osascript`), l'API
d'automatisation standard de macOS. Aucune adresse ni compte n'est codé en dur :
le MCP agit sur la boîte de réception unifiée de l'app Mail de la machine.
---
## Licence
MIT
TDQS
A4.1/5.0
Scored across 12 tools
Disambiguation5/5
Each tool has a clearly distinct purpose: create draft, send, reply, forward, move, trash, read, list, search, mark, list accounts, test access. No two tools overlap in functionality.
Naming Consistency4/5
Most tools follow a consistent verb_noun pattern in French (e.g., 'creer_brouillon', 'envoyer_mail'). The exception is 'corbeille_mail', which uses a noun instead of a verb, but it is still clear.
Tool Count5/5
12 tools is well-scoped for a mail client MCP, covering essential operations without being overwhelming. Each tool serves a specific need.
Completeness4/5
The tool set covers core email workflows (read, send, reply, forward, trash, move, search, mark). Minor gaps exist, such as the absence of folder management (create/rename/delete) and permanent deletion.
Maintenance
ActivityStale
ResponsivenessNo issues