Apple-native MCP servers for macOS — turn any AI agent into what Siri should have been.
This repository provides direct, local access to core Apple apps through the Model Context Protocol (MCP). Your AI assistant can use structured tools to work with your data — create reminders, send messages, check calendars, search mail, manage files, get directions — while everything stays in the native apps you already use.
MCP provides three primitives for working with Apple apps:
- Tools — actions like creating a reminder or sending a message
- Resources — read-only snapshots like recent notes or today's reminders
- Prompts — reusable workflows for common tasks like planning your day
Everything happens on your Mac. Your data stays in Apple's apps where it belongs.
- Golden Workflows
- Failure Modes
- Compatibility and Version Pinning
- Demo Script
- Checklist Template Prompt
- Per-Server E2E Checklist
- Apple-Tools-MCP, recommended. One unified server for Mail, Calendar, Reminders, Messages, Contacts, Notes, Shortcuts, Files, System, and Maps.
- Apple Files MCP, for safe file, Finder-adjacent, and iCloud Drive workflows inside allowed roots.
- Apple System MCP, for frontmost app, battery, clipboard, truthful Focus support metadata, app-launch context, assistant-relevant macOS settings reads and writes, and bounded GUI fallback automation.
- Apple Maps MCP, for place search, travel estimates, and Apple Maps links.
- Apple Mail MCP, for Mail-only workflows.
- Apple Calendar, for Calendar-only workflows.
- Apple Reminders MCP, for task and reminder workflows.
- Apple Messages MCP, for iMessage and Messages workflows.
- Apple Contacts MCP, for contacts and recipient-resolution workflows.
- Apple Notes MCP, for notes and knowledge workflows.
- Apple Shortcuts MCP, for running Apple Shortcuts from agents.
Apple-Tools-MCP (recommended) — One server that covers everything: Mail, Calendar, Reminders, Messages, Contacts, Notes, Shortcuts, Files, System, and Maps. Includes extras like saved defaults, per-contact routing preferences, thread-aware Mail helpers, undo support, truthful Focus context, Finder-aware file workflows, and iCloud Drive awareness.
Standalone servers — Pick one if you want tighter boundaries or simpler permissions:
- Apple Files MCP, Apple System MCP, Apple Maps MCP for focused workflows
- Apple Mail MCP, Apple Calendar, Apple Reminders MCP, Apple Messages MCP, Apple Contacts MCP, Apple Notes MCP, Apple Shortcuts MCP for single-app access
Some tips for working with these servers:
tools/listis intentionally minimal. Usesearch_toolsto discover tools, thenget_tool_infoto load full schemas and examples only when needed.- Always run Contacts first when messaging a person, then choose Messages or Mail.
- Use Mail thread helpers when the user mentions a conversation.
- Reminders are for due items, Notes for reference material, Calendar for scheduled time.
- When Mail must send from a specific identity, pass the exact sender email in
from_account. - Code-mode clients can use the generated wrapper surface in
generated/tool_wrappers/pythoninstead of loading every tool schema into model context. - See the standalone READMEs for app-specific details.
The published Apple MCP servers are optimized for search-aware clients:
tools/listexposes only a compact always-on surface, such as health checks, permission guidance, prompt fallbacks,search_tools, andget_tool_infosearch_toolsfinds deferred tools by name, description, aliases, and domain tagsget_tool_infoloads the full schema and examples for one deferred tool only when the client needs it- direct
call_toolstill works for deferred tools, even if they were not included in the initialtools/list
This keeps the default context smaller while preserving the full tool surface.
The repo also ships generated artifacts for code-execution clients:
generated/tool_catalogs, exported searchable tool metadata per servergenerated/tool_wrappers/python, generated Python wrappers for deferred tool calls
Use these when you want Anthropic-style code-mode discovery and execution without loading the entire MCP surface into the model context window.
See docs/code-mode.md for the wrapper layout, client interface, result parsing, and recommended workflow.
Recommended, install the all-in-one server
cd /path/to/Apple-MCPs/Apple-Tools-MCP
./start.shstart.sh bootstraps and repairs the local virtual environment as needed, reinstalls when requirements.txt changes, and starts the MCP server over stdio.
Install every package into one shared environment
cd /path/to/Apple-MCPs
bash scripts/install_all.shThis creates a shared virtual environment and installs every standalone package plus Apple-Tools-MCP into it. Use this when you want one environment that can run any server without relying on sibling source-path imports. The installed entrypoints land in .venv/bin, for example .venv/bin/apple-tools-mcp.
Install one standalone server instead
Example:
cd /path/to/Apple-MCPs/AppleMessages-MCP
./start.shEvery server folder follows the same pattern:
manifest.jsonstart.shserver.pyREADME.mdsrc/tests/
Generic MCP client, stdio config
Most MCP clients that support local stdio servers can point directly at a server start.sh.
Example for the all-in-one server:
{
"mcpServers": {
"apple-tools": {
"command": "/path/to/Apple-MCPs/Apple-Tools-MCP/start.sh",
"args": [],
"env": {
"APPLE_MAIL_MCP_SAFETY_PROFILE": "full_access",
"APPLE_CALENDAR_MCP_SAFETY_MODE": "safe_manage",
"APPLE_REMINDERS_MCP_SAFETY_MODE": "safe_manage",
"APPLE_FILES_MCP_ALLOWED_ROOTS": "/Users/you/Desktop,/Users/you/Documents,/Users/you/Downloads,/Users/you/Library/Mobile Documents/com~apple~CloudDocs",
"APPLE_FILES_MCP_SAFETY_MODE": "safe_manage",
"APPLE_SYSTEM_MCP_SAFETY_MODE": "safe_manage",
"APPLE_CONTACTS_MCP_SAFETY_MODE": "safe_manage",
"APPLE_NOTES_MCP_SAFETY_MODE": "full_access",
"APPLE_MESSAGES_MCP_SAFETY_MODE": "full_access",
"APPLE_SHORTCUTS_MCP_SAFETY_MODE": "full_access"
}
}
}
}For launch-quality assistant behavior, use the assistant-grade safety settings shown in Apple-Tools-MCP/README.md instead of an empty env block.
Example for a standalone server:
{
"mcpServers": {
"apple-reminders": {
"command": "/path/to/Apple-MCPs/AppleReminders-MCP/start.sh",
"args": [],
"env": {
"APPLE_REMINDERS_MCP_SAFETY_MODE": "safe_manage"
}
}
}
}Claude Code example
Add the all-in-one server:
claude mcp add --transport stdio --scope project \
apple-tools \
-- /path/to/Apple-MCPs/Apple-Tools-MCP/start.shAdd a standalone server:
claude mcp add --transport stdio --scope project \
apple-notes \
-- /path/to/Apple-MCPs/AppleNotes-MCP/start.sh- Start the server:
./start.sh - Add the
start.shpath to your MCP client - Reconnect the client so the server loads
- Call the health tool to verify it's working
- If permissions fail, call the permission guide tool
- After fixing permissions, call the recheck tool (or
shortcuts_refresh_statefor Shortcuts) - Do not treat shell,
curl, UI scraping, or external APIs as a passing result when the suite claims native MCP support for that capability - For Maps, a pass requires native Apple Maps MCP success
- For Focus and notifications, a pass requires truthful MCP output. Do not invent active Focus state or Notification Center history that the suite does not actually expose.
Use stdio for normal local agent setups. Apple-Tools-MCP also supports streamable-http for protocol validation and hosted clients.
Run the full official active server conformance suite against Apple-Tools-MCP:
cd /path/to/Apple-MCPs/Apple-Tools-MCP
APPLE_AGENT_MCP_TRANSPORT=streamable-http \
APPLE_AGENT_MCP_PORT=8765 \
APPLE_AGENT_MCP_CONFORMANCE_MODE=1 \
./start.shIn another shell:
npx -y @modelcontextprotocol/conformance server \
--url http://127.0.0.1:8765/mcp \
--suite activeRun lightweight Inspector smoke checks across all published servers:
cd /path/to/Apple-MCPs
bash scripts/inspector_smoke.shThe repository also includes GitHub Actions for both checks in protocol-ci.yml.
| Server | Health tool | Permission or recovery tools |
|---|---|---|
| Apple-Tools-MCP | apple_health |
apple_permission_guide, apple_recheck_permissions |
| Apple Mail MCP | mail_health |
mail_permission_guide, mail_recheck_permissions |
| Apple Calendar | calendar_health |
calendar_permission_guide, calendar_recheck_permissions |
| Apple Reminders MCP | reminders_health |
reminders_permission_guide, reminders_recheck_permissions |
| Apple Messages MCP | messages_health |
messages_permission_guide, messages_recheck_permissions |
| Apple Contacts MCP | contacts_health |
contacts_permission_guide, contacts_recheck_permissions |
| Apple Notes MCP | notes_health |
notes_permission_guide, notes_recheck_permissions |
| Apple Shortcuts MCP | shortcuts_health |
shortcuts_permission_guide, shortcuts_refresh_state |
| Apple Files MCP | files_health |
files_permission_guide |
| Apple System MCP | system_health |
system_permission_guide |
| Apple Maps MCP | maps_health |
maps_permission_guide |
Different Apple apps require different permissions:
| Server | What macOS may ask for |
|---|---|
| Apple Mail | Automation access to Mail |
| Apple Calendar | Calendar access |
| Apple Reminders | Reminders access |
| Apple Messages | Automation access to Messages, plus Full Disk Access for history |
| Apple Contacts | Contacts access |
| Apple Notes | Automation access to Notes |
| Apple Shortcuts | Usually no separate privacy prompt |
| Apple Files | No privacy prompt, access is limited by the configured allowed roots |
| Apple System | Some actions may trigger System Events, Accessibility, or automation prompts |
| Apple Maps | No privacy prompt, but local Swift helper compilation needs Xcode command line tools |
Apple-Tools-MCP/, unified serverAppleFiles-MCP/, FilesAppleSystem-MCP/, SystemAppleMaps-MCP/, MapsAppleContacts-MCP/, ContactsAppleMail-MCP/, MailApple-Calendar-MCP/, CalendarAppleReminders-MCP/, RemindersAppleMessages-MCP/, MessagesAppleNotes-MCP/, NotesAppleShortcuts-MCP/, ShortcutsSharedAppleBridge/, shared native bridge code used by EventKit-backed servers.build/, local helper build output
- This suite is for macOS.
- Apple Messages history access still needs Full Disk Access.
- The unified server folder is
Apple-Tools-MCP. - The calendar server folder is
Apple-Calendar-MCP. - Apple Files access is limited to the roots in
APPLE_FILES_MCP_ALLOWED_ROOTS. - Apple System write actions can be scoped down with
APPLE_SYSTEM_MCP_SAFETY_MODE. - Apple Maps depends on a local Swift helper and Xcode command line tools for search and directions.
- Apple-Tools-MCP can persist assistant defaults in
~/.apple-tools-mcp/preferences.json, or the path fromAPPLE_AGENT_MCP_STATE_FILE. - Apple-Tools-MCP also stores recent assistant actions in
~/.apple-tools-mcp/actions.jsonfor audit and undo workflows. - Apple-Tools-MCP now aggregates Files, System, and Maps alongside the app-specific Apple servers.
APPLE_AGENT_MCP_CONFORMANCE_MODE=1is for protocol validation only. It adds the official MCP conformance fixtures on Apple-Tools-MCP and switches HTTP mode to full streaming behavior.- Apple-Tools-MCP now includes task-capable briefing tools,
apple_generate_daily_briefing,apple_generate_weekly_briefing, andapple_triage_communications_task. - Apple-Tools-MCP also includes prompt fallback tools,
apple_list_promptsandapple_get_prompt, for tool-only MCP clients. - The standalone servers now expose prompt fallback tools and explicit resource subscribe or unsubscribe handlers, so prompt-heavy workflows degrade more cleanly in thinner MCP clients.
- Apple Mail now includes thread helpers,
mail_get_thread,mail_reply_latest_in_thread, andmail_archive_thread. - Apple Contacts can now create, update, and delete contacts with labeled phone numbers and email addresses.
- Mail search requires a query string. Use a sender, a subject fragment, or
*as a wildcard. - Reminders
due_daterequires a timezone offset likeyyyy-MM-ddTHH:mm:ss-HH:00. service_nameshould be omitted on iMessage sends.