MCP server for GNOME desktop automation via D-Bus
Server has 27 tools with consistent naming (verb_noun pattern) and complete input schemas. All tools have descriptions and parameters are typed. However, descriptions are minimal (10-50 chars, well below the 194-char baseline), lack context on WHEN to use tools, and omit error recovery guidance. Output schemas are undocumented, LLMs cannot predict return structure. No tool annotations (readOnlyHint/destructiveHint) despite clear risk stratification. Error handling returns generic strings rather than actionable recovery steps. Composition is sound (single responsibility per tool), but descriptions need expansion to meet production standards.
Switch to a workspace by index (0-based).
Delete all temporary screenshot files.
Close a window.
Focus and raise a window.
Get information about connected monitors.
Get detailed properties of a specific window.
Press a key combination.
Descriptions are minimal (10-50 chars) and lack context. Baseline is 194 chars. Descriptions do not explain WHEN to use each tool, dependencies, or prerequisites. LLMs cannot distinguish between similar tools (e.g., screenshot vs screenshot_window vs screenshot_area) without richer context.
Output schemas are undocumented. Tools return JSON (list_windows, get_window, pick_color) or plain strings, but LLMs have no schema to predict structure. This forces LLMs to guess field names and types, increasing errors in downstream tool calls.
Error handling returns generic error strings (e.g., 'Error: Window not found') without recovery guidance. Per pattern:recovery-guide, errors should tell LLMs what to do next (e.g., 'Window not found. Call list_windows() to see available windows.').
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | 2026-07-28+ | v2 |
Press and release a single key.
List all open windows with their properties.
List all workspaces with their properties.
Maximize a window.
Minimize a window.
Click at screen coordinates. button: 1=left, 2=middle, 3=right.
Double-click at screen coordinates.
Press mouse button down without releasing.
Drag the mouse from one position to another.
Move the mouse to absolute screen coordinates.
Scroll the mouse wheel at screen coordinates.
Release mouse button.
Move and resize a window. Unmaximizes first if needed.
Get the pixel color at screen coordinates.
Take a full screenshot of the entire screen.
Take a screenshot of a rectangular screen region.
Take a screenshot of a specific window.
Type text character by character.
Unmaximize a window.
Unminimize (restore) a window.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools are clearly stratified by risk (READ_ONLY, WRITE, DESTRUCTIVE), but this is not exposed in the schema. LLMs cannot reason about safety or retry semantics without annotations.
Destructive tools (close_window, cleanup_screenshots) lack confirmation or dry-run support. Per pattern:confirmation-request, irreversible operations should support a confirmation step to prevent accidental data loss.