Standalone MCP server providing native macOS computer control for any MCP-compatible agent
Strong tool definitions with comprehensive schemas and descriptions. All 24 tools have explicit names, descriptions (100-300 chars typical), and detailed input schemas with typed parameters. Naming follows verb_noun convention (request_access, left_click, screenshot). Parameters are well-described with coordinate systems, modifiers, and constraints clearly documented. Key strengths: permission model is explicit, error conditions documented (e.g., 'frontmost application must be in allowlist'), coordinate system is consistent. Gaps: no output schemas documented, no pagination/batching guidance, error recovery hints sparse, no tool annotations (readOnlyHint/destructiveHint). Computer_batch tool lacks per-action error handling detail.
Execute multiple computer use actions in a single batch. Each action is executed sequentially. If any action fails, the batch stops and returns the error. Useful for complex multi-step interactions.
Get the current cursor position in screen coordinates.
Double-click at the given coordinates. Selects a word in most text editors. The frontmost application must be in the session allowlist at the time of this call, or this tool returns an error and does nothing.
Hold down a key or key combination for a specified duration. Useful for triggering long-press behaviors or continuous actions. The frontmost application must be in the session allowlist at the time of this call, or this tool returns an error and does nothing.
Send one or more key presses. Supports key names like "return", "tab", "space", "escape", "delete", "backspace", "up", "down", "left", "right", "home", "end", "pageup", "pagedown", "f1"-"f20", and modifier combinations like "shift+a", "ctrl+c", "cmd+q". The frontmost application must be in the session allowlist at the time of this call, or this tool returns an error and does nothing.
No output schemas documented. Tools return results but LLMs cannot plan downstream calls without knowing response structure (e.g., screenshot returns image path, list_granted_applications returns granted/denied app lists). Agents must infer structure from descriptions.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools are marked with Risk field in metadata but MCP spec expects structured annotations. Agents cannot automatically determine safety/idempotency without reading descriptions.
computer_batch tool lacks per-action error handling detail. Description says 'If any action fails, the batch stops' but does not specify whether partial results are returned or how LLM should recover. No guidance on retryability or compensation.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Left-click at the given coordinates. The frontmost application must be in the session allowlist at the time of this call, or this tool returns an error and does nothing.
Press, move to target, and release. The frontmost application must be in the session allowlist at the time of this call, or this tool returns an error and does nothing.
Press the left mouse button without releasing. Use with left_mouse_up to implement custom drag sequences. The frontmost application must be in the session allowlist at the time of this call, or this tool returns an error and does nothing.
Release the left mouse button. Use with left_mouse_down to implement custom drag sequences. The frontmost application must be in the session allowlist at the time of this call, or this tool returns an error and does nothing.
List the applications currently granted for this session, along with the current permission state (screenshot filtering, clipboard access, system key combos).
Middle-click (scroll-wheel click) at the given coordinates. The frontmost application must be in the session allowlist at the time of this call, or this tool returns an error and does nothing.
Move the cursor to the given coordinates without clicking. Does not require the frontmost app to be in the allowlist.
Open an application by name or bundle identifier. Does not require the app to be in the session allowlist — this tool can launch any app. After launching, you typically need to call request_access to control it.
Read the current contents of the user's clipboard. Requires clipboard read permission granted via request_access.
Request user permission to control a set of applications for this session. Must be called before any other tool in this server. The user sees a single dialog listing all requested apps and either allows the whole set or denies it. Call this again mid-session to add more apps; previously granted apps remain granted. Returns the granted apps, denied apps, and screenshot filtering capability.
Right-click at the given coordinates. Opens a context menu in most applications. The frontmost application must be in the session allowlist at the time of this call, or this tool returns an error and does nothing.
Take a screenshot of the primary display. Applications not in the session allowlist are excluded at the compositor level — only granted apps and the desktop are visible. Returns an error if the allowlist is empty. The returned image is what subsequent click coordinates are relative to.
Scroll in the given direction by the given amount. Positive amounts scroll down/right, negative amounts scroll up/left. The frontmost application must be in the session allowlist at the time of this call, or this tool returns an error and does nothing.
Switch which monitor subsequent screenshots capture. Use this when the application you need is on a different monitor than the one shown. The screenshot tool tells you which monitor it captured and lists other attached monitors by name — pass one of those names here. After switching, call screenshot to see the new monitor. Pass "auto" to return to automatic monitor selection.
Triple-click at the given coordinates. Selects a line in most text editors. The frontmost application must be in the session allowlist at the time of this call, or this tool returns an error and does nothing.
Type text into the frontmost application. Supports Unicode. Multi-line text uses the clipboard fast path if clipboard write permission is granted, otherwise types character-by-character. The frontmost application must be in the session allowlist at the time of this call, or this tool returns an error and does nothing.
Wait for a specified number of seconds. Useful for allowing time for UI updates, animations, or network requests to complete.
Write text to the user's clipboard. Requires clipboard write permission granted via request_access.
Take a higher-resolution screenshot of a specific region of the last full-screen screenshot. Use this liberally to inspect small text, button labels, or fine UI details that are hard to read in the downsampled full-screen image. IMPORTANT: Coordinates in subsequent click calls always refer to the full-screen screenshot, never the zoomed image. This tool is read-only for inspecting detail.
Permission model requires explicit request_access call before any action, but no guidance on what happens if agent forgets. Error messages should suggest 'Call request_access first' to guide recovery.
Coordinate parameters use arrays [x, y] but no validation constraints (min/max pixel bounds). LLMs may pass out-of-bounds coordinates. Should document expected screen resolution or bounds.