A Selenium-based MCP server for browser automation and web testing
This Selenium server has a functional tool set with complete schemas and basic descriptions, but falls short of production grade due to several critical gaps: (1) descriptions are generic and brief (averaging ~15-25 chars), providing minimal context for LLM tool selection; (2) no output schemas are documented, responses are free-text wrapped in content arrays, making it impossible for agents to parse structured results; (3) no error recovery guidance, all errors return generic 'Error X: <exception>' strings without actionable next steps; (4) parameters lack contextual detail and validation rules (e.g., 'by' parameter accepts free-form strings instead of enum constraints); (5) no mention of idempotency, retryability, or side effects; (6) response truncation (get_page_content returns first 10k chars) is undocumented. The server is usable for basic automation but lacks the refinement needed for reliable LLM integration in production workflows.
clears a text field, handling both basic and sophisticated clearing
Clicks an element
Finds an element
gets the current URL of the page
gets an attribute value from an element
gets the text() of an element
Gets the entire page content (HTML source)
No output schemas documented. All tools return free-text responses wrapped in generic content arrays. LLMs cannot parse structured data or chain tool calls reliably.
Tool descriptions are generic and under 50 characters. Examples: 'Navigates to a URL' (18 chars), 'Finds an element' (15 chars), 'Clicks an element' (16 chars). These provide minimal context for LLM selection and violate the 10 - 1024 character baseline.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 32 | - | v1 |
gets the title of the current page
checks if an element is present in the DOM
Navigates to a URL
Sends keys to an element
Launches browser
waits for page to fully load
Parameter 'by' accepts free-form strings ('id', 'css', 'xpath', 'name', 'tag', 'class') but has no enum constraint. LLMs will hallucinate invalid locator strategies. Schema shows description but no enum type.
No error recovery guidance. All error responses are bare 'Error X: <exception>' strings (e.g., 'Error finding element: <NoSuchElementException>'). LLMs cannot determine if the error is retryable, user-fixable, or fatal.
get_page_content silently truncates results to 10k chars without documenting this limit or offering pagination. Agents have no way to retrieve the full page or know when content is incomplete.
No indication of tool side effects or idempotency. 'click_element', 'send_keys', 'clear_field', and 'start_browser' are destructive operations but lack documentation. Agents cannot distinguish safe-to-retry tools from risky ones.
Parameter 'timeout' defaults to 5000ms (5s) but this default is not documented in descriptions. LLMs cannot predict timeout behavior or adjust it intelligently.