Command Palette

Search for a command to run...

UnylyUnyly
Browse all

JonathanRReed/Apple-MCPs

FreeNot checked

Local macOS MCP servers for Mail, Calendar, Reminders, Messages, Contacts, Notes, Shortcuts, Files, Maps, and system tools. Use the unified server or standalone

GitHubEmbed

About

Local macOS MCP servers for Mail, Calendar, Reminders, Messages, Contacts, Notes, Shortcuts, Files, Maps, and system tools. Use the unified server or standalone servers over stdio, with PyPI packages and MCPB bundles.

README

CI Python 3.11+ macOS

MCP servers that let an AI client use Apple apps and macOS tools. Create reminders, send messages, check calendars, search mail, manage files, and get directions.

The servers run on your Mac. Your MCP client may send returned data to its model provider, and Apple apps may sync through iCloud or another account. Local execution does not mean the data stays local.

Requires Python 3.11+ and macOS. Uses MCP specification 2026-07-28 and Python SDK 2.x, with support for older client protocol revisions. MIT license.

Install

Install uv, then register the unified server with your client.

Claude Code:

claude mcp add --transport stdio --scope project apple-tools -- uvx apple-tools-mcp

Codex:

codex mcp add apple-tools -- uvx apple-tools-mcp

Other stdio clients:

{
  "mcpServers": {
    "apple-tools": {
      "command": "uvx",
      "args": ["apple-tools-mcp"]
    }
  }
}

Run uvx apple-tools-mcp to start the server directly. Standalone servers use the same approach, such as uvx apple-mcp-mail or uvx apple-calendar-mcp.

Restart your client after installing or upgrading. Call search_tools with calendar health to check discovery without reading app data.

For Claude Desktop, download a server's .mcpb bundle from Releases and double-click it.

Set app-specific safety modes and directories in your client's env settings. The configuration guide lists defaults and options. Mail attachments are disabled until you set APPLE_MAIL_MCP_ALLOWED_ATTACHMENT_ROOT to a dedicated directory. Files tools only access APPLE_FILES_MCP_ALLOWED_ROOTS; macOS may impose further restrictions.

Choose a server

Start with Apple-Tools-MCP. It combines all ten apps and tools below, plus saved defaults, contact routing, Mail thread helpers, undo, briefings, and cross-app workflows.

Choose a standalone server to expose fewer apps to your client:

Server macOS access Health tool Permission help
Mail Automation access to Mail mail_health mail_permission_guide, mail_recheck_permissions
Calendar Calendar access calendar_health calendar_permission_guide, calendar_recheck_permissions
Reminders Reminders access reminders_health reminders_permission_guide, reminders_recheck_permissions
Messages Automation; Full Disk Access for history messages_health messages_permission_guide, messages_recheck_permissions
Contacts Contacts access contacts_health contacts_permission_guide, contacts_recheck_permissions
Notes Automation access to Notes notes_health notes_permission_guide, notes_recheck_permissions
Shortcuts Usually no separate prompt shortcuts_health shortcuts_permission_guide, shortcuts_refresh_state
Files Allowed roots and protected-folder access files_health files_permission_guide
System Some actions need System Events, Accessibility, or Automation system_health system_permission_guide
Maps No privacy prompt; Swift helper needs Xcode command line tools maps_health maps_permission_guide

The unified server uses apple_health, apple_permission_guide, and apple_recheck_permissions. You must approve permissions yourself in the macOS prompt or System Settings.

Find and use tools

MCP tools/list returns each tool's schemas and read or write annotations. Use search_tools to search names, descriptions, and aliases; use get_tool_info for one tool's schema and examples.

Resolve recipients through Contacts before sending, unless you have the exact address. For Mail conversations, use mail_get_thread, mail_reply_latest_in_thread, or mail_archive_thread. Pass an exact sender email in from_account when the sending identity matters.

