mcp-macos
Allows an agent to observe and operate a macOS system: read files, list processes and apps, take screenshots, write files, set the clipboard, post notifications, open items, and with admin opt-ins run commands/AppleScript, delete to Trash, kill processes, and drive the GUI.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-macos show me the top 5 processes by CPU usage"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
mcp-macos
A safe-by-default Model Context Protocol server that lets an agent observe and operate a Mac — read files, list processes and apps, take screenshots (read-only); write files, set the clipboard, post notifications, open things (read-write); and, behind explicit opt-ins, run commands / AppleScript, delete to Trash, kill processes and drive the GUI (admin).
It starts read-only. Every high-impact power needs both admin mode and its own flag, and the most dangerous ones ask the human to approve each call. Part of the dockndevai MCP server suite — one governance model across all of them.
Pure Node +
osascript/screencapture— no native add-ons. macOS only.
What it gives an agent
The server starts read-only (see Safe by default); higher-capability tools are only registered when you raise the mode.
Tool | For | Needs mode |
| macOS version, hardware, memory, load, uptime | read-only |
| browse & read files (path-allowlisted) | read-only |
| running processes by CPU/mem | read-only |
| read the clipboard | read-only |
| running apps; the active one | read-only |
| capture the screen as a PNG | read-only |
| create/overwrite a file (confirms on overwrite) | read-write |
| set clipboard, notify, open a file/URL/app | read-write |
| run a program (argv, no shell) | admin + |
| run AppleScript / JXA | admin + |
| signal a process | admin + |
| move a path to the Trash | admin + |
| drive the GUI | admin + |
Related MCP server: Open Computer Use
Install
npx -y @dockndevai/mcp-macosRequires macOS and Node ≥ 22. click/move_mouse also need cliclick (brew install cliclick).
Configure
{
"mcpServers": {
"macos": {
"command": "npx",
"args": ["-y", "@dockndevai/mcp-macos"],
"env": {
"MACOS_MODE": "read-only"
}
}
}
}See docs/CLIENTS.md for Claude Code / Cursor / Codex / VS Code / Windsurf snippets, and .env.example for every supported variable.
Safe by default
This server can drive an entire Mac, so the access model (enforced by src/security.ts) is deliberately strict — defence in depth, not documentation:
Question | Setting | Default | Notes |
What can it do at all? |
|
|
|
Which paths can it touch? |
| (anywhere) | Comma-separated roots. When set, any file op outside them is refused. |
Which paths are read-only forever? |
| system + secrets |
|
Can it run commands? |
|
| Gates |
Restrict which programs? |
| (any) | When set, |
Can it delete? |
|
| Gates |
Can it drive the GUI? |
|
| Gates |
Preview without doing |
|
| Mutating tools validate + log intent, then return. |
Audit trail |
|
| JSON line to stderr per guarded operation ( |
Interactive confirmation | (automatic) | — |
|
See SECURITY.md.
macOS permissions
The host process (your terminal / MCP client) must be granted, in System Settings → Privacy & Security:
Screen Recording — for
screenshot.Accessibility — for
type_text/key_press/click/move_mouse.Automation (per-app prompts) — for
run_applescriptand app control.Files and Folders / Full Disk Access — to read/write outside the default sandbox.
You'll be prompted the first time each is needed; nothing works around a permission you haven't granted.
Developing
npm install
npm run build
MACOS_MODE=read-only node dist/index.js
# introspect the tool list:
echo '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | node dist/index.jsLicence
MIT
Available Tools
8 toolsget_clipboardRead the clipboardARead-onlyIdempotent
Return the current text contents of the macOS clipboard.
Inputs: no named parameters.
get_frontmost_appFrontmost appARead-onlyIdempotent
Return the name of the frontmost (active) application.
Inputs: no named parameters.
list_appsList running appsARead-onlyIdempotent
List the names of currently running (non-background) applications.
Inputs: no named parameters.
list_directoryList a directoryARead-onlyIdempotent
List the entries (name, type, size) of a directory. Honours the path allowlist.
Inputs: path (required).
list_processesList processesARead-onlyIdempotent
List running processes (pid, cpu%, mem%, command), busiest first.
Inputs: limit, filter.
read_fileRead a fileARead-onlyIdempotent
Read a text file's contents (capped at MACOS_MAX_FILE_BYTES). Honours the path allowlist.
Inputs: path (required).
screenshotScreenshotARead-onlyIdempotent
Capture the screen and return it as a PNG image. Needs Screen Recording permission for the host process.
Inputs: no named parameters.
system_infoSystem infoARead-onlyIdempotent
Report macOS version, hardware, memory, load, uptime and the current user.
Inputs: no named parameters.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 8 tools
Every tool has a clearly distinct purpose: system summary, directory listing, file reading, process listing, clipboard access, app listing, active app lookup, and screen capture. Even related tools like list_apps and get_frontmost_app are cleanly separated by scope.
Most tools follow a clear list_* or get_* verb pattern, with read_file as another verb_noun. system_info and screenshot break the pattern, but the naming remains readable and mostly predictable.
Eight tools is well-scoped for a macOS observation/utility server. Each tool covers a distinct capability and none feel redundant or excessive.
The server covers common macOS inspection needs: system status, file browsing, process listing, clipboard, apps, and screen capture. It is intentionally read-only, so missing write operations are not glaring gaps, though a few extensions like file metadata or clipboard image support could be added.
Maintenance
Related MCP Connectors
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Connect AI assistants to your approved computer for files, commands, browser and desktop tasks.
- DNS-DATA RemoteDeprecatedcom.dns-data
Connect AI assistants to authorized Windows and macOS devices for files, commands, and management.
Runtime permission, approval, and audit layer for AI agent tool execution.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to automate macOS desktop tasks including mouse control, keyboard input, screenshots, window management, and UI interaction.10 npm415MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to observe and control the user's live desktop by listing apps, reading accessibility trees, and performing clicks, typing, scrolling, dragging, and other input actions with per-action approvals and local audit archives.1MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI assistants to inspect and control macOS apps via accessibility trees, screenshots, OCR, and input simulation, with a visible pointer.MIT
- AlicenseNot gradedqualityBmaintenanceSecurely control your Mac from AI assistants using native mouse, keyboard, screenshot, and shell tools.343MIT