Pointing it at a URL gives back named page modules, and handing one of those modules to the generator produces a test with real selectors that runs — which is the step most "AI writes your tests" tooling leaves as a TODO comment. The scanning and challenge-solving tools sit behind explicit consent gates and hard-stop domains, so treat those as opt-in rather than part of the normal suite run.
A QA runner exposed as an MCP server, published on PyPI as `mk-qa-master`. The runner is chosen by the `QA_RUNNER` environment variable, and every runner feeds the same report, history, flake and optimizer pipeline — so web, mobile and API suites come back in one shape. It also analyses a live page or mobile screen into modules, then generates a runnable test file from one of those modules rather than a stub.
- Suites run across pytest and pytest-playwright, Jest, Cypress, `go test`, Maestro for iOS and Android, Schemathesis against an OpenAPI 3.x or Swagger 2.0 schema, and Newman against a Postman v2.x collection — `run_tests`, `run_failed`, `list_tests`, `get_runner_info`
- Failure artifacts that survive the run: base64-inlined screenshots, video, Playwright `trace.zip` and Maestro recordings, plus JUnit XML for CI — `get_failure_details`, `get_test_report`, `generate_html_report`
- Run history snapshotted per run, with a sparkline trend in the HTML report and flaky tests separated from real failures — `get_test_history`, `get_telemetry`
- A live page or mobile screen broken into forms, navigation, dialogs and CTAs, with the API endpoints the page hits — `analyze_url`, `analyze_screen`
- A runnable Playwright `.py` or Maestro `.yaml` written from an analyser module with concrete selectors — `generate_test`, `auto_generate_tests`
- A post-run coaching pass over suite quality, MCP usability and generation effectiveness, and a project knowledge file the server reads back — `get_optimization_plan`, `init_qa_knowledge`, `get_qa_context`
- An OWASP API security scan behind an explicit consent gate, and a visual-challenge solver behind another — `run_api_security_scan`, `inspect_visual_challenge`, `solve_visual_challenge`
No account and no key for the server itself. The zero-install path is `uvx mk-qa-master` with `QA_RUNNER` and `QA_PROJECT_ROOT` in the client config; `pip install mk-qa-master` works too. Each runner brings its own prerequisite: `pytest-playwright` plus `playwright install chromium` for the pytest path, a Node project with `jest` or `cypress` installed, a Go toolchain on `PATH`, the Maestro CLI plus a booted simulator, emulator or device, `pip install 'mk-qa-master[api]'` for Schemathesis, and `npm install -g newman` for the Newman path — Newman is an npm package, so it is not available as a Python extra. `mk-qa-master doctor` walks the Python version, binaries on `PATH`, core dependencies, extras and the tool surface, and exits 1 when something critical is missing. Published version 1.4.0.
One command — uvx mk-qa-master