Mail search requires a query: a sender, subject fragment, or *. Reminders due_date requires a timezone offset, such as yyyy-MM-ddTHH:mm:ss-08:00. Omit service_name when sending iMessages.

The unified server also provides apple_generate_daily_briefing, apple_generate_weekly_briefing, and apple_triage_communications_task. Clients without prompt support can use apple_list_prompts, apple_get_prompt, and their per-server equivalents.

For calls from Python, use the metadata in generated/tool_catalogs/ and wrappers in generated/tool_wrappers/python/. See code-mode.md.

Transport and stored state

stdio is the default. To use Streamable HTTP, set APPLE_<DOMAIN>_MCP_TRANSPORT=streamable-http and the matching _HOST and _PORT variables.

HTTP must bind to 127.0.0.1, ::1, or localhost. The servers have no remote authentication and reject network and wildcard binds. Do not expose them through a tunnel or public proxy.

Apple-Tools-MCP stores defaults in ~/.apple-tools-mcp/preferences.json, configurable through APPLE_AGENT_MCP_STATE_FILE. It stores recent actions in ~/.apple-tools-mcp/actions.json for audit and undo.

Develop

git clone https://github.com/JonathanRReed/Apple-MCPs.git
cd Apple-MCPs
uv sync --all-packages

The uv workspace installs every server into .venv/bin. Each server folder also has a start.sh for clients; it uses uv when available and otherwise creates a virtual environment. Root pyproject.toml defines workspace members, and uv.lock pins dependencies.

Path Contents
Apple-Tools-MCP/ Unified server; module apple_agent_mcp, environment prefix APPLE_AGENT_MCP_*
Apple<Domain>-MCP/ Standalone servers; Calendar uses Apple-Calendar-MCP
AppleMCPCommon/ Shared discovery and search, published as apple-mcp-common
generated/ Tool catalogs and Python wrappers
scripts/ Installation, checks, generation, and bundle builds
docs/ Project and launch documentation

Run smoke checks:

bash scripts/inspector_smoke.sh
uv run python scripts/protocol_smoke.py

For the official conformance suite, start the server in a separate terminal:

APPLE_AGENT_MCP_TRANSPORT=streamable-http \
APPLE_AGENT_MCP_PORT=8765 \
APPLE_AGENT_MCP_CONFORMANCE_MODE=1 \
./Apple-Tools-MCP/start.sh
npx -y @modelcontextprotocol/[email protected] server --url http://127.0.0.1:8765/mcp --requirements 2026-07-28

Conformance mode registers test fixtures. Use it only for protocol validation. CI runs lint, macOS and Linux tests, generated-file checks, Inspector smoke checks, and conformance tests.

Documentation

Contributing · Security · Troubleshooting · MCP compatibility · Publishing · Changelog · Trademark notice · Launch docs

from github.com/JonathanRReed/Apple-MCPs

Installing JonathanRReed/Apple-MCPs

This server has no published package — it is built from source. Open the repository and follow its README.

▸ github.com/JonathanRReed/Apple-MCPs

FAQ

Is JonathanRReed/Apple-MCPs MCP free?

Yes, JonathanRReed/Apple-MCPs MCP is free — one-click install via Unyly at no cost.

Does JonathanRReed/Apple-MCPs need an API key?

No, JonathanRReed/Apple-MCPs runs without API keys or environment variables.

Is JonathanRReed/Apple-MCPs hosted or self-hosted?

Self-hosted: the server runs locally on your machine via the install command above.

How do I install JonathanRReed/Apple-MCPs in Claude Desktop, Claude Code or Cursor?

Open JonathanRReed/Apple-MCPs on unyly.org, pick your client tab (Claude Desktop, Claude Code, Cursor) and press Install — the config is generated automatically, no JSON editing.

Related MCPs

Compare JonathanRReed/Apple-MCPs with

Not sure what to pick?

Find your stack in 60 seconds

Author?

Embed badge for your README

Browse similar

All communication MCPs