Apple MCP is a local macOS app and MCP server for giving AI tools controlled access to Apple apps.
It includes a SwiftUI setup app for permissions and client configuration, plus a TypeScript stdio MCP server for clients like Codex, Claude Code, Claude Desktop, Raycast, and any other MCP-compatible app.
- Native macOS setup app with integration toggles and permission status.
- Calendar and Reminders access through EventKit.
- Notes, Mail, Music, and Shortcuts adapters through local macOS automation surfaces.
- Local MCP server over stdio.
- Client setup helpers for Codex and Claude.
- Safety guardrails for risky actions like sending mail, running shortcuts, and completing reminders.
Apple MCP exposes these tools:
apple_permissions_statusapple_request_permissioncalendar_list_eventscalendar_create_eventreminders_listreminders_createreminders_completenotes_searchnotes_readnotes_createmail_searchmail_readmail_create_draftmail_send_draftshortcuts_listshortcuts_runmusic_searchmusic_playmusic_pause
Risky tools require confirm: true and a short reason.
Prebuilt releases are available on the Releases page.
The app is signed with a Developer ID certificate and notarized by Apple, so it opens normally with no Gatekeeper warnings — just drag Apple MCP to your Applications folder.
- macOS 26 or newer
- Xcode command line tools / Swift toolchain
- Node.js 20 or newer
- npm
npm install
npm run build
swift build
./script/build_and_run.shThe app stores local preferences at:
~/.apple-apps-mcp/config.json
npm run dev:mcpAfter building, you can register the server manually:
codex mcp add apple-apps -- node /absolute/path/to/dist/mcp/index.js
claude mcp add apple-apps -- node /absolute/path/to/dist/mcp/index.jsThe setup app can also write or show client config for supported AI apps.
Calendar and Reminders use native EventKit permissions. The setup app owns the foreground permission prompt and runs a localhost-only EventKit bridge so MCP calls share the approved app context.
Notes, Mail, Music, and Shortcuts may trigger macOS Automation prompts on first use.
npm test
npm run build
swift build
./script/build_and_run.sh --verifyThe Codex app Run button is wired through:
.codex/environments/environment.toml