mail-mcp
Allows interaction with an iCloud Mail account, providing tools to list, search, read, send, reply to, draft, move, delete, and flag emails.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mail-mcpSummarize my unread emails from this week and archive the newsletters."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
icloud-mail-mcp
Serveur MCP qui expose un compte iCloud Mail (IMAP/SMTP) sous forme d'outils utilisables par Claude : lire, chercher, trier, répondre et archiver des mails depuis une conversation.
Il tourne chez vous, en Docker, derrière un Cloudflare Tunnel et un bearer token. Aucune donnée ne transite par un service tiers : Claude parle directement à votre instance, qui parle directement à iCloud.
Claude ──HTTPS+Bearer──▶ Cloudflare Tunnel ──▶ icloud-mail-mcp ──IMAP/SMTP+TLS──▶ iCloudLicence — à lire avant de cloner. Ce projet n'est pas open source. Vous pouvez le télécharger, l'installer et l'utiliser librement, y compris dans votre entreprise. L'usage commercial et les versions modifiées ne sont pas autorisés sans accord écrit. Voir LICENSE.
Sommaire
Related MCP server: IMAP MCP Server
Ce que ça fait
Dix-sept outils MCP, décrits en détail dans docs/tools.md :
Outil | Ce qu'il fait |
| Liste les dossiers IMAP, leur rôle spécial ( |
| Liste un dossier, du plus récent au plus ancien — filtres : non lus, plage de dates, expéditeur ; pagination par curseur |
| Recherche côté serveur IMAP : sujet, corps, expéditeur, destinataire, dates, flags, sur un ou plusieurs dossiers |
| Contenu complet d'un message : en-têtes, corps tronqué à la demande, métadonnées des pièces jointes |
| Contenu binaire d'une pièce jointe, ciblée par son index |
| Reconstitue un fil de discussion à partir de n'importe lequel de ses messages |
| Envoie un nouveau message, avec pièces jointes, et l'archive dans « Sent » |
| Répond avec un threading correct ( |
| Transfère un message, l'original joint verbatim en |
| Enregistre un brouillon dans Drafts sans rien envoyer — peut hériter du threading d'un message |
| Remplace un brouillon existant |
| Envoie un brouillon existant, puis le retire de Drafts |
| Déplace un ou plusieurs messages d'un dossier à un autre |
| Envoie à la corbeille ; supprime définitivement si le message y est déjà |
| Lu / non lu, favori, répondu, indésirable, mots-clés IMAP arbitraires |
| Crée, renomme ou supprime un dossier — refusé sur les dossiers système |
| Compte branché, garde-fous actifs, quota restant — jamais de secret |
Les opérations sur les messages acceptent un uid unique ou jusqu'à 200 uids en une seule
commande IMAP. Un dix-huitième outil, wait_for_new_message, existe derrière
ENABLE_IDLE_WATCH (désactivé par défaut : il n'a pas de reconnexion).
Concrètement, une fois branché, on peut demander à Claude :
« Résume-moi les mails non lus de la semaine, archive les newsletters et prépare un brouillon de réponse à celui de la banque. »
Ce qui rend le serveur utilisable en pratique
Pool de connexions IMAP — iCloud limite agressivement les connexions simultanées. Les connexions sont ouvertes une fois, réutilisées entre les appels, purgées quand elles meurent, et la demande en trop attend son tour au lieu de se faire jeter. Voir
docs/architecture.md.Erreurs lisibles — un mot de passe principal Apple utilisé à la place d'un mot de passe d'application donne un message qui le dit, pas une stack trace IMAP.
Garde-fous d'envoi gradués — de
ENABLE_SENDING=false(rien ne part) àDRAFTS_ONLY(tout est déposé dans Drafts, rien n'est perdu), en passant par une allowlist de destinataires et un quota journalier.UNRESTRICTEDles lève tous d'un coup, sans jamais toucher à l'authentification. Voirdocs/security.md.Mise en route guidée —
npm run authvérifie IMAP et SMTP pour de vrai avant d'écrire le.env, plutôt que de découvrir la faute de frappe au premier appel d'outil.Deux transports — HTTP streamable, ou stdio pour un branchement local (
MCP_TRANSPORT).Logs structurés (pino) sans mot de passe ni contenu de mail.
340 tests qui ne touchent ni le réseau ni une vraie boîte mail.
Prérequis
Node.js 24+ (ou Docker, qui s'en occupe)
Un compte iCloud avec l'authentification à deux facteurs activée
Un mot de passe d'application Apple — le mot de passe principal du compte ne fonctionne pas en IMAP/SMTP :
appleid.apple.com → se connecter
Connexion et sécurité → Mots de passe pour applications → Générer un mot de passe
Nommer (« icloud-mail-mcp ») et copier le mot de passe au format
xxxx-xxxx-xxxx-xxxx
Démarrage rapide
git clone https://github.com/leolesimple/icloud-mail-mcp.git
cd icloud-mail-mcp
npm install
npm run authnpm run auth demande l'adresse iCloud et le mot de passe d'application (saisie
masquée), génère le MCP_BEARER_TOKEN, vérifie pour de vrai les connexions IMAP
et SMTP, puis écrit .env en chmod 600 — rien n'est écrit si une vérification
échoue, et un .env existant est sauvegardé en .env.bak avant tout écrasement.
Le fichier généré démarre avec ENABLE_SENDING=false.
npm run auth:check # rejoue la vérification IMAP + SMTP sur le .env existant, sans rien écrirePuis démarrer :
npm run dev # http://localhost:3000/mcpLe endpoint MCP est POST|GET|DELETE /mcp, protégé par
Authorization: Bearer <MCP_BEARER_TOKEN>. GET /health reste ouvert (healthcheck Docker).
Pour l'inspecter à la main :
npx @modelcontextprotocol/inspector
# Transport : Streamable HTTP
# URL : http://localhost:3000/mcp
# Header : Authorization: Bearer <votre token>Pour le déploiement Docker + Cloudflare Tunnel, voir docs/deployment.md.
Brancher Claude dessus
Claude Code :
claude mcp add --transport http icloud-mail-mcp https://icloud-mail-mcp.exemple.com/mcp \
--header "Authorization: Bearer <votre token>"Claude Desktop / claude.ai : Paramètres → Connecteurs → Ajouter un connecteur personnalisé,
en donnant l'URL https://icloud-mail-mcp.exemple.com/mcp.
Détails et dépannage dans docs/deployment.md.
Sécurité
Ce serveur peut lire, déplacer, supprimer et envoyer des mails. Les points à ne pas rater :
N'exposez jamais le endpoint sans le bearer token. Le token est comparé en temps constant (
timingSafeEqual), mais un token faible reste un token faible :openssl rand -hex 32..envne doit jamais être committé. Il est dans.gitignore; vérifiez-le avant toutgit add -Asur un fork.Le mot de passe d'application Apple donne accès à toute la boîte mail. Il se révoque en un clic sur appleid.apple.com si le serveur est compromis.
Commencez avec
ENABLE_SENDING=false. Vous rallumerez l'envoi quand vous aurez vu comment Claude se comporte sur votre boîte.Le healthcheck
/healthn'est pas authentifié — il ne révèle que le statut et la version du serveur ({"status":"ok","version":"…"}), aucune configuration ni secret.
Détail complet dans docs/security.md.
Limitations connues
Pièces jointes plafonnées à
ATTACHMENT_MAX_BYTES(5 Mo par défaut).get_attachmentrécupère le binaire d'une pièce jointe etsend_message/reply_message/forward_message/save_draftpermettent d'en joindre, mais au-delà de cette limite (cumul compris) l'outil refuse explicitement plutôt que de tronquer.iCloud uniquement en pratique. Le code est du IMAP/SMTP standard et les hôtes sont configurables, mais rien d'autre n'est testé.
Documentation
Document | Contenu |
Référence des dix-sept outils : paramètres, retours, exemples | |
Toutes les variables d'environnement | |
Docker, Cloudflare Tunnel, branchement des clients MCP | |
Découpage en couches, pool IMAP, gestion des erreurs et des sessions | |
Modèle de menace et bonnes pratiques | |
Structure du code, tests, conventions | |
Historique des versions et procédure de release |
Licence
Copyright © 2026 Léo Lesimple. Tous droits réservés.
Usage personnel et interne autorisé et gratuit. Usage commercial et œuvres dérivées interdits sans accord écrit préalable. Voir LICENSE pour le texte qui fait foi.
Ce n'est pas une licence open source au sens de l'OSI : GitHub permet techniquement de forker un dépôt public, mais publier ou utiliser une version modifiée de ce code n'est pas autorisé par cette licence. Pour un usage sortant de ce cadre, ouvrez une issue pour en discuter.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseBqualityDmaintenanceAn MCP server that connects Claude to iCloud Mail for reading, searching, sending, and organizing emails through natural language. It supports advanced management tasks like bulk operations, mailbox organization, and automated rules for inbox maintenance.6940MIT
- AlicenseAqualityAmaintenanceEnables Claude to interact with email accounts via IMAP and SMTP, providing tools for searching, reading, sending, and managing emails across multiple providers.4041776MIT
- FlicenseBqualityBmaintenanceMCP server that connects Claude to iCloud Mail, enabling reading, searching, sending, and organizing emails via IMAP/SMTP.14
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol (MCP) server that enables Claude Desktop to interact with iCloud email accounts. This server provides full email functionality including reading, sending, and managing emails through your iCloud account.1
Related MCP Connectors
Read, search, send, organize, draft and schedule email across your inboxes from any MCP client.
Search, read, and write your Apple Notes from ChatGPT/Claude via a local Mac agent + MCP relay.
Manage Gmail end-to-end: search, read, send, draft, label, and organize threads. Automate workflow…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/leolesimple/icloud-mail-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server