
MCP Apple Mail
Enables integration with Apple Mail on macOS using JavaScript for Automation (JXA). Supports reading, searching, sending, and managing emails across multiple accounts with full mailbox hierarchy support.
README
MCP Apple Mail Desktop Extension
A desktop extension for Claude that provides seamless Apple Mail integration through the Model Context Protocol (MCP) using JXA (JavaScript for Automation).
Features
✨ No String Parsing - Uses JXA to return native JavaScript objects 🎯 Type-Safe - Full TypeScript support with interfaces 📧 Complete Mail Support - Read, search, send, manage emails 🔐 Account-Specific Sending - Send from any configured account 📁 Hierarchical Mailboxes - Full mailbox tree structure support
Installation
As a Desktop Extension (Recommended)
- Download the
apple-mail.mcpb
extension package - Double-click to install in Claude Desktop
- Configure your preferences in the Claude Desktop settings
Manual Installation
For development or manual setup:
# Clone the repository
git clone https://github.com/LionSR/mcp-apple-mail
cd mcp-apple-mail
# Install dependencies
npm install
# Build the extension
npm run build
# Create the MCPB package
npm run pack
Then add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json
):
{
"mcpServers": {
"apple-mail": {
"command": "node",
"args": ["/path/to/mcp-apple/dist/index.js"],
"env": {
"MAIL_ENABLED_ACCOUNTS": "${user_config.enabled_accounts}",
"MAIL_DISABLED_ACCOUNTS": "${user_config.disabled_accounts}",
"MAIL_SEARCH_DEFAULT_LIMIT": "${user_config.search_limit}",
"MAIL_PRIORITY_MAILBOXES": "${user_config.priority_mailboxes}",
"MAIL_JXA_TIMEOUT": "${user_config.jxa_timeout}",
"MAIL_MAX_MAILBOXES_CHECK": "${user_config.max_mailboxes_check}",
"MAIL_MESSAGES_PER_MAILBOX": "${user_config.messages_per_mailbox}"
}
}
}
}
Configuration
When installed as a desktop extension, you can configure the following settings through the Claude Desktop UI:
Setting | Description | Default |
---|---|---|
Enabled Accounts | Comma-separated list of account names to enable | All accounts |
Disabled Accounts | Comma-separated list of account names to disable | None |
Search Limit | Default number of results for search operations | 20 |
Priority Mailboxes | Comma-separated list of priority mailbox names | INBOX, Sent Messages, Sent, Drafts |
JXA Timeout | Timeout for JXA operations (ms) | 30000 |
Max Mailboxes | Maximum mailboxes to check in operations | 10 |
Messages per Mailbox | Messages to check per mailbox | 50 |
Note: If both MAIL_ENABLED_ACCOUNTS
and MAIL_DISABLED_ACCOUNTS
are specified, only accounts in the enabled list will be active.
Available Tools
mail_get_accounts
Get all configured email accounts.
mail_get_mailboxes
Get mailbox hierarchy for a specific account.
mail_get_unread
Get unread emails (with configurable limit).
mail_search
Search emails by text content.
mail_get_latest
Get latest emails from a specific account.
mail_send
Send email from a specific account.
mail_mark_read
Mark emails as read by ID.
mail_delete
Delete emails by ID.
Technical Details
JXA Implementation
This implementation uses JavaScript for Automation (JXA) instead of traditional AppleScript, which provides:
- Direct JavaScript object returns (no parsing!)
- Clean error handling
- Type safety with TypeScript
- ISO date formats
- Proper arrays and nested structures
Example Response
// getAccounts() returns:
[
{
name: "Work",
emailAddresses: ["user@company.com"],
enabled: true,
id: "ABC-123-DEF"
},
// ...
]
// No string parsing needed!
Development
# Run in development mode
npm run dev
# Run tests
npm run test
# Build for production
npm run build
# Create MCPB package
npm run pack
Requirements
- macOS (for Apple Mail access)
- Node.js 16+ and npm
- Apple Mail configured with at least one account
License
MIT
Credits
Clean implementation without string parsing, built with JXA for maximum reliability and performance.
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.