MCP server for Cypress — run tests, manage specs, snapshot pages, and automate browsers with AI
Cypress-mcp has 16 well-named tools with consistent verb_noun patterns (cypress_list_specs, cypress_run, cypress_click). All tools have descriptions (avg ~100 chars, within baseline 34-392). Input schemas are present and typed for all tools. However, descriptions are often terse and lack WHEN/WHY guidance. Parameter descriptions are minimal, many lack format/constraint details. Output schemas are not documented. Error handling is basic (no recovery guidance, no categorization). No tool annotations (readOnlyHint/destructiveHint). Missing pagination for list_specs. Overall: solid foundation, but lacks LLM-optimization depth.
Click an element on the current page.
Close the automation browser instance.
Execute JavaScript in the browser page and return the result.
Read the Cypress configuration file (cypress.config.ts/js/mjs/cjs).
Read the results of the last Cypress test run from the project's test results directory.
Get the current URL of the browser page.
List all Cypress spec/test files in the project. Returns file paths matching Cypress spec patterns.
No output schemas documented. LLMs cannot predict return structure (fields, types, pagination). Downstream tool chaining requires guessing what fields are available.
Descriptions lack WHEN/WHY context. E.g., cypress_snapshot says 'Get an accessibility snapshot' but doesn't explain when to use it vs cypress_screenshot, or what 'ARIA tree' means to an LLM unfamiliar with accessibility.
Parameter descriptions are minimal. E.g., cypress_run 'env' param says 'Cypress environment variables (key-value pairs)' but doesn't explain format, valid keys, or examples. cypress_navigate 'waitUntil' enum is documented but lacks guidance on when to use each value.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 57 | 2026-07-28+ | v2 |
Navigate the browser to a URL. Launches a browser if one isn't open yet.
Open the Cypress Test Runner GUI. Useful for interactive debugging.
Read the contents of a Cypress spec file.
Run Cypress tests and return structured results (passed/failed counts, test details, errors). Requires Cypress to be installed in the project.
Take a screenshot of the current browser page.
Get an accessibility snapshot of the current page — shows the full ARIA tree (roles, names, values). Useful for understanding page structure without a screenshot.
Type text into an input or textarea element.
Wait for an element or text to appear on the page.
Create or overwrite a Cypress spec file. Use this to generate new tests.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). LLMs cannot distinguish safe reads from destructive writes. cypress_write_spec and cypress_run should be marked destructive; cypress_read_spec should be marked readOnly.
cypress_list_specs lacks pagination. No limit, offset, or cursor parameters. If a project has 1000+ specs, the response could exhaust context. Should accept limit (default 50) and offset/cursor.