apple-mail-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| APPLE_MAIL_AI_MODEL | No | Model identifier. Default: gemma-4-it. | gemma-4-it |
| APPLE_MAIL_AI_API_KEY | No | Bearer token for remote providers. Optional. | |
| APPLE_MAIL_AI_ENDPOINT | No | Base URL for the AI server. Default: http://localhost:1234. | http://localhost:1234 |
| APPLE_MAIL_AI_PROVIDER | No | AI provider (lmstudio, openai, foundation, none). Default: lmstudio. | lmstudio |
| APPLE_MAIL_AI_ALLOW_REMOTE | No | Set to '1' to allow a non-localhost AI endpoint. Optional. | |
| APPLE_MAIL_AI_ENRICH_EVENTS | No | Set to '1' to auto-classify new mail events. Optional. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_foldersA | List all mail accounts and their folders/mailboxes. Returns a tree of account → [mailbox names]. Use this to discover exact mailbox names before calling list_emails or search_emails. |
| list_emailsA | List emails in a specific mailbox with pagination. Returns message summaries including a message_ref that can be passed to get_email, reply_email, move_email, etc. Messages are returned newest-first (index 1 = most recent). |
| get_emailA | Read the full content of a specific email including headers and body. The message_ref comes from list_emails or search_emails results. |
| search_emailsA | Search for emails matching criteria across one or all mailboxes. Returns message summaries with message_ref fields for use with other tools. At least one filter (from_filter, subject_filter, after_date, before_date) should be provided. |
| compose_emailA | Compose a new email. If send is false (default), opens the compose window with a draft. If send is true, sends immediately without confirmation. |
| reply_emailA | Reply to an existing email. If send is false (default), opens the reply in a compose window. If send is true, sends immediately without confirmation. |
| move_emailB | Move an email to a different mailbox. Use list_folders to see available mailbox names. |
| archive_emailA | Move an email to the Archive mailbox of its account. Uses 'Archive' for iCloud, 'All Mail' for Gmail. |
| flag_emailA | Set or clear the flag on an email. |
| mark_readA | Mark an email as read or unread. |
| move_to_junkA | Move an email to the Junk/Spam mailbox of its account. Uses 'Junk' for iCloud, 'Spam' for Gmail. |
| delete_emailA | Move an email to the Trash (Deleted Messages for iCloud, Trash for Gmail). |
| create_folderA | Create a new top-level mailbox/folder inside an account. Idempotent — reports success if the folder already exists. Pair with move_matching to file mail by rule. |
| move_matchingA | Bulk-move every email in a source mailbox that matches the given criteria into a destination mailbox, in one pass. Each call matches a single from/subject substring; to file a sender that spans several unrelated addresses, issue one call per address into the same folder. At least one filter (from_filter, subject_filter, after_date, before_date) is required — this guards against accidentally moving an entire mailbox. The destination must already exist (call create_folder first if needed). Omit limit to move ALL matches (fast native bulk move); set limit to cap the count (slower, per-message). Returns the number of messages moved. On very large mailboxes this can take a few minutes. |
| get_pending_eventsA | Return and clear all real-time incoming mail events pushed by the MailKit extension. Returns an empty array if the extension is not installed or no new mail has arrived since the last call. Each event includes: subject, from, date, messageId, preview, receivedAt. |
| summarize_emailA | Summarize an email in 2-3 sentences using the configured local AI model (LM Studio / Gemma, or OpenAI-compat). Returns a concise plain-text summary of the message content and any required actions. |
| classify_emailA | Classify an email by category and priority using the configured local AI model. Returns JSON with: category (string), priority (high/medium/low), action_required (boolean), tags (string[]). |
| draft_replyA | Draft a reply to an email using the configured local AI model. Returns plain text body ready to pass to reply_email. Does not send — use reply_email to review and send. |
| triage_inboxA | Classify and summarize multiple emails from a mailbox in one call using the configured local AI model. Returns a JSON array sorted by priority. Useful for getting a quick overview of a busy inbox. |
| create_ruleA | Create a native Apple Mail rule that files incoming mail from given sender domains into a folder. This is a REAL Mail rule: Mail applies it to new incoming mail automatically while Mail is running — no background process. Multiple domains are OR-combined into one rule. Native rules do not touch existing mail; set apply_to_existing=true to also sort what is already in the mailbox now. Idempotent: an existing rule with the same name is replaced. The destination folder must already exist (use create_folder). |
| list_rulesA | List all Apple Mail rules: name, enabled state, move-target folder, and the sender domains each matches. Shows every rule in Mail, including ones created outside this tool. |
| delete_ruleA | Delete an Apple Mail rule by name. Use list_rules to see rule names. Removes the rule only; it does not move any mail back. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
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/jayvee6/apple-mail-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server