Model Context Protocol server for Playwright browser automation and API testing
28 tools with complete schemas and descriptions, but significant quality gaps. Most tool descriptions are adequate (50-150 chars) but lack actionable context for LLM selection. Parameter descriptions are present but often generic ('CSS selector for element to X'). No output schemas documented. Error handling is absent, tools return raw errors without recovery guidance. Tool naming is mostly verb_noun compliant, but composition issues exist: playwright_navigate, playwright_click, playwright_fill, etc. are tightly coupled to Playwright internals rather than user intent. HTTP tools (GET/POST/PUT/PATCH/DELETE) duplicate browser functionality and lack clear use-case separation. No idempotency guarantees, no pagination for list-like operations, no batch variants. Security: no visible input validation, no rate limiting, no permission gates. Codegen tools (start/end/get/clear_codegen_session) are well-named but lack dependency documentation.
Clear a code generation session without generating a test
End a code generation session and generate the test file
Get information about a code generation session
Assert on a HTTP response that was previously waited for with playwright_expect_response
Click an element on the page
Close the browser and release all resources
Retrieve console logs from the browser with filtering options
No output schemas documented. Tools return results but LLMs cannot plan downstream calls or extract structured data. Violates pattern:tool and pattern:response-shaper.
HTTP tools (playwright_get/post/put/patch/delete) lack clear use-case separation from browser navigation. Descriptions do not explain when to use HTTP tools vs browser interaction. Violates pattern:tool-description and pattern:tool-chain.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 56 | 2026-07-28+ | v2 |
Perform an HTTP DELETE request
Drag an element on the page to a new location
Execute JavaScript in the browser console
Ask Playwright to start waiting for a HTTP response. This tool initiates the wait operation but does not wait for its completion.
fill out an input field
Perform an HTTP GET request
Get all visible HTML from the current page
Get all visible text from the current page
Navigate back to the previous page in browser history
Navigate forward to the next page in browser history
Hover an element on the page
Click an element in an iframe on the page
Navigate to a URL
Perform an HTTP PATCH request
Perform an HTTP POST request
Press a keyboard key on the page
Perform an HTTP PUT request
Save the current page as a PDF file
Take a screenshot of the current page or a specific element
Select an element on the page with Select tag
Start a new code generation session to record Playwright actions
Interaction tools (playwright_click, playwright_fill, playwright_select, playwright_hover) have minimal descriptions (50 chars). No guidance on when to use each, no dependency hints (e.g., 'Call playwright_get_visible_html first to find selectors'). Violates pattern:tool-description.
No error handling guidance. Tools return raw errors without recovery hints. E.g., 'Element not found' should suggest 'Call playwright_get_visible_html to verify selector.' Violates pattern:recovery-guide.
No input validation visible. Tools accept free-form strings (selectors, URLs, keys) without constraints. LLMs can pass invalid CSS selectors or malformed URLs. Violates pattern:constrained-input and pattern:tool-gateway.