Provides web browsing tools via Chrome + Playwright, using the real Chrome installation with a dedicated data directory to avoid conflicts with the user's running Chrome. Maximum stealth: suppresses Playwright automation signals, injects realistic browser fingerprints.
Chrome MCP server has 10 tools with basic schemas and descriptions, but significant gaps limit production readiness. All tools have descriptions (10-50 chars, mostly adequate) and input schemas with types. However, parameter descriptions are sparse or missing context. Output schemas are undocumented, LLMs cannot predict return structure. Error handling is absent; no recovery guidance. Tool composition is reasonable (navigate, click, fill_input chain well), but missing pagination for list-like tools (get_links). No tool annotations (readOnlyHint/destructiveHint) despite clear risk distinctions. Security concerns: no mention of secret injection or permission gates. Naming is verb-forward and clear (navigate, search_google, extract_content), following baseline conventions.
Click an element by CSS selector or text content.
Extract structured content from the current page using CSS selectors or XPath.
Fill a form field with text.
List all links on the current page with their URLs and text.
Get current URL, title, and meta information about the page.
Navigate back to the previous page.
Navigate to a URL and return the page's text content.
Output schemas completely undocumented. LLMs cannot predict return structure (fields, types, nesting). navigate() returns 'page's text content' but no schema for what that contains. search_google() returns 'results' but structure unknown. Blocks downstream tool chaining and forces LLM to guess field names.
No error handling or recovery guidance. Tools fail silently or with generic exceptions. No actionable error messages (e.g., 'URL must start with http:// or https://' is stated but no error response documented). Agents cannot self-correct or retry intelligently.
Missing tool annotations (readOnlyHint, destructiveHint, idempotentHint). Tools clearly split into READ (navigate, screenshot, get_links) and WRITE (click, fill_input, scroll, go_back), but no annotations to guide agent planning or safety checks. Agents cannot distinguish safe from risky operations.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 66 | <=2025-11-25 | v2 |
Take a screenshot of the current page and return it as base64-encoded PNG.
Scroll the page by a specified amount or to a specific element.
Perform a Google search and return the results (titles, URLs, snippets).
get_links lacks pagination. Accepts limit (default 50) but no offset/cursor or total_count in response. If a page has 500 links, agent cannot iterate. Violates pattern:paginated-result baseline (100% of A+ tools support pagination for list-like results).
Parameter descriptions lack actionable constraints. 'wait_for' accepts 'domcontentloaded', 'load', or 'networkidle' but description does not explain when to use each (e.g., 'use networkidle for SPAs, domcontentloaded for static pages'). 'selector' in extract_content does not specify CSS vs XPath precedence. Ambiguity forces LLM guessing.