Playwright Tools for MCP - A Model Context Protocol server that provides browser automation capabilities using Playwright
Playwright MCP has 25 tools with significant quality gaps. Tool naming is inconsistent (browser_click appears twice with different signatures; browser_drag, browser_type duplicated). Descriptions are minimal (10-50 chars, well below the 194-char baseline). Most parameters lack descriptions entirely, e.g., browser_navigate's 'url' param has a description, but browser_press_key's 'key' param is described only as 'Name of the key to press or a character to generate, such as `ArrowLeft` or `a`' (contains example values, violating pattern:tool-description). No output schemas documented. Error handling is absent, tools return raw error strings with no recovery guidance. Duplicate tool names (browser_click #11 vs #19, browser_drag #12 vs #20, browser_type #14 vs #21) indicate tool registration issues. Parameters like 'ref' (element reference) lack type constraints and validation rules. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels assigned.
Choose one or multiple files to upload
Perform click on a web page
Click left mouse button
Close the page
Close a tab
Perform drag and drop between two elements
Drag left mouse button
Go back to the previous page
Duplicate tool names: browser_click, browser_drag, and browser_type each registered twice with different signatures. This breaks tool composition and forces LLMs to guess which variant to call.
Descriptions are too short (10-50 chars vs 194-char baseline). Most lack context for when/why to use the tool. E.g., 'Go back to the previous page' does not explain prerequisites or return value.
Parameter descriptions missing or contain example values (e.g., browser_press_key 'key' param shows 'ArrowLeft' or 'a' as examples). LLMs reuse example values literally, causing failures.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 54 | 2026-07-28+ | v2 |
Go forward to the next page
Hover over element on page
Install the browser specified in the config. Call this if you get an error about the browser not being installed.
List browser tabs
Move mouse to a given position
Navigate to a URL
Open a new tab
Press a key on the keyboard
Save page as PDF
Take a screenshot of the current page
Select an option in a dropdown
Select a tab by index
Capture accessibility snapshot of the current page, this is better than screenshot
Take a screenshot of the current page. You can't perform actions based on the screenshot, use browser_snapshot for actions.
Type text into editable element
Type text
Wait for a specified time in seconds
No output schemas documented. LLMs cannot plan downstream tool calls or extract required fields (e.g., what does browser_snapshot return? What fields are in the response?).
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk levels. browser_close and browser_close_tab are DESTRUCTIVE but lack annotations to warn agents.