MCP server that connects to your real running browser via CDP
Browser-MCP has 13 tools with complete input schemas and descriptions, but quality is inconsistent. Tool names follow verb_noun convention (navigate, get_text, click, type, etc.), which is good. However, descriptions are terse (avg ~40 chars, well below the 194-char baseline), lacking context on WHEN to use each tool or dependencies between them. Parameter descriptions are sparse, many lack guidance on expected formats, ranges, or constraints. Output schemas are not documented anywhere in the source. Error handling is absent from descriptions. The server lacks pagination guidance for tools like get_html and snapshot that could return large results. No mention of idempotency, retryability, or side effects in tool descriptions.
Click an element by CSS selector or x/y coordinates
Run JavaScript in the page and return the result
Get innerHTML of a CSS selector
Get visible text content of the current page (lean, no markup)
List all open browser tabs with index, URL, and title
Repeatedly click a selector until it disappears (for infinite scroll / load-more buttons)
Go to a URL in the real browser
Output schemas not documented. LLMs cannot plan downstream calls or extract required fields (e.g., what does navigate() return? Does screenshot() return coordinates?). Every tool needs a documented return type.
Descriptions are too terse (avg 40 chars vs 194-char baseline). Missing WHEN to use each tool, dependencies, and side effects. E.g., 'evaluate' lacks warning that it runs arbitrary JS and may have side effects. 'navigate' doesn't explain if it waits for page load.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | 2026-07-28+ | v2 |
Open a new browser tab, optionally navigating to a URL
Take a screenshot and return file path with viewport dimensions
Get page accessibility tree with roles, names, values, and states
Switch the active tab by index
Type text into an element
Wait for a CSS selector or text to appear on the page
Parameter descriptions lack format/constraint guidance. 'selector' parameter appears in 6 tools but never explains CSS selector syntax, escaping rules, or what happens if selector matches 0 or 100+ elements. 'timeout' in wait() lacks units clarification (ms assumed but not stated).
No error handling guidance. Descriptions do not explain what happens on failure (selector not found, timeout, navigation blocked, JS error in evaluate). LLMs have no recovery path.
Idempotency and side effects not declared. Tools like 'click', 'type', 'navigate', 'load_all' modify browser state but descriptions don't warn LLMs about retry risks or whether operations are safe to repeat.