Connects to your local Mac Calendar SQLite database and lets Claude search through archived events. Builds a local index on first run, then keeps it current by watching for database changes. Read-only access means you can query past and future events without worrying about accidental modifications. Install via pipx, run the indexer once, then hook it into Claude Code or Codex with watch mode enabled. Built by the same team behind mac-mail-mcp, currently in alpha. Useful when you need an assistant to reference your actual calendar history or find events by content without switching contexts.
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