macOS MCP MCP Server
Lightweight open-source MCP server for macOS computer use, exposing keyboard, mouse, window, shell, and accessibility tools to AI agents.
macOS-MCP is a lightweight, open-source Model Context Protocol server that bridges AI agents and macOS, allowing models like Claude, GPT, and Gemini to drive the desktop without computer vision or specialized vision models. It uses the native macOS Accessibility API to introspect UI state, click, type, manage windows, and run shell or AppleScript commands, giving any MCP-compatible client full desktop automation capabilities.
The server exposes a focused tool surface covering pointer input (Click, Move, Scroll), keyboard input (Type, Shortcut), application and window control (App), shell execution including AppleScript (Shell), webpage extraction to Markdown (Scrape), and timed pauses (Wait). It is designed to be small, dependency-light, and run locally via uvx, with optional background-service installation.
Beyond the basic stdio transport for local clients, macOS-MCP supports SSE and Streamable HTTP transports for remote access, with bearer token authentication, IP allowlisting, TLS, and OAuth 2.0 + PKCE for compatible clients. The project is MIT licensed and runs on macOS 12 (Monterey) through macOS 15 (Sequoia).
Tools
| Tool | Description |
|---|---|
Click |
Click at screen coordinates with left, right, or double-click support. |
Type |
Input text into the focused field, optionally clearing existing content first. |
Scroll |
Perform vertical or horizontal scrolling. |
Move |
Move the pointer or perform a drag operation. |
Shortcut |
Send keyboard shortcuts such as Cmd+C or Cmd+Tab. |
App |
Launch applications, manage windows, and switch between apps. |
Shell |
Execute shell commands and AppleScript. |
Scrape |
Convert webpage content to Markdown for the model to read. |
Wait |
Pause execution for a specified duration. |
Prerequisites
- macOS 12 (Monterey) or later
- Python 3.11+
- UV package manager (
uvx) - Accessibility and Screen Recording permissions granted to your terminal, Python, and UV in System Settings, Privacy and Security
Install and run
Run directly via uvx:
uvx macos-mcp
Or install as a background service:
macos-mcp install
Claude Desktop config
Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"macos-mcp": {
"command": "uvx",
"args": ["macos-mcp"]
}
}
}
Transport options
- stdio (default):
--transport stdiofor local MCP clients - SSE:
--transport sse --host HOST --port PORT - Streamable HTTP:
--transport streamable-http --host HOST --port PORT
Optional env vars and config
Bearer token auth and other settings can be passed via flags, env vars, or ~/.macos-mcp/config.toml:
MACOS_MCP_AUTH_KEY: bearer token for HTTP requestsMACOS_MCP_IP_ALLOWLIST: comma separated IP/CIDR allowlistMACOS_MCP_SSL_CERTFILEandMACOS_MCP_SSL_KEYFILE: TLS cert and keyANONYMIZED_TELEMETRY: set to false to disable telemetry
Security warning
macOS-MCP runs with full Accessibility permissions and executes real, unsandboxed system operations. Use it only in isolated environments with disposable data, never on production or compliance-regulated systems (HIPAA, PCI, etc.).
- Automate repetitive desktop workflows like opening apps, navigating menus, and filling forms via natural language prompts
- Drive GUI applications that lack APIs by combining the Click, Type, and Shortcut tools to script multi-step flows
- Run shell commands or AppleScript from an AI agent for system maintenance, scripted Finder operations, or app scripting
- Scrape web pages to Markdown and feed them into the same agent loop that controls the local desktop
- Expose a Mac as a remote computer-use endpoint to AI agents via Streamable HTTP with bearer token auth and IP allowlisting
- "Open Safari, go to news.ycombinator.com, and scrape the front page to Markdown."
- "Switch to Slack, find the channel #engineering, and type a status update about today's deploy."
- "Run
brew outdatedin the shell and summarize which packages need updating." - "Take the active Finder window, create a folder named Archive-2026, and move all PDFs older than a year into it using AppleScript."
- "Press Cmd+Tab to switch to Notes and append today's meeting summary to the topmost note."
- Vision-free automation: uses the macOS Accessibility API instead of screenshots, so it works with any LLM regardless of vision support
- Small, focused tool surface (nine tools) that is easy to reason about for both humans and agents
- Multiple transports (stdio, SSE, Streamable HTTP) with real security features: bearer token auth, IP allowlisting, TLS, and OAuth 2.0 + PKCE
- Single-command install via
uvx macos-mcpwith optional background service mode
- macOS only and requires broad Accessibility plus Screen Recording permissions
- Runs unsandboxed and can perform irreversible system actions; the README explicitly warns against production or compliance-regulated use
- Community-maintained project (CursorTouch org), not an official Apple or Anthropic server
- steipete/macos-automator-mcp: MCP server focused on running AppleScript and JXA
- mediar-ai/mcp-server-macos-use: Swift-based macOS control server using accessibility APIs
- mattt/iMCP: macOS app exposing Messages, Contacts, Reminders, and other personal data over MCP