MCP server that launches headful Chromium with an unpacked Chrome extension so AI assistants can screenshot, click, and read console logs.
Server has 5 tools with complete input schemas and descriptions. Naming follows verb_noun convention (launch_browser, take_extension_screenshot, click_element, get_browser_logs, close_browser). Descriptions are present and adequate (60-90 chars each). However, output schemas are not documented, LLMs cannot predict return structure. Parameters lack type constraints (e.g., selector accepts any string; no validation guidance). Error handling is minimal, no recovery guidance or actionable error messages. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. Missing parameter descriptions for some fields (e.g., 'timeout' lacks guidance on when to increase it). Overall solid foundation but lacks production-grade polish.
Clicks a targeted element on the page using a standard CSS selector.
Closes the current running browser session cleanly.
Retrieves all captured console logs (both webpage logs and background content script logs) since launch.
Launches a headful Chrome browser with a specified unpacked Chrome extension loaded.
Takes a screenshot of the active browser view and saves it to your workspace.
Output schemas not documented. LLMs cannot predict return structure (e.g., what fields does launch_browser return? Is it success/error only, or does it include browser_id?). This forces agents to guess and risks failed downstream tool calls.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools have clear risk levels (launch_browser=WRITE, close_browser=REVERSIBLE, get_browser_logs=READ_ONLY) but LLMs cannot see them in the schema. Agents may retry destructive operations or misclassify tool safety.
Error handling lacks recovery guidance. Code throws generic errors ('Extension path does not exist', 'Missing manifest.json') with no actionable next steps. LLMs cannot self-correct, they need hints like 'Try search_extensions() to find available paths' or 'Ensure manifest.json is in the root folder.'
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Parameter descriptions lack constraint guidance. 'selector' in click_element accepts any string but should document CSS selector syntax and common pitfalls (e.g., 'Use CSS selectors like button.submit-btn or #menu-item. Avoid XPath or complex pseudo-selectors.'). 'timeout' lacks guidance on when to increase it.
No pagination or result limits documented. get_browser_logs returns all logs since launch with no limit or streaming. If a long-running browser session accumulates thousands of logs, the response could exhaust context windows. Should document max result size or offer pagination.