MCP Apple Mail

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.

Category
Visit Server

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)

  1. Download the apple-mail.mcpb extension package
  2. Double-click to install in Claude Desktop
  3. 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

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.

Official
Featured
TypeScript
Magic Component Platform (MCP)

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.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

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.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
graphlit-mcp-server

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.

Official
Featured
TypeScript
Kagi MCP Server

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.

Official
Featured
Python
E2B

E2B

Using MCP to run code via e2b.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

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.

Official
Featured
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured