Computer-use MCP server for Linux Mint X11 desktops
Two tools with well-structured schemas and clear error handling, but descriptions lack depth and parameter documentation is incomplete. desktop_observe has a complex oneOf schema with good type coverage; desktop_act similarly uses oneOf for action variants. Both tools define error cases with actionable messages (STALE_SNAPSHOT, UNSUPPORTED_KEY, etc.). However, descriptions are terse (under 100 chars), parameter descriptions are absent or minimal, and output schemas lack explicit documentation. The server follows good practices for input validation and error classification but falls short of LLM-optimized descriptions that explain WHEN and WHY to use each tool.
Execute one validated desktop input action.
Capture a JPEG observation and return snapshot-relative metadata.
Tool descriptions are too brief (under 100 chars). 'Capture a JPEG observation and return snapshot-relative metadata' lacks context on WHEN to call this tool, what metadata is returned, or how it fits into a workflow. LLMs need 50-200 char descriptions explaining purpose, preconditions, and output structure.
Parameter descriptions are missing or minimal. The 'target' parameter in desktop_observe has a description in the schema ('Observation target (desktop, active_window, or output)') but lacks guidance on when to use each variant or what each returns. The 'action' parameter in desktop_act similarly lacks per-variant guidance. LLMs cannot infer parameter semantics from names alone.
Output schema is not explicitly documented. desktop_observe returns CallToolResult with TextContent and ImageContent plus structured_content (metadata.model_dump()), but the server code does not document what fields are in metadata or what the agent should expect. desktop_act returns ActionResult() with no visible schema. LLMs need to know return field names and types to plan downstream calls.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2025-06-18+ | v2 |
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. desktop_observe is marked READ_ONLY in the metadata but not via tool annotations in the schema. desktop_act is marked WRITE but lacks destructiveHint annotation. Modern MCP servers should declare these hints so agents understand retry safety and side effects.
Error messages are actionable but lack recovery guidance for some cases. 'STALE_SNAPSHOT: observe again and use the new snapshot_id' is good, but 'UNSUPPORTED_KEY' and 'UNSUPPORTED_TEXT_INPUT' do not suggest what keys/text ARE supported or how to discover them. Agents need to know: can I retry? Should I ask the user? What are valid alternatives?