macOS-MCP

MCP server for macOS desktop control through the Accessibility API: clicks, typing, windows, apps, shell commands and AppleScript

  • 240 ★ on the repository
  • Last commit
  • MIT
MCP server

Broad access

Why this level

  • The agent clicks, types and runs shell and AppleScript commands with your account's rights
  • Accessibility and Screen Recording permissions give the server control over the screen and apps
All reasons and checks

cursortouch/macos-mcp

Install

Manual install

claude mcp add macos-mcp -- uvx macos-mcp serve

Grant the Accessibility and Screen Recording permissions first.

Access and checks

How we review

Broad accessThe tool can change data, run commands or handle secrets.

  • The agent clicks, types and runs shell and AppleScript commands with your account's rights
  • Accessibility and Screen Recording permissions give the server control over the screen and apps

This is third-party code. Review the repository files before installing.

What it does

macOS-MCP connects an agent to the Mac operating system: opens apps, manages windows, clicks, types, scrolls and presses keyboard shortcuts. It works through the Accessibility API and needs no computer vision or specially fine-tuned model, any LLM fits, and vision only adds to the work. Tools: `Click`, `Type`, `Scroll`, `Move`, `Shortcut`, `App` for launching, switching and sizing windows, `Desktop` for creating new Mission Control spaces, `Shell` for commands and AppleScript (`mode='osascript'`), `Scrape` for turning a page into Markdown and `Wait`. The server detects the state of Launchpad, Control Center and Spotlight and also reads the menu bar, Dock and desktop. It starts through `uvx macos-mcp serve` over stdio, SSE or Streamable HTTP and `macos-mcp install` installs it as a launchd background service.

Who it is for. Developers and testers on a Mac who need an agent to press buttons in ordinary apps that have no API or command line.

Good fit when

  • You need to repeat an action in an app with no API: open a window, press a menu item and type text
  • The agent switches between apps, arranges windows and checks what is on the screen
  • A browser page has to be obtained as Markdown to parse its text
  • AppleScript automation is launched from a conversation instead of a manual script editor

Not a fit when

  • The app has an API or command line: calling it directly is more reliable than screen clicks
  • You need to interact with a system authentication dialog: the server cannot control it
  • A computer with important data is unattended: the server runs shell commands and clicks on your behalf

Example request

Open the Notes app, create a new note with a shopping list and take a window screenshot to check the result

MCP

Transport
stdio, http, sse
Authentication
key is optional

Environment variables

ANONYMIZED_TELEMETRY
Set to false to disable anonymous telemetry
MACOS_MCP_AUTH_KEY secret
Bearer token for HTTP requests

Limitations

You need macOS 12 or newer, Python 3.11 and `uv`, plus Accessibility and Screen Recording permissions granted by hand in settings. Some apps support the Accessibility API poorly and complex interfaces with many elements are traversed slower. Some input fields may not accept keystrokes and system authentication dialogs are unavailable. The server collects anonymous usage telemetry without arguments or results, turned off with `ANONYMIZED_TELEMETRY=false`. Network mode has an `--auth-key` flag, an IP allowlist and TLS.

How to disable. Remove the macos-mcp block from the client config, run `macos-mcp uninstall` if you installed the launchd service and revoke Accessibility and Screen Recording permissions in macOS settings.

FAQ

How do I connect macOS-MCP to Claude Code?

Grant Accessibility and Screen Recording permissions and run `claude mcp add macos-mcp -- uvx macos-mcp serve`. Python 3.11 and `uv` are required.

Which macOS versions are supported?

macOS 12 Monterey, 13 Ventura, 14 Sonoma, 15 Sequoia and 26 Tahoe.

How do I run the server as a service?

With `macos-mcp install`: it creates the Launch Agent `~/Library/LaunchAgents/com.macos-mcp.server.plist`. Transport and address are set by flags, for example `--transport sse --host 127.0.0.1 --port 8000`. It is removed with `macos-mcp uninstall`.

How do I protect network mode?

With the `--auth-key` flag for a Bearer header, the `MACOS_MCP_IP_ALLOWLIST` list, TLS through `MACOS_MCP_SSL_CERTFILE` and `MACOS_MCP_SSL_KEYFILE`, and OAuth 2.0 with PKCE.

Do I need a vision model?

No, the server reads the Accessibility tree and works with any LLM. Screenshots add vision when wanted.

Discussion

No questions or reviews yet.

An MCP server for macOS: the agent moves the mouse, types, manages windows and captures the screen when an app has no API

MCP serverBroad access415Repository stars

A Swift MCP server that lets an agent drive any macOS app: click, type and read the interface tree

MCP serverBroad access358Repository stars

MCP server for AppleScript: the agent runs scripts and controls Mac apps, from Notes and Calendar to files

MCP serverBroad access468Repository stars
Official

An MCP server that lets an agent see the screen and control macOS, Windows and Linux: screenshots, clicks, OCR and screen memory

MCP serverBroad access92Repository stars

A macOS CLI and MCP server: screenshots, accessibility-based UI inspection and app control via clicks and typing

MCP serverBroad access5.5KRepository stars

Open Computer Use

open-computer-use

An open MCP server for desktop control: the agent reads app state and clicks, types and scrolls on macOS, Linux and Windows

MCP serverBroad access2.9KRepository stars

README in short

The text presents the server as a bridge between agents and macOS: it lists supported versions, features and installation. Then come permissions, ways to connect to Claude Desktop and other clients, a tool table, limitations, a security section with token, IP, TLS and OAuth, environment variables and telemetry.

README badge

Report a problem