# Apple Mail MCP

An MCP server for reading and searching Apple Mail. Body search runs over an FTS5 index that covers the whole mailbox, not just recent messages.

- MCP server · `type=mcp` · Claude Code, Codex, Cursor, GitHub Copilot, Windsurf (Devin Desktop), Cline, Zed, Gemini CLI · ★ 74
- Author: imdinu
- License: GPL-3.0 · policy=link-only · description only; the file stays with the author
- Source: https://github.com/imdinu/apple-mail-mcp
- Updated: 2026-10-08
- HTML: https://affpapa.org/en/nevibecode/mcp/apple-mail-mcp

## What it does

The server exposes 8 tools to your agent: list accounts and mailboxes, fetch emails by filter, read one message with attachments, search subject, sender, body and attachments, pull links and attachment contents. Body search goes through an FTS5 index, so old messages turn up too.

Install it like any MCP server: `pipx install apple-mail-mcp`, then point your client at the `apple-mail-mcp` command. Claude users can take the plugin from the marketplace, which runs the same PyPI package through a thin launcher. Build the index afterwards with `apple-mail-mcp index --verbose`.

It needs macOS and Python 3.11+. The terminal or app that launches the server has to have Full Disk Access, otherwise the index will not refresh. Every tool also works as a standalone CLI command with JSON output.

## Requirements
- Needs: Python and uv (commands run via uvx)

## Install

### Claude Code (native platform)

**Platform CLI**
```bash
claude mcp add apple-mail-mcp -- uvx apple-mail-mcp
```
uvx runs the command named after the package; if the README names another one, use uvx --from apple-mail-mcp <command>

### Codex

**Platform CLI**
```bash
codex mcp add apple-mail-mcp -- uvx apple-mail-mcp
```
uvx runs the command named after the package; if the README names another one, use uvx --from apple-mail-mcp <command>

### Cursor

**Config file**
File `.cursor/mcp.json`:
```json
{
    "mcpServers": {
        "apple-mail-mcp": {
            "command": "uvx",
            "args": [
                "apple-mail-mcp"
            ]
        }
    }
}
```
uvx runs the command named after the package; if the README names another one, use uvx --from apple-mail-mcp <command>

### GitHub Copilot

**Config file**
File `.vscode/mcp.json`:
```json
{
    "servers": {
        "apple-mail-mcp": {
            "type": "stdio",
            "command": "uvx",
            "args": [
                "apple-mail-mcp"
            ]
        }
    }
}
```
uvx runs the command named after the package; if the README names another one, use uvx --from apple-mail-mcp <command>

### Gemini CLI

**Platform CLI**
```bash
gemini mcp add apple-mail-mcp uvx apple-mail-mcp
```
uvx runs the command named after the package; if the README names another one, use uvx --from apple-mail-mcp <command>

## When to use it
- find a message by a phrase in the body, not just the subject
- pull an attachment out of a specific email
- list unread mail from the past week
- extract every link from a message
- switch between several mail accounts

## Example prompts
- Search my mail for messages containing “contract” in the body from last month
- Show unread emails in the Work mailbox
- Extract the invoice.pdf attachment from message 12345

## Similar
- [REA](https://affpapa.org/en/nevibecode/mcp/rea.md) — MCP server · ★ 386989
- [GitHub](https://affpapa.org/en/nevibecode/mcp/github.md) — MCP server · ★ 33918
- [Netdata](https://affpapa.org/en/nevibecode/mcp/netdata.md) — MCP server · ★ 81115
- [browser-use](https://affpapa.org/en/nevibecode/mcp/browser-use.md) — MCP server · ★ 119160
- [Codebase Memory](https://affpapa.org/en/nevibecode/mcp/codebase-memory.md) — MCP server · ★ 47392
- [mcp-server](https://affpapa.org/en/nevibecode/mcp/mcp-server.md) — MCP server · ★ 43872

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
