Motty
原生桌面 SSH 工作台:终端、SFTP/SCP、端口转发、VNC 与 RDP 远程桌面、AI 助手都在一个窗口里。Go 编写,没有 Electron,空闲时保持安静。免费开源,支持 macOS、Windows 和 Linux。
Translation pending
Apple MCPs: Apple-native MCP servers for macOS. One unified server plus ten single-app servers for Mail, Calendar, Messages, Notes, Files, and Maps, running on your Mac.
Developer toolsPython · SwiftGitHub @JonathanRReedOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Model Context Protocol (MCP) servers that give AI agents local access to macOS apps: Mail, Calendar, Reminders, Messages, Contacts, Notes, Shortcuts, Files, System, and Maps. Unified server plus focused single-app servers.
Loading the full README.
Read the full README ↗
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 uv, then register the unified server with your client.
Claude Code:
claude mcp add --transport stdio --scope user apple-tools -- uvx apple-tools-mcp
--scope user makes the server available in every project. To share it with one repository through its .mcp.json instead, use --scope project.
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. To change its safety modes or folders later, open Settings > Extensions, choose the extension, and click Configure.
For other clients, set app-specific safety modes and directories in the server's env settings, then restart the client. An explicitly invalid or blank safety setting selects safe_readonly; the domain's health tool reports this in safety_mode_warning, and blocked tools name the exact setting to change. Unset settings keep each domain's documented default. One default differs by install method: Mail is safe_manage for uvx and pip installs, but full_access in the Claude Desktop bundles, which have always shipped that way. Set APPLE_MAIL_MCP_SAFETY_PROFILE (or the bundle's "Mail safety mode" setting) to choose. 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, and Messages sends attachments only from those folders unless APPLE_MESSAGES_MCP_ALLOWED_ROOTS is set; macOS may impose further restrictions.
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 |
|---|---|---|---|
| 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 and reliable file sending | 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 |
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.
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. Messages sends default to iMessage. Pass service_name (SMS or RCS) to send through the paired iPhone; replies in SMS/RCS threads follow the thread's service automatically.
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.
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.
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.
Contributing · Security · Troubleshooting · MCP compatibility · Publishing · Changelog · Trademark notice · Launch docs
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 |