Apple Tools (Unified) — MCP server
A single MCP server that hands your agent ten macOS apps and tools: Mail, Calendar, Reminders, Messages, Contacts, Notes, Files, Maps, System and Shortcuts. It runs on your Mac.
claude mcp add --env APPLE_MAIL_MCP_SAFETY_PROFILE=<APPLE_MAIL_MCP_SAFETY_PROFILE> --env APPLE_CALENDAR_MCP_SAFETY_MODE=<APPLE_CALENDAR_MCP_SAFETY_MODE> --env APPLE_REMINDERS_MCP_SAFETY_MODE=<APPLE_REMINDERS_MCP_SAFETY_MODE> --env APPLE_FILES_MCP_SAFETY_MODE=<APPLE_FILES_MCP_SAFETY_MODE> --env APPLE_FILES_MCP_ALLOWED_ROOTS=<APPLE_FILES_MCP_ALLOWED_ROOTS> --transport stdio apple-tools-mcp -- uvx apple-tools-mcpWhat Apple Tools (Unified) does
Start it with uvx apple-tools-mcp and the client gets tools that read from and write to Apple apps. Messages go out over iMessage unless you pass service_name as SMS or RCS. Mail search always needs a query — a sender, part of a subject, or *.
Safety modes decide what the tools may touch. Mail runs as safe_manage under uvx and pip, while the Claude Desktop bundles ship with full_access. Attachments stay off until you point APPLE_MAIL_MCP_ALLOWED_ATTACHMENT_ROOT at a folder. Files tools reach only the paths listed in APPLE_FILES_MCP_ALLOWED_ROOTS.
You need Python 3.11+ on macOS, and you approve permissions yourself in the system prompt or System Settings. Streamable HTTP binds to 127.0.0.1, ::1 or localhost only, because there is no remote authentication — a tunnel or public proxy would leave it open. Returned data goes to your client, which may forward it to its model provider, so running locally does not keep it local.
What it helps with
- turn a chat message into a reminder
- pull a mail thread by sender and reply in it
- check the calendar and suggest a free slot
- send an iMessage or an SMS through the paired iPhone
- triage incoming mail and build a morning briefing
Example prompts for the agent
- Find the latest mail from
[email protected]and show it - Create a reminder for tomorrow with the
-08:00offset - Build my daily briefing from the calendar and unread messages
How to install Apple Tools (Unified)
Platform CLI
claude mcp add --env APPLE_MAIL_MCP_SAFETY_PROFILE=<APPLE_MAIL_MCP_SAFETY_PROFILE> --env APPLE_CALENDAR_MCP_SAFETY_MODE=<APPLE_CALENDAR_MCP_SAFETY_MODE> --env APPLE_REMINDERS_MCP_SAFETY_MODE=<APPLE_REMINDERS_MCP_SAFETY_MODE> --env APPLE_FILES_MCP_SAFETY_MODE=<APPLE_FILES_MCP_SAFETY_MODE> --env APPLE_FILES_MCP_ALLOWED_ROOTS=<APPLE_FILES_MCP_ALLOWED_ROOTS> --transport stdio apple-tools-mcp -- uvx apple-tools-mcpReplace <…> with your own values. 7 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from apple-tools-mcp <command>
Platform CLI
codex mcp add apple-tools-mcp --env APPLE_MAIL_MCP_SAFETY_PROFILE=<APPLE_MAIL_MCP_SAFETY_PROFILE> --env APPLE_CALENDAR_MCP_SAFETY_MODE=<APPLE_CALENDAR_MCP_SAFETY_MODE> --env APPLE_REMINDERS_MCP_SAFETY_MODE=<APPLE_REMINDERS_MCP_SAFETY_MODE> --env APPLE_FILES_MCP_SAFETY_MODE=<APPLE_FILES_MCP_SAFETY_MODE> --env APPLE_FILES_MCP_ALLOWED_ROOTS=<APPLE_FILES_MCP_ALLOWED_ROOTS> -- uvx apple-tools-mcpReplace <…> with your own values. 7 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from apple-tools-mcp <command>
Config file
{
"mcpServers": {
"apple-tools-mcp": {
"command": "uvx",
"args": [
"apple-tools-mcp"
],
"env": {
"APPLE_MAIL_MCP_SAFETY_PROFILE": "<APPLE_MAIL_MCP_SAFETY_PROFILE>",
"APPLE_CALENDAR_MCP_SAFETY_MODE": "<APPLE_CALENDAR_MCP_SAFETY_MODE>",
"APPLE_REMINDERS_MCP_SAFETY_MODE": "<APPLE_REMINDERS_MCP_SAFETY_MODE>",
"APPLE_FILES_MCP_SAFETY_MODE": "<APPLE_FILES_MCP_SAFETY_MODE>",
"APPLE_FILES_MCP_ALLOWED_ROOTS": "<APPLE_FILES_MCP_ALLOWED_ROOTS>"
}
}
}
}Replace <…> with your own values. 7 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from apple-tools-mcp <command>
Config file
{
"servers": {
"apple-tools-mcp": {
"type": "stdio",
"command": "uvx",
"args": [
"apple-tools-mcp"
],
"env": {
"APPLE_MAIL_MCP_SAFETY_PROFILE": "<APPLE_MAIL_MCP_SAFETY_PROFILE>",
"APPLE_CALENDAR_MCP_SAFETY_MODE": "<APPLE_CALENDAR_MCP_SAFETY_MODE>",
"APPLE_REMINDERS_MCP_SAFETY_MODE": "<APPLE_REMINDERS_MCP_SAFETY_MODE>",
"APPLE_FILES_MCP_SAFETY_MODE": "<APPLE_FILES_MCP_SAFETY_MODE>",
"APPLE_FILES_MCP_ALLOWED_ROOTS": "<APPLE_FILES_MCP_ALLOWED_ROOTS>"
}
}
}
}Replace <…> with your own values. 7 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from apple-tools-mcp <command>
Platform CLI
gemini mcp add -e APPLE_MAIL_MCP_SAFETY_PROFILE=<APPLE_MAIL_MCP_SAFETY_PROFILE> -e APPLE_CALENDAR_MCP_SAFETY_MODE=<APPLE_CALENDAR_MCP_SAFETY_MODE> -e APPLE_REMINDERS_MCP_SAFETY_MODE=<APPLE_REMINDERS_MCP_SAFETY_MODE> -e APPLE_FILES_MCP_SAFETY_MODE=<APPLE_FILES_MCP_SAFETY_MODE> -e APPLE_FILES_MCP_ALLOWED_ROOTS=<APPLE_FILES_MCP_ALLOWED_ROOTS> apple-tools-mcp uvx apple-tools-mcpReplace <…> with your own values. 7 more environment variables are in the server README. uvx runs the command named after the package; if the README names another one, use uvx --from apple-tools-mcp <command>
Step by step, with commands for each platform: How to add an MCP server to Claude Code, Codex, Cursor, VS Code, Gemini CLI and more
Questions about Apple Tools (Unified)
How do I install Apple Tools (Unified) in Claude Code?
Install uv first, then run claude mcp add apple-tools-mcp -- uvx apple-tools-mcp. Restart the client afterwards.
What does Apple Tools (Unified) do?
It exposes ten macOS apps and tools to your agent: Mail, Calendar, Reminders, Messages, Contacts, Notes, Shortcuts, Files, System and Maps. It also adds saved defaults, contact routing, undo and briefings.
Which permissions does the server need?
They differ per app: Mail and Notes use automation access, Messages needs Full Disk Access for history, and some System actions want System Events or Accessibility. You grant each one by hand in the macOS prompt or System Settings.