MCP server providing browser automation (CDP) and desktop automation (Sikuli) tools for AI-driven UI interaction
This server has 23 tools with significant quality gaps. Most tools lack proper input schemas (many inferred from test files, not explicit registration). Descriptions are present but generic and often under 50 chars. No output schemas documented. Critical issues: duplicate tool names (two 'click' tools with different signatures), no error handling guidance, no parameter validation rules, and no tool annotations. The server appears to be a test harness rather than a production MCP implementation. Tools are scattered across test and main files with inconsistent registration patterns.
Capture the current screen as a base64 PNG image
Click on a page element described in plain English
Click on a screen element matching the target (PFRML)
Double-click on a screen element matching the target (PFRML)
Drag from source to destination (both PFRML targets)
Execute a high-level natural-language browser instruction (Ollama plans and executes all required steps)
Check if a target exists on screen within a timeout
Duplicate tool names: two 'click' tools with different signatures (browser-based vs PFRML image-based). LLMs cannot disambiguate and will select the wrong one. Rename to 'click_element' and 'click_image' or similar.
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract structured data. Document what each tool returns (e.g., take_screenshot returns {image_base64: string}, get_page_source returns {html: string}).
Most tool descriptions are under 50 characters and lack context. E.g., 'Get the visible text content of a page element described in plain English' (67 chars) does not explain WHEN to use this vs other text extraction methods or what format the result is in.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | <=2025-11-25 | v2 |
Get the current page URL
Get the full HTML source of the current page
Get the current page title
Get the visible text content of a page element described in plain English
Navigate back in browser history
Navigate forward in browser history
Hover the mouse over a screen element matching the target (PFRML)
Navigate the browser to a URL
Press a keyboard key by name
Refresh the current page
Scroll on a screen element matching the target
Set the directory for saving screenshots and result artifacts
Capture a screenshot of the current page (returns base64 PNG)
Type text into a page element described in plain English
Type text at the current cursor position
Wait for a target to disappear from the screen
No error handling guidance. Tools do not document what happens on failure (e.g., element not found, timeout, invalid URL). LLMs have no recovery path and will retry blindly.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe reads from destructive writes. Tools like 'navigate', 'click', 'type' should be marked destructive; 'get_*' should be marked readOnly.