Compare macOS MCP servers

Every listicle ranks specialists. Here is what each server actually covers, what it verifies, and what happens when an agent tries something it should not. macos-mcp is the broad one — 44 tools, 24 on by default — and the specialists below are better at their speciality, which this page says out loud. Corrections welcome — open an issue and this page changes.

Capabilitymacos-mcpPeekabooXcodeBuildMCPCursorTouch / MacOS-MCPapple-mcpmcp-remote-macos-useApple Safari MCP
UI automation from the accessibility tree (stable element ids, click/type/scroll/drag by id)yespartial (capture + input focus)noyesnono (VNC pixels)no (web only)
Reads every effect back; a no-op write is an error, not a successyesnon/anononon/a
Screenshots, OCR, find text on screen with clickable coordinatesyesyessimulator screenshotsscreenshotsnoscreenshotspage screenshots
Windows, apps, wait-for-condition, keyboard shortcuts on any layoutyesapps, windowsnoyesnokeys via VNCno
Shell, vetted AppleScript recipes, clipboard, Spotlightyesshell/scriptsnoshellnonono
Calendar, Reminders, Contacts (system permission prompts, typed denials)yesnononoyes (archived 2026-01)nono
Shortcuts / App Intentsyesnononononono
Safari: DOM, console, network, JS evalvia Apple's server, mounted verbatim; AppleScript fallback elsewherenononononoyes (Safari 27 / STP)
Drive a real iPhone through iPhone Mirroring, in the phone's own device points, with every action verifiedyes — 8 iphone_* tools, off by defaultunknownunknownunknownunknownunknownunknown
Xcode builds, tests, simulators, previewsgateway to Apple's Xcode MCP built; mount blocked on Xcode's consent dialognoyes, deep (simctl, devicectl, LLDB)nononono
Disposable macOS VMs on the host you run it on: clone a golden image, start it, verify it, destroy ityes — macos-mcp vm, a CLI, single host todayunknownunknownunknownunknownunknown — cited here as one remote Mac over VNCunknown
Multi-host fleet: a hub, leases, one config entry and a machine parameter that routes any tool to any Macdesigned & prototyped, in developmentnonononoone remote Mac over VNCno
Permission profiles (readonly / standard / full)yesnononononono
Confirmation tokens for destructive toolsyesnononononono
Audit log (arguments digested)yesnononononono
Secure fields never read or typed intoyes, typed refusalnon/anon/anon/a
Typed, stable error codes with recovery hintsyesnosomenononoWebDriver errors
Frozen tool API with a deprecation policy enforced in CIyesnononononon/a
Published, reproducible eval scoreyes, dated (2026-09-06)nononononono
Signed + notarized single binary, no runtime dependencyyes (Swift)yes (Swift)NodePythonBun/NodePythonships with Safari
Telemetrynoneopt-out Sentrynone
LicenseMITMITMITMITMITMITApple

Rows reflect each project's public README and tool list as of September 2026; “partial” means the capability exists in a narrower form. XcodeBuildMCP's telemetry note refers to its opt-out Sentry error reporting as documented in its README. “unknown” means unknown, not no: the iPhone Mirroring and disposable-VM rows are new, nothing in the sources cited here says whether the other projects do those things, and a capability missing from a README is not evidence that it is missing from the software. If you maintain one of these projects and something is out of date, say so and it will be fixed.

Where the specialists are better

The one difference that matters

Every other server in the table trusts the platform's return code. macOS accessibility writes and synthetic events both report success while doing nothing — which is why agents on macOS so often say “done” about a field that is still empty. macos-mcp reads every effect back and calls a no-op what it is. The newest tools are the same rule on harder ground: a tap on a mirrored iPhone that moved no pixels comes back as action_unverified, and a freshly cloned VM is not handed over until vm verify has proved an accessibility read, a keystroke, a screen capture and a non-black frame inside it. That property, plus a permission model and an audit log, is what turns “an agent can drive my Mac” into “I let an agent drive my Mac”. The safety model →

FAQ

Which macOS MCP server should I use with Claude Code or Cursor?

If you want one server that covers the whole Mac — UI automation, screen, apps, files, Safari, and a mirrored iPhone — with a permission model, macos-mcp: 44 tools, 24 on by default. If you only need Xcode builds and simulators, XcodeBuildMCP is deep there and the two run side by side. If you only need screenshots and input, Peekaboo is a good specialist.

Does macos-mcp replace Apple's Safari MCP server?

No — it mounts it. Where Apple's Safari MCP server is available its 17 tools are re-exported verbatim as web_*, gated behind the same permission profiles; where it is not, an AppleScript fallback serves the same slot and labels every result method: fallback.

Is apple-mcp still maintained?

apple-mcp was archived on 2026-01-01. macos-mcp covers its Calendar, Reminders and Contacts surface with compatible tool names and publishes a migration map for the rest.

Which of these can control an iPhone, or a disposable macOS VM?

macos-mcp can do both: the ios toolset drives a real iPhone through the iPhone Mirroring window, and macos-mcp vm clones, runs, verifies and destroys a macOS guest on the host you run it on. For the other projects on this page the honest answer is that we do not know — nothing in the sources this page cites says whether they do either thing, so those cells read unknown rather than no. If you maintain one of them and the answer is yes, open an issue and the row changes.