MCP server that provides computer use tools for interacting with macOS apps by performing UI actions including clicking, scrolling, typing, and taking screenshots.
Tools have complete input schemas with types and descriptions, and most descriptions are present and actionable. However, descriptions are often terse (many under 100 chars), parameter descriptions lack detail on constraints and formats, and output schemas are not documented. Error handling is minimal, no recovery guidance or actionable error messages visible in the code. Tool composition is sound (each does one thing), but the server lacks pagination support, result limits, and chaining IDs in responses. Security is reasonable (no secrets in params), but no audit logging or permission gates are evident.
Click an element by index or pixel coordinates from screenshot. This tool is part of plugin `Computer Use`.
Drag from one point to another using pixel coordinates. This tool is part of plugin `Computer Use`.
Start an app use session if needed, then get the state of the app's key window and return a screenshot and accessibility tree. This must be called once per assistant turn before interacting with the app. This tool is part of plugin `Computer Use`.
List the apps on this computer. Returns the set of apps that are currently running, as well as any that have been used in the last 14 days, including details on usage frequency. This tool is part of plugin `Computer Use`.
Invoke a secondary accessibility action exposed by an element. This tool is part of plugin `Computer Use`.
Press a key or key-combination on the keyboard, including modifier and navigation keys. - This supports xdotool's `key` syntax. - Examples: "a", "Return", "Tab", "ctrl+c", "Control_L+Shift_L+period", "Up", "KP_0" (for the numpad 0 key). Windows/Meta key chords are rejected. This tool is part of plugin `Computer Use`.
Output schemas not documented. LLMs cannot infer what fields to expect from tool responses, forcing them to guess at downstream data extraction and chaining.
Parameter descriptions lack constraint details. E.g., 'click_method' lists enum values in description but no explanation of when to use each; 'text_limit' accepts 'max' but no guidance on default behavior or performance implications.
No error handling guidance in code. ComputerUseError.message() returns raw strings with no recovery hints. LLMs receive 'Window-targeted actions are not supported yet on macOS' but no suggestion for what to do instead.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 67 | 2026-07-28+ | v2 |
Scroll an element in a direction by a number of pages, or scroll by pixel deltas from a window-relative coordinate (official window2 mode: pass x/y plus scrollX/scrollY; negative scrollY scrolls up, negative scrollX scrolls left; do not pass element_index in this mode). This tool is part of plugin `Computer Use`.
Set the value of a settable accessibility element. This tool is part of plugin `Computer Use`.
Type literal text using keyboard input. This tool is part of plugin `Computer Use`.
Tool descriptions are terse and lack context on when to use each tool. E.g., 'drag' is 11 words; 'perform_secondary_action' lacks examples of what secondary actions are available. Descriptions should be 50 - 200 chars with WHEN/WHY guidance.
No pagination or result limits documented. list_apps returns all apps without limit or cursor; get_app_state accepts max_tree_nodes but no guidance on performance trade-offs or recommended defaults.