QualityMax MCP
AI-native test automation for web apps.
What it can do
- Import Repository: Import and analyze a GitHub repository for testing. Creates a default project if none specified.
- Generate Tests: Generate Playwright tests for a specific feature or component
- Run Tests: Execute Playwright tests or verified generated Appium mobile flows and return a compact per-script summary (status, duration, failure reason, next action). Managed mobile runs are asynchron
What data it sees
Do you need an account
No: the server works without sign-in
AI-native test automation for web apps. Create and manage projects, test cases, automation scripts, test runs, and QualityMax workflows through secure OAuth.
How to connect
How to connect QualityMax MCP to Claude
The server address to paste into Claude settings:
https://qualitymax-mcp--qualitymax.run.tools
- Open Claude (claude.ai or the desktop app).
- Go to Settings → Connectors.
- Click Add custom connector.
- Paste the server address copied below into Remote MCP server URL and click Add.
- In a chat, click + → Connectors and switch the new connector on.
Custom connectors are available on Free, Pro, Max, Team and Enterprise plans (Free is limited to one). On Team and Enterprise an organization Owner adds the connector first under Organization settings → Connectors.
Authorization
After you click Add, a sign-in window for the service opens. Sign in with your own account and approve access. Claude never sees your password.
How to connect QualityMax MCP to ChatGPT
The server address to paste into ChatGPT settings:
https://qualitymax-mcp--qualitymax.run.tools
- Open ChatGPT in a browser (chatgpt.com). A Plus, Pro, Business, Enterprise or Edu plan is required.
- Turn on developer mode once: Settings → Apps → Advanced settings → Developer mode.
- Open Settings → Connectors and click Create.
- Fill in the form: Name (anything), Description (one line about what the service does), MCP server URL (copy it below).
- Under Authentication choose OAuth if the service requires sign-in, otherwise None. Click Create.
- In a new chat open + → Apps/Connectors and enable the connector.
OpenAI has renamed this section before (Connectors → Apps/Plugins). If the label differs, search settings for "developer mode". On Business/Enterprise workspaces an admin must allow custom connectors first.
Authorization
On first use ChatGPT opens the service's sign-in window. Sign in and approve access.
How to connect QualityMax MCP to Cursor
The server address to paste into Cursor settings:
https://qualitymax-mcp--qualitymax.run.tools
Fastest: click Open in Cursor below and confirm the prompt.
Manually:
- In Cursor open Settings → Cursor Settings → MCP and click Add new global MCP server.
- Paste the JSON copied below into
~/.cursor/mcp.json(per project:.cursor/mcp.jsonin the repo root). - Save the file. The server appears in the MCP list; authorize it there if asked.
Authorization
If the service needs sign-in, an authorize button appears next to the server in the MCP list.
Server tool list (60)
Raw names from tools/list. Only developers need these.
| import_repository | Import and analyze a GitHub repository for testing. Creates a default project if none specified. |
| generate_tests | Generate Playwright tests for a specific feature or component |
| run_tests | Execute Playwright tests or verified generated Appium mobile flows and return a compact per-script summary (status, duration, failure reason, next action). Managed mobile runs are asynchronous; poll get_execution using the returned execution_id. Full stdout/stderr, traces, and artifact paths are opt-in — request them only when the compact failure is not enough to act on. |
| apply_patch_and_run | Patch an automation script and immediately re-run it, returning one compact result. Use this instead of update_script followed by run_tests: it collapses the fix-and-verify loop into a single round trip. |
| analyze_coverage | Analyze test coverage and identify gaps in the repository |
| generate_area_plan | Run deep gap analysis on a repository to discover and map testing areas. |
| generate_tests_for_areas | Generate test cases for specific discovered test areas. |
| get_discovery_graph | Return the repository's evidence-grounded discovery graph: a lineage of repository → evidence → test areas → test cases → automation scripts, with grounding status and confidence per node. Use to audit test coverage lineage. |
| ai_review | Perform AI-powered code review and suggest improvements |
| get_review_preferences | Get the user's AI code-review preferences (which categories to check, which to skip). Returns effective preferences: per-repo overrides merged over global defaults. Call without repository_id for global defaults. |
| set_review_preferences | Set or update AI code-review preferences. Controls which categories the reviewer checks (security, performance, test_coverage, type_safety, accessibility, style, secrets_scanning, ai_safety_for_agents) and an optional custom_focus string. Use scope='global' for defaults that apply everywhere, or scope='repo' with a repository_id for per-repo overrides. |
| create_pr | Create a pull request with generated tests or fixes |
| whoami | Return identity of the user owning the current API token: user_id, email, username, full_name, role, tier, and a count of accessible projects. Use this first when debugging 'Access denied' errors to confirm which account the token belongs to. |
| list_projects | List projects for the current user, including each project's vanity URL slug and project type (web or native_mobile). ALWAYS call this before creating a new project to check if a similar project already exists. |
| create_project | Create a new project (optionally with main_url). Will check for similar existing projects and ask for confirmation if found. |
| update_project | Update an existing project (e.g., set main_url for AI crawl) |
| get_project_memory | Return compact durable memory from prior MCP agent negotiations, project learnings, and verified test runs. Call this before generating or repairing tests for an existing project; then call get_script only for the most relevant verified script to keep context and cost low. |
| get_repository | Get repository details and stored analysis |
| refresh_repository | Refresh an existing repository analysis at its latest commit. Private repositories reuse the stored GitHub App connection. |
| list_repositories | List repositories for a project |
| repo_quality | Get the imported repository's stored quality signal without starting a new scan. |
| repo_coverage | Get the imported repository's stored coverage signal without starting a new scan. |
| list_test_cases | List test cases for a project |
| create_test_case | Create a test case in a project. If no steps are provided, detailed steps are auto-generated from the title/description (disable with auto_generate_steps=false). |
| import_test_cases_from_document | Import test cases from document text content. The AI will analyze the text and extract test cases automatically. |
| import_from_testrail | Import test cases from TestRail into a project (requires saved TestRail credentials) |
| start_ai_crawl | Start an AI crawl job for a project (requires project.main_url unless url is provided) |
| start_ai_crawl_from_test_case | Start an AI crawl job using an existing test case as instructions. IMPORTANT: This tool will first generate a virtual test plan that MUST be approved by the user before proceeding. You must present the plan to the user, wait for their approval, then call this tool again with the approved_virtual_test_plan parameter to proceed with the crawl. |
| check_ai_crawl_status | Check the status of an AI crawl job. Use this to see if a crawl has completed and inform the user when tests are ready. |
| start_mobile_audit | Start a detailed Mobile Readiness Audit for a project. It captures responsive evidence at 1440px, 768px, and 375px, checks console/link/accessibility/layout risks, and prepares a shareable report. Uses the project main_url unless url is provided. |
| get_mobile_audit_status | Get status, score, and report path for a Mobile Readiness Audit. |
| list_mobile_audits | List Mobile Readiness Audits for a project, newest first. |
| share_mobile_audit | Create or return the public share link for a completed Mobile Readiness Audit. |
| parse_mobile_audit_report | Convert extracted text from a QualityMax-style mobile audit PDF or HTML report into structured findings: ID, severity, surface, breakpoints, root cause, and fix prompt. Use the result to create or link follow-up work; this tool never changes project data. |
| get_mobile_audit_evidence | Return the screenshot URLs and bounded scanner evidence for a completed Mobile Readiness Audit. Use this before Claude writes a qualitative report. |
| render_mobile_audit_report | Store a structured BYO-Claude mobile-audit report and render a shareable HTML report plus a downloadable PDF. This does not call a QualityMax model. |
| import_document_and_crawl | Complete workflow: Import document/text, create test cases, generate virtual test plan for approval, then initiate AI crawl. IMPORTANT: This tool will first generate a virtual test plan that MUST be approved by the user before proceeding. You must present the plan to the user, wait for their approval, then call this tool again with the approved_virtual_test_plan parameter to proceed with the crawl. |
| show_available_commands | List all available commands and tools that the assistant can use. Use this when the user asks 'what can you do?' or 'list your capabilities'. |
| get_project_summary | Get a summary of a project including counts of test cases, scripts, and executions. Use this when the user asks 'what's in my project?' or 'show me project stats'. |
| get_test_case | Get detailed information about a specific test case including its description, steps, and related automation scripts. Pass `if_version_matches` to skip the body when nothing changed, and `fields` to fetch only what you need. |
| get_script | Get an automation script's details including the generated Playwright/Cypress test code. Pass `if_version_matches` with the version from a previous read to get a cheap `not_modified` answer, and `fields` to fetch only what you need. |
| list_scripts | List automation scripts for a project or test case. Returns script names and IDs (use get_script to view the code). |
| get_execution | Get a test execution's status, timing, and outcome. Log entries and artifact paths are counted by default and returned only when explicitly requested. |
| search_test_cases | Search for test cases by title, description, or tags. Better than listing all test cases when looking for something specific. |
| query_data | Query data from the system using flexible queries. Use this for exploratory queries or when you need to list data with filters. For specific single-item lookups, prefer specialized tools like get_test_case, get_execution, etc. |
| parse_qtml | Parse a QTML (Quality Testing Meta Language) source string and return its structured representation as JSON. Use this to inspect the contents of a QTML document. |
| validate_qtml | Validate a QTML source string. Returns whether it is valid and any errors found. |
| export_project_as_qtml | Export a QualityMax project and its test cases as a QTML document string. |
| import_qtml | Import a QTML source string into QualityMax, creating a project and/or test cases from the QTML contract and intents. |
| convert_qtml_to_playwright | Import a QTML source string and then trigger AI Playwright code generation for each imported test case. |
| test_deployed_environment | Test a deployed environment end-to-end. Discovers the UI, generates a Playwright test, and executes it. The run is ephemeral unless project_id is provided, in which case a linked test case, script, and result are saved. Returns pass/fail with test code and screenshots. |
| get_ai_crawl_results | Get the results of a completed AI crawl job including generated test scripts, test cases, and flow memory. |
| generate_gap_tests | Generate test cases to fill coverage gaps found by analyze_coverage. Analyzes the repository's deep-scan results and generates E2E, smoke, integration, and security test cases. |
| generate_code_for_test_case | Generate automation test code for a specific test case using AI. Supports Playwright, pytest, Cypress, Selenium, Vitest, Jest, Kotlin, Scala, Go (`go test`), and Rust (`cargo test`). When `framework` is omitted, the framework is auto-resolved from project settings, linked-repository language detection, and the test category. |
| check_generation_status | Check a background code-generation job started by generate_code_for_test_case (personal Codex / Claude Code seat routes return a job_id instead of code, because a seat run takes minutes). Poll about every 30s. A seat runs one job at a time, so wait for a terminal status ('completed', 'failed', or 'timed_out') before generating the next test case rather than starting several in parallel. |
| update_test_case | Update an existing test case's fields (title, description, steps, expected result, category, priority). |
| delete_test_case | Delete a test case. Requires ownership of the parent project. |
| delete_project | Delete a project. Requires ownership. This will also delete all associated test cases, scripts, and executions. |
| update_script | Update an automation script's name or code. Prefer `patch` over `code`: it sends only the lines you are changing instead of re-uploading the whole script, which is the single largest token saving available on this server. |
| update_mobile_flow | Update a managed mobile script from its canonical QTML mobile flow. Validates the flow and platform, rejects stale revisions, increments the revision, and deterministically recompiles the executable script. Use this instead of update_script for managed mobile flows. |