Connects Claude directly to your local Apple Mail database with full-text search powered by FTS5 indexes. Reads mail on disk first, bypassing AppleScript and scripting bridges for faster access. You install it with pipx, run a one-time indexer to build searchable mail body archives, then point your MCP client at the serve command with watch mode to keep indexes current. Useful when you need Claude to search years of email quickly or work with mail content without opening Mail.app. Part of a workspace that also includes a calendar server, both following the same index-then-serve pattern. Beta status, GPL licensed, built on an earlier apple-mail-mcp foundation.
Workspace for MCP servers that expose local Apple app data to assistants.
| Package | Status | Purpose |
|---|---|---|
mac-mail-mcp | Beta | Mac Mail MCP server with disk-first reads and full-coverage FTS5 body search. |
mac-calendar-mcp | Alpha | Read-only Mac Calendar MCP server with indexed archive search. |
Install the package you want:
pipx install mac-mail-mcp
pipx install mac-calendar-mcp
Build local indexes for fast search:
mac-mail-mcp index --verbose
mac-calendar-mcp index
Generate optional config files:
mac-mail-mcp init
mac-calendar-mcp init
Index scope is configured separately from tool defaults. Use [index]
settings such as Mail accounts or Calendar calendars to control what is
stored locally; use [defaults] settings to control what MCP tools use when
the caller omits a scope.
Register one or both servers:
codex mcp add mail -- mac-mail-mcp serve --watch
codex mcp add calendar -- mac-calendar-mcp serve --watch
Confirm the registrations:
codex mcp list
codex mcp get mail
codex mcp get calendar
Create or edit .mcp.json in your project root:
{
"mcpServers": {
"mail": {
"command": "mac-mail-mcp",
"args": ["serve", "--watch"]
},
"calendar": {
"command": "mac-calendar-mcp",
"args": ["serve", "--watch"]
}
}
}
Watch mode keeps the indexes current while the MCP servers are running. Mail uses file watching; Calendar performs a startup sync and then refreshes when Calendar's local SQLite database files change.
For global Claude Code configuration, put the same mcpServers object in
~/.claude/mcp.json.
This repository is organized as a uv workspace. Each MCP server lives under
packages/ with its own package metadata, source, tests, and README.
git clone https://github.com/wagamama/apple-app-mcp
cd apple-app-mcp
uv sync
# All packages
uv run ruff check packages/mac-mail-mcp/src packages/mac-calendar-mcp/src
uv run pytest
# Individual packages
uv run --package mac-mail-mcp pytest packages/mac-mail-mcp/tests
uv run --package mac-calendar-mcp pytest packages/mac-calendar-mcp/tests
Build distributions:
uv build --package mac-mail-mcp
uv build --package mac-calendar-mcp
AGENTS.mdMAIL.mdCALENDAR.mddocs/mcp-client-setup.mddocs/superpowers/plans/2026-05-30-mac-calendar-mcp-implementation.mdDocs are deployed with GitHub Pages from .github/workflows/docs.yml. The
repository must have Pages configured once in Settings -> Pages -> Build and
deployment -> Source: GitHub Actions. The workflow deploys the built artifact;
it does not try to create or enable the Pages site because GitHub rejects that
operation from the default workflow token in some repositories.
This codebase is derived from
imdinu/apple-mail-mcp. Credit and
thanks go to the original authors and contributors for the Apple Mail MCP
foundation this repository builds on.
GPL-3.0-or-later
com.mcparmory/google-search
io.github.pipeworx-io/brave-search
marcopesani/mcp-server-serper
brave/brave-search-mcp-server
com.mcparmory/google-search-console
acamolese/google-search-console-mcp