mail-macos-mcp
This server allows Claude Desktop to control the macOS Mail application via AppleScript automation, enabling you to read, search, compose, send, and organize emails.
List accounts — View all configured mail accounts (names and addresses) to choose which to send from.
List emails — Browse recent emails with optional filters for unread status or sender; returns ID, sender, subject, date, and read status.
Search emails — Search up to 400 recent emails by keyword (subject, sender, or optionally body), with filters for sender and date range.
Read email — Retrieve the full content of a specific email by ID.
Create draft — Compose a new draft (with CC, BCC, custom sender) saved to Drafts without sending.
Send email — Immediately send an email to one or more recipients (with CC, BCC, sender options).
Reply to email — Reply to an existing email (preserving thread), with reply-all support and choice to draft or send directly.
Forward email — Forward an email to new recipients with an optional added message, as a draft or sent directly.
Mark as read/unread — Toggle the read/unread status of any email.
Move email — Transfer an email to a specified folder by name.
Trash email — Move an email to Trash (recoverable; no permanent deletion).
Safety note: No permanent deletion is possible; destructive actions (sending, trashing) are explicit or reversible.
Allows controlling the macOS Mail app to read, search, compose drafts, send, and manage 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-macos-mcpShow me my unread emails from today"
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.
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.
Télécharger le fichier
mail-macos.mcpb: 👉 Télécharger la dernière versionInstaller 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.mcpbté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.
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. 🎉
Related MCP server: IMAP MCP Server
💬 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é |
| Vérifie que Claude peut contrôler Mail (diagnostic, ne touche pas aux mails) | lecture seule |
| Liste les derniers mails (filtre non lus / expéditeur) | lecture seule |
| Recherche dans les mails récents (sujet, expéditeur, corps en option) | lecture seule |
| Renvoie le contenu complet d'un mail | lecture seule |
| Liste les comptes mail connectés (nom et adresse(s)) | lecture seule |
| Crée un brouillon sans l'envoyer (CC, CCI, expéditeur) | non destructif |
| Envoie un mail (CC, CCI, expéditeur ; Claude Desktop demande confirmation) | sortant |
| Répond à un mail en reprenant le fil ; brouillon par défaut | non destructif |
| Transfère un mail vers un ou plusieurs destinataires ; brouillon par défaut | non destructif |
| Marque un mail lu / non lu | réversible |
| Déplace un mail vers un dossier | réversible |
| 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_mailsetrechercher_mailsne 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.
npm install # installe les dépendances
npm run build # compile TypeScript -> dist/
npm start # lance le serveur (transport stdio) pour testerReconstruire le bundle .mcpb :
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 devArchitecture
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 FRLe 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
Available Tools
12 toolscorbeille_mailMettre à la corbeilleA
Déplace un mail vers la Corbeille. Action récupérable (pas de suppression définitive) : le mail peut être restauré depuis la Corbeille de Mail.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant du mail |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It explicitly states the action is recoverable and not permanent deletion, which is a key behavioral trait. It does not cover permissions, idempotency, or effects on existing state, but for a simple move operation this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences long, immediately states the action, and adds the critical recoverability information. No unnecessary words. Perfectly front-loaded and concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simplicity of the operation (move to trash with one parameter), the description is mostly complete. It lacks details on return values or error cases, but no output schema exists. A note about idempotency or what happens if mail already in trash would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% and the single parameter 'id' is described in the schema as 'Identifiant du mail'. The description adds no additional meaning beyond what the schema provides, so baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Déplace un mail vers la Corbeille') and the resource ('mail'). It adds specificity by noting the action is recoverable, distinguishing it from permanent deletion. However, it does not explicitly differentiate from sibling tools like 'deplacer_mail' which moves to other folders.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use cases by emphasizing recoverability, suggesting it should be used when deletion should be reversible. It does not explicitly state when not to use it or mention alternatives beyond implying contrast with definitive deletion.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
creer_brouillonCréer un brouillonA
Crée un brouillon dans Mail SANS l'envoyer. Le brouillon apparaît dans le dossier Brouillons où l'utilisateur peut le relire et l'envoyer manuellement. Plusieurs destinataires possibles en les séparant par des virgules.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Adresse(s) en copie (CC), séparées par des virgules | |
| cci | No | Adresse(s) en copie cachée (CCI), séparées par des virgules | |
| corps | Yes | Corps du mail (texte) | |
| sujet | Yes | Sujet du mail | |
| expediteur | No | Adresse d'envoi (doit correspondre à un compte ; voir lister_comptes). Si absent, compte par défaut | |
| destinataire | Yes | Adresse(s) du/des destinataire(s), séparées par des virgules |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses basic behavior: draft created (not sent), appears in drafts folder, multiple recipients allowed. However, it misses details like authentication needs, error handling, or return value.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no wasted words. The first sentence front-loads the core purpose. Every sentence adds essential information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, no output schema, and no annotations, the description explains the core function (draft creation) and location. But it lacks detail on return values or error cases, leaving some gaps for a creation tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions cover 100% of parameters. The description adds minimal extra meaning beyond the schema, such as clarifying multiple recipients with commas, but this is already in the schema. Baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Crée un brouillon dans Mail SANS l'envoyer', specifying a specific verb and resource. It distinguishes from siblings like 'envoyer_mail' by emphasizing 'SANS l'envoyer'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this tool to create a draft without sending. It implies when to use but does not explicitly exclude other scenarios or list alternatives like 'repondre_mail'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
deplacer_mailDéplacer un mailA
Déplace un mail vers un dossier (boîte aux lettres) en indiquant le nom exact du dossier tel qu'il apparaît dans Mail. Action réversible.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant du mail | |
| dossier | Yes | Nom exact du dossier de destination |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses the action is reversible, which is a key behavioral trait. However, it does not mention what happens if the folder doesn’t exist, permissions needed, or other side effects, making it moderately transparent.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with zero wasted words. The key action and constraint are front-loaded, making it easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the basic move operation and reversibility, but it does not differentiate from the sibling corbeille_mail (trash) nor explain what constitutes a valid folder or error behavior. Given the simple tool, it is marginally adequate but could be more complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both parameters have descriptions). The description adds no new semantic info beyond emphasizing exact folder name, which is already in the schema. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Déplace un mail vers un dossier' (verb + resource) and specifies the exact folder name requirement, distinguishing it from sibling tools like corbeille_mail (which likely moves to trash). The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides guidance on usage by stating the folder name must be exact as it appears in Mail, and notes the action is reversible. However, it does not explicitly contrast with sibling tools or state when to avoid using this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
envoyer_mailEnvoyer un mailA
ENVOIE immédiatement un mail (action sortante et définitive : le mail part). À n'utiliser que si l'utilisateur veut réellement envoyer. Pour préparer un mail à relire avant envoi, utilise plutôt creer_brouillon. Plusieurs destinataires possibles en les séparant par des virgules.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Adresse(s) en copie (CC), séparées par des virgules | |
| cci | No | Adresse(s) en copie cachée (CCI), séparées par des virgules | |
| corps | Yes | Corps du mail (texte) | |
| sujet | Yes | Sujet du mail | |
| expediteur | No | Adresse d'envoi (doit correspondre à un compte ; voir lister_comptes). Si absent, compte par défaut | |
| destinataire | Yes | Adresse(s) du/des destinataire(s), séparées par des virgules |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Even without annotations, the description transparently discloses the irreversible, immediate nature of the action: 'action sortante et définitive : le mail part'. This fully informs the agent of the tool's side effect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Concise two-sentence description with front-loaded key action ('ENVOIE immédiatement') and no unnecessary words. Each sentence serves a purpose: action, usage guidance, and parameter hint.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple send-email tool with no output schema and well-covered parameters, the description is complete. It covers irrevocability, alternative for draft, multi-recipients, and account requirement for sender. No critical gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds value by noting that 'expediteur' must correspond to an account, referencing a related tool 'lister_comptes'. Other parameters are adequately described in the schema, and the description reinforces the comma-separated list for recipients.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool sends an email immediately, using strong verbs 'ENVOIE immédiatement' and differentiating from the sibling 'creer_brouillon' which prepares a draft. The purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly instructs to use only when the user truly wants to send, and provides a direct alternative ('creer_brouillon') for previewing. Also notes that multiple recipients are allowed, separated by commas.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lire_mailLire un mailA
Renvoie le contenu complet d'un mail (expéditeur, sujet, date, statut et corps) à partir de son identifiant obtenu via lister_mails ou rechercher_mails.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant du mail |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It states that the tool returns full email content but does not disclose whether reading the email changes any state (e.g., marking as read) or any other side effects. This is a non-negligible gap for a read operation, but the core behavior is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the tool's action and includes all essential information: what it does, what fields it returns, and how to obtain the input. There is no waste or redundant text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (single parameter, no output schema, no nested objects), the description adequately covers the purpose, input source, and returned fields. It lacks error scenarios or output format details, but the complexity is low, so the description is sufficiently complete for an agent to use the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with a description for the 'id' parameter. The tool description adds value beyond the schema by explaining that the id is obtained from lister_mails or rechercher_mails, guiding the agent on how to acquire a valid input.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs ('Renvoie') and clearly states the resource ('contenu complet d'un mail') and the fields returned (sender, subject, date, status, body). It distinguishes the tool from siblings like lister_mails and rechercher_mails by specifying that it returns full content from an ID obtained via those tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent that the input ID should come from lister_mails or rechercher_mails, providing clear usage context. It does not include explicit when-not-to-use statements, but the sibling tool names (e.g., envoyer_mail, deplacer_mail) imply alternatives for other actions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lister_comptesLister les comptesA
Liste les comptes mail connectés à l'app Mail (nom et adresse(s) email). Utile pour savoir depuis quelle adresse écrire avant de créer un brouillon ou d'envoyer.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description bears full burden. It accurately describes the output (name and email addresses) and implies read-only behavior. No side effects or contradictions are present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two short sentences, front-loaded with the main action, no redundant information. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter listing tool with no output schema, the description is complete: it specifies what is listed (accounts) and what details (name and email). No gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has no parameters, so it provides no meaning. The description adds value by explaining the output and its purpose, compensating for the empty schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists connected email accounts with name and email addresses, using a specific verb ('liste') and resource ('comptes'). It distinguishes from sibling email tools (e.g., lister_mails, envoyer_mail) by focusing on accounts rather than messages.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says it is useful for knowing which address to use before creating a draft or sending an email, providing clear use context. It does not specify exclusions, but for a simple listing tool, this is sufficient.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
lister_mailsLister les mailsA
Liste les derniers mails de la boîte de réception (tous comptes confondus). Permet de filtrer sur les non lus et/ou un expéditeur. Renvoie pour chaque mail son identifiant (à réutiliser avec les autres outils), l'expéditeur, le sujet, la date et le statut lu/non lu.
| Name | Required | Description | Default |
|---|---|---|---|
| filtre | No | 'tous' ou 'non_lus' (par défaut 'tous') | tous |
| limite | No | Nombre maximum de mails à renvoyer (1 à 50, par défaut 10) | |
| expediteur | No | Filtre optionnel : ne garde que les mails de cet expéditeur (sous-chaîne) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided. The description mentions it lists latest emails from all combined inboxes and returns IDs for reuse, but does not disclose ordering, rate limits, authentication needs, or any other behavioral traits beyond basic read operation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main purpose. It is concise and covers key points without unnecessary detail, though the second sentence could be slightly more streamlined.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity (3 optional parameters, no output schema), the description adequately specifies return fields and the reuse of identifiers with other tools. However, it lacks details on ordering and pagination, which slightly reduces completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema_description_coverage is 100%, so baseline is 3. The description repeats parameter info (filter by unread/sender, limit) without adding new meaning beyond what the schema already provides in parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists latest inbox emails with filtering options and specifies return fields (ID, sender, subject, date, status). It distinguishes itself from siblings like 'rechercher_mails' by focusing on browsing recent emails rather than full-text search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use for browsing latest emails and filtering by unread/sender, but does not explicitly state when to use this tool vs alternatives like 'rechercher_mails' or provide exclusions. No when-not guidance is given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
marquer_mailMarquer lu / non luA
Marque un mail comme lu ou non lu, à partir de son identifiant.
| Name | Required | Description | Default |
|---|---|---|---|
| id | Yes | Identifiant du mail | |
| lu | Yes | true = marquer comme lu, false = marquer comme non lu |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It discloses the core behavior (toggle read/unread) but omits any side effects, permissions, or idempotency details. For a simple toggle, this is acceptable but not exemplary.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, concise sentence that efficiently conveys the tool's purpose without unnecessary detail. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the low complexity of the tool and the absence of an output schema, the description is adequate. However, it does not specify the return value or confirm success/failure behavior, which would enhance completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, and the input schema already defines both parameters ('id' as mail identifier, 'lu' as boolean flag). The description adds no additional meaning beyond what the schema provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's action: marking an email as read or unread using its identifier. It uses a specific verb+resource combination and distinguishes the tool from siblings like 'lire_mail' (reading) and 'corbeille_mail' (trashing).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives (e.g., moving, deleting, or sending). There is no mention of prerequisites or exclusion criteria, leaving the agent without context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rechercher_mailsRechercher des mailsA
Recherche dans les mails récents de la boîte de réception (jusqu'aux 400 plus récents). Cherche le mot-clé dans le sujet et l'expéditeur, et dans le corps si 'inclure_corps' est activé (plus lent). Filtres optionnels par expéditeur et par ancienneté (depuis_jours).
| Name | Required | Description | Default |
|---|---|---|---|
| limite | No | Nombre maximum de résultats (1 à 50, par défaut 10) | |
| mot_cle | Yes | Mot-clé à rechercher | |
| expediteur | No | Filtre optionnel sur l'expéditeur (sous-chaîne) | |
| depuis_jours | No | Ne garder que les mails reçus depuis ce nombre de jours | |
| inclure_corps | No | Rechercher aussi dans le corps du mail (plus lent). Défaut : false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses the scope (400 most recent), search fields (subject, sender, body optionally), and performance consideration (slower with body). Missing details on result format or sorting, but sufficient for a search tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences, front-loaded with core purpose. Every sentence adds value: scope, search targets, conditional body search, optional filters. No redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers core behavior and all parameters. It could mention what the results contain (e.g., subject, sender, date), but for a search tool, the description is sufficiently complete for an agent to use.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, but the description adds meaning: 'mot_cle' is searched in subject/sender, 'expediteur' is a substring filter, 'depuis_jours' filters by recency, 'inclure_corps' makes it slower. This goes beyond schema definitions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it searches recent inbox emails by keyword in subject and sender, with optional body search and filters. This distinguishes it from sibling tools like 'lister_mails' which lists all mails without search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use: to search emails by keyword with optional filters. It does not explicitly state when not to use or provide alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
repondre_mailRépondre à un mailA
Répond à un mail (par son identifiant) en reprenant le fil, le destinataire et l'objet « Re: ». Crée un BROUILLON par défaut (envoyer=false) ; mettre envoyer=true pour envoyer directement. repondre_a_tous inclut tous les destinataires d'origine.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Adresse(s) en copie (CC) | |
| id | Yes | Identifiant du mail auquel répondre | |
| cci | No | Adresse(s) en copie cachée (CCI) | |
| corps | Yes | Texte de la réponse (ajouté au-dessus du message cité) | |
| envoyer | No | true = envoyer ; false = créer un brouillon (défaut) | |
| expediteur | No | Adresse d'envoi (voir lister_comptes). Si absent, Mail choisit le compte du mail d'origine | |
| repondre_a_tous | No | Répondre à tous les destinataires. Défaut : false |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden. It discloses key behaviors: default draft creation (envoyer=false), inclusion of original thread/recipient/subject, and the effect of repondre_a_tous. It does not mention return values, error handling, or authorization needs, but covers the primary behavioral traits well.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is extremely concise with two front-loaded sentences. The first sentence states the core function, and the second clarifies the default behavior and the a_tous option. No unnecessary words, making it easy to parse quickly.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (7 parameters, no output schema) and 100% schema coverage, the description is reasonably complete. It covers the main use case, default behavior, and the optional a_tous. It lacks explicit mention of return values or error conditions, but for a reply tool this is adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100%, so the description adds limited value over the schema. It echoes the repondre_a_tous parameter's effect and the envoyer default, but does not provide additional semantic meaning beyond what the schema already explains. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: replying to an email by its ID, with specific behaviors like copying the thread, recipient, and subject with 'Re:'. It distinguishes itself from sibling tools like creer_brouillon (creating a fresh draft) or transferer_mail (forwarding), as it explicitly handles replying.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for replying to an existing email, mentioning the default draft creation and the option to send directly. However, it does not explicitly state when to use this tool versus alternatives like creer_brouillon or envoyer_mail, nor does it mention prerequisites or constraints.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
tester_accesTester l'accès à MailA
Vérifie rapidement que Claude peut contrôler l'app Mail, sans toucher aux messages. Utile en cas de problème : si cet outil répond, l'autorisation et l'accès sont OK ; sinon le message d'erreur indique quoi faire.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description fully discloses that the tool is non-destructive ('sans toucher aux messages' – touches no messages) and confirms it is a safe access check. This gives complete behavioral transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two concise sentences with no waste. The first sentence states purpose and key safety property; the second provides usage guidance and output interpretation. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple test tool with no parameters and no output schema, the description is complete: it explains purpose, behavior, result interpretation, and context within the sibling set.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters exist, so description adds no param info beyond schema. Baseline of 4 is appropriate given 100% schema coverage and zero parameters; the description provides context for the tool's function.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool tests whether Claude can control the Mail app, emphasizing no message interaction. This distinguishes it from sibling tools that perform actual mail operations.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description indicates use in case of problems and explains how to interpret the response (success means access OK, error indicates next steps). It does not explicitly list when to avoid using it or alternative tools, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
transferer_mailTransférer un mailA
Transfère un mail (par son identifiant) vers un ou plusieurs destinataires, en ajoutant l'en-tête « Message transféré » et le contenu d'origine. Crée un BROUILLON par défaut (envoyer=false) ; mettre envoyer=true pour envoyer directement.
| Name | Required | Description | Default |
|---|---|---|---|
| cc | No | Adresse(s) en copie (CC), séparées par des virgules | |
| id | Yes | Identifiant du mail à transférer | |
| cci | No | Adresse(s) en copie cachée (CCI), séparées par des virgules | |
| corps | No | Texte à ajouter avant le message transféré (optionnel) | |
| envoyer | No | true = envoyer ; false = créer un brouillon (défaut) | |
| expediteur | No | Adresse d'envoi (voir lister_comptes). Si absent, Mail choisit le compte par défaut | |
| destinataire | Yes | Adresse(s) du/des destinataire(s), séparées par des virgules |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden. It discloses draft-by-default, sending behavior, and that it adds header/content. Side effects are minimal and implied.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no filler. Front-loaded with verb and object: 'Transfère un mail...'. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 7 parameters (2 required) and no output schema, the description provides essential behavior and parameter context. Could mention result/return but not critical.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all 7 parameters with descriptions. The description adds value by noting default for 'envoyer' and optional 'expediteur', going beyond schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool transfers a mail to recipients, adding headers and original content. It distinguishes from siblings like 'repondre_mail' (reply) and 'envoyer_mail' (send).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains default draft behavior and the optional 'envoyer' parameter to send directly. It references 'lister_comptes' for sender but doesn't explicitly differentiate from siblings in when to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
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.
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.
12 tools is well-scoped for a mail client MCP, covering essential operations without being overwhelming. Each tool serves a specific need.
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
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Connect any mailbox to Claude, ChatGPT & AI: read, send, reply, schedule & search emails.
Manage Gmail end-to-end: search, read, send, draft, label, and organize threads. Automate workflow…
Email infrastructure for AI agents — send, receive, search, and reply to email over MCP.
Read, search, send, organize, draft and schedule email across your inboxes from any MCP client.
Related MCP Servers
- AlicenseAqualityDmaintenanceEnables seamless email management through natural language conversations with Claude. Supports searching, reading, and sending emails securely with Gmail and other email providers.4MIT
- AlicenseAqualityAmaintenanceEnables Claude to interact with email accounts via IMAP and SMTP, providing tools for searching, reading, sending, and managing emails across multiple providers.4060490MIT
- FlicenseNot gradedqualityBmaintenanceEnables Claude to read, search, draft, send, flag, and move email across multiple IMAP/SMTP mailboxes while keeping credentials local.
- AlicenseBqualityAmaintenanceEnables Claude to interact with Apple apps on macOS including Mail, Calendar, Contacts, Reminders, Notes, and iCloud Drive for personal productivity tasks like triaging email, managing calendar, and cross-app context.766MIT
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/Maxtechexplore/mail-macos-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server