mcp-mac-control
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| MACCTL_MODE | No | Cap which tools are registered: 'read-only', 'read-write', or 'admin'. Default: 'admin'. | admin |
| MACCTL_CONFIRM | No | Set to 'true' to require human approval for destructive operations. Default: 'false'. | false |
| MACCTL_DRY_RUN | No | Set to 'true' to validate and log writes without executing. Default: 'false'. | false |
| MACCTL_AUDIT_LOG | No | Set to 'false' to disable JSON audit logging to stderr. Default: 'true'. | true |
| MACCTL_SAFE_MODE | No | Set to 'true' to enable read-only safe mode (safe-by-default). Default: 'false'. | false |
| MACCTL_ALLOW_EXEC | No | Enable shell / AppleScript / kill commands. Set to 'false' to disable. Default: 'true'. | true |
| MACCTL_ALLOW_INPUT | No | Enable GUI input (mouse/keyboard). Set to 'false' to disable. Default: 'true'. | true |
| MACCTL_ALLOW_DELETE | No | Enable delete to Trash. Set to 'false' to disable. Default: 'true'. | true |
| MACCTL_PATH_ALLOWLIST | No | Comma-separated list of root paths to which file operations are confined. Default: empty (anywhere). | |
| MACCTL_PROTECTED_PATHS | No | Comma-separated list of roots that are readable but never modified or deleted. Default: empty. | |
| MACCTL_COMMAND_ALLOWLIST | No | Comma-separated list of programs allowed for run_command. Default: empty (any command). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| system_infoA | Report macOS version, hardware, memory, load, uptime and the current user. |
| list_directoryA | List the entries (name, type, size) of a directory. Honours the path allowlist. |
| read_fileA | Read a text file's contents (capped at MACCTL_MAX_FILE_BYTES). Honours the path allowlist. |
| list_processesA | List running processes (pid, cpu%, mem%, command), busiest first. |
| get_clipboardA | Return the current text contents of the macOS clipboard. |
| list_appsA | List the names of currently running (non-background) applications. |
| get_frontmost_appA | Return the name of the frontmost (active) application. |
| screenshotA | Capture the screen and return it as a PNG image. Needs Screen Recording permission for the host process. |
| get_screen_sizeA | Return the main screen size in points (width, height) — use it to reason about click coordinates. |
| list_windowsA | List the windows of the frontmost app with each window's name, position and size — so you can click or drag reliably. Needs Accessibility permission for the host process. |
| write_fileA | Create or overwrite a text file. Honours the path allowlist, refuses protected paths, and asks for confirmation before overwriting an existing file. |
| set_clipboardA | Replace the macOS clipboard contents with the given text. |
| notifyA | Post a macOS notification with a title and message. |
| openA | Open a file/folder path or URL with its default handler, or launch an app by name (set app=true). |
| activate_appA | Bring an application to the front (launching it if needed) so subsequent clicks/keystrokes go to it. Give the app's name, e.g. 'Safari', 'Notes'. |
| quit_appA | Ask an application to quit (graceful). Unsaved changes may prompt inside the app. Give the app's name. |
| run_commandA | Run a program with arguments (no shell — pass argv, not a command line). Requires admin mode AND MACCTL_ALLOW_EXEC=true; the program must be in MACCTL_COMMAND_ALLOWLIST when that is set. For a shell pipeline, run command="zsh", args=["-c","…"]. |
| run_applescriptA | Run an AppleScript (or JavaScript for Automation) snippet via osascript. Powerful — can drive any scriptable app. Requires admin mode AND MACCTL_ALLOW_EXEC=true. |
| delete_pathA | Move a file or folder to the Trash (recoverable). Requires admin mode AND MACCTL_ALLOW_DELETE=true. Honours the path allowlist and refuses protected paths. |
| kill_processA | Send a signal (default SIGTERM) to a process by pid. Requires admin mode AND MACCTL_ALLOW_EXEC=true. |
| type_textA | Type literal text into the frontmost app (keystrokes). Requires admin mode AND MACCTL_ALLOW_INPUT=true, plus Accessibility permission for the host process. |
| key_pressA | Press a key (e.g. return, tab, escape, arrows, or a character) with optional modifiers (command/option/control/shift). Requires admin mode AND MACCTL_ALLOW_INPUT=true. |
| clickA | Click at screen coordinates. Requires admin mode AND MACCTL_ALLOW_INPUT=true, and the |
| move_mouseA | Move the cursor to screen coordinates. Requires admin mode AND MACCTL_ALLOW_INPUT=true (cliclick). |
| dragA | Press at (x1,y1), move to (x2,y2), and release — a human-style drag (select text, move a window, drag a file). Requires admin mode AND MACCTL_ALLOW_INPUT=true, and the |
| scrollA | Scroll the mouse wheel in a direction by a number of lines (over whatever is under the cursor / frontmost). Requires admin mode AND MACCTL_ALLOW_INPUT=true. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 26 tools
Every tool targets a distinct action or resource: clipboard get/set, file read/write/delete, process list/kill, app management, UI input (click/drag/scroll/type/key), and system introspection. No two tools have overlapping purposes; even mouse actions are separated into move, click, drag, and scroll.
Tool names uniformly use snake_case and mostly follow a verb_noun pattern (e.g., list_directory, read_file, activate_app). A few exceptions like system_info and screenshot are noun-like but still stylistically consistent and predictable.
26 tools is on the higher end, but the server's broad purpose of controlling macOS justifies the count. The tool set covers file, process, app, UI, clipboard, and system domains without excessive redundancy, though it is heavier than typical servers.
The surface covers core macOS control operations: file lifecycle, process management, app control, clipboard, UI automation, and system info. Minor gaps like file rename/move or network configuration exist, but agents can work around them with run_command or AppleScript.