MCP server - Chrome browser automation with stealth mode
Chrome-mcp has 10 tools with basic naming (verb_noun pattern) and descriptions present, but significant quality gaps. All tools lack documented output schemas, critical for LLM planning. Parameter descriptions are minimal (1-2 sentences). No error handling guidance, no recovery patterns, no pagination support. Security features (stealth mode, injection defense) are implemented but not surfaced in tool descriptions. Tool descriptions average ~80 chars, below the 194-char baseline for A+ tools. Schemas are present but sparse: most parameters lack type constraints (e.g., chrome_evaluate's 'expression' is a bare string with no format guidance). No idempotency markers, no confirmation patterns for destructive ops (chrome_close, chrome_click). The server implements sophisticated anti-injection logic but does not document it in tool descriptions, leaving LLMs unaware of constraints.
Click an element on the page using a CSS selector. Enforces stealth mode if needed.
Close the browser instance and clean up resources.
Execute JavaScript in the page context. Read-only on stealth-only domains (LinkedIn). Enforces stealth mode if needed.
Launch a Chrome browser instance, optionally connecting to an existing CDP endpoint. Returns browser metadata and context info.
Navigate to a URL in the current page. Enforces stealth mode on stealth-only domains (LinkedIn). Returns page title and URL.
Take a screenshot of the current page and return as base64-encoded PNG. Enforces stealth mode if needed.
Scroll the page by a specified amount. Enforces stealth mode if needed.
No output schemas documented. LLMs cannot plan downstream calls or extract required fields. chrome_snapshot, chrome_screenshot, chrome_launch return complex objects but structure is undocumented.
Parameter descriptions are minimal (1-2 sentences) and lack format guidance. 'expression' in chrome_evaluate has no hint about JavaScript syntax, stealth-mode read-only constraints, or escape-sequence rejection. Baseline is 72 chars per param; most here are 30-50 chars.
No error handling guidance. Tools do not document what happens on failure (e.g., chrome_navigate on invalid URL, chrome_click on missing selector, chrome_evaluate on syntax error). LLMs have no recovery path.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 55 | 2026-07-28+ | v2 |
Switch between 'fast' and 'stealth' modes. Stealth mode is enforced on LinkedIn domains regardless of this setting.
Get a structured snapshot of the current page (DOM tree, interactive elements, text content). Enforces stealth mode if needed.
Type text into a focused element. Enforces stealth mode if needed.
Destructive operations (chrome_close, chrome_click, chrome_type) lack confirmation or dry-run patterns. An agent could accidentally close the browser or submit a form without explicit user approval.
Stealth-mode enforcement and injection-defense logic are implemented in code but not surfaced in tool descriptions. LLMs are unaware that chrome_evaluate is read-only on LinkedIn or that certain JavaScript patterns are blocked. This creates silent failures.