Local macOS MCP server and setup app for Apple apps
Apple MCP
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.
Features
- 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.
MCP Tools
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.
Requirements
- macOS 14 or newer
- Xcode command line tools / Swift toolchain
- Node.js 20 or newer
- npm
Build And Run
npm install
npm run build
swift build
./script/build_and_run.sh
The app stores local preferences at:
~/.apple-apps-mcp/config.json
Run The MCP Server
npm run dev:mcp
After 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.js
The setup app can also write or show client config for supported AI apps.
Permissions
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.
Development
npm test
npm run build
swift build
./script/build_and_run.sh --verify
The Codex app Run button is wired through:
.codex/environments/environment.toml