Additive only under the v1.0 stability lock. Tool surface unchanged (22 tools). MCP server invocation is byte-identical to v1.3.x — every existing host integration continues to work without changes.
License: still MIT. Apache 2.0 transition lands in v2.0 per the v1.2.1 announcement (see
docs/RELICENSING.md).
What ships
mk-qa-master doctor — install + environment audit CLI
$ mk-qa-master doctor
mk-qa-master v1.4.0 — environment doctor
System
✓ Python ≥ 3.10: 3.12.10 (arm64)
✓ ffmpeg: /opt/homebrew/bin/ffmpeg
! mediamtx: not on PATH — macOS: brew install mediamtx | Linux: ...
Core deps
✓ mcp: 1.27.1
✓ jsonschema: 4.26.0
Edge extras [edge]
! cv2: not installed — pip install "mk-qa-master[edge]"
! ultralytics: not installed — pip install "mk-qa-master[edge]"
! numpy: not installed — pip install "mk-qa-master[edge]"
Runners
✓ pytest, playwright, edge, schemathesis, newman, ... (15 entries)
MCP surface
✓ tool count: 22 tools
Severity model
| Severity | When | Exit code impact |
|---|---|---|
ok |
Check passed | 0 |
warn |
Optional feature missing (e.g. [edge] extras not installed) |
0 — informational only |
fail |
mk-qa-master can't function normally (Python < 3.10, mcp / jsonschema missing, registry import failure) | 1 |
--json flag emits {version, summary: {ok, warn, fail}, results: [...]} for CI pre-flight gates and host-LLM consumption.
Dispatch wired into server.run()
| Invocation | Behavior |
|---|---|
mk-qa-master (no args) |
MCP stdio server — backward compatible, every existing host (Claude Code / Codex / OpenClaw / Hermes) uses this |
mk-qa-master doctor [--json] |
Doctor CLI |
mk-qa-master <typo> |
Error to stderr + exit 2 (prevents accidentally starting a server when caller meant a subcommand) |
Motivation
Users pip install mk-qa-master (base, no extras), call analyze_stream, hit missing_extras because [edge] wasn't installed. The hint and README troubleshooting already documented the fix, but the friction was real — doctor pulls every diagnosis into one command, same intent as tsc --noEmit or node --version.
Surfaced via dogfood feedback during the v1.3.1 cycle when a user installed mk-qa-master==1.3.0 without [edge] and had to ask why Edge AI didn't work.
Tests
- 22 new tests in
tests/test_doctor.pycovering per-check helpers, severity contract, section ordering, plain + JSON rendering, exit-code rule, and dispatch wiring (backward-compat for the no-args path + stderr exit for unknown subcommands)
Suite: 477 passing (455 carried + 22 doctor).
Stability lock
- ✅ Tool surface unchanged (snapshot test stays green without
BREAKING_CHANGE_ACK) - ✅ MCP server invocation byte-identical to v1.3.x — no-args path = previous behavior
- ✅ New CLI subcommand is additive — adding subcommands isn't a breaking change per
docs/DEPRECATION-POLICY.md
Action required
None. The doctor is purely a manual operator tool. Existing MCP host integrations continue to invoke mk-qa-master with no args and get the server. Run mk-qa-master doctor after a fresh install or when an MCP tool returns missing_extras.
v2.0 timing reminder
Per docs/RELICENSING.md: the MIT → Apache 2.0 relicense waits ≥ 1 calendar month after v1.3.0 (which shipped 2026-06-03). v1.3.1 and v1.4.0 are on the same line and don't reset the clock.
🤖 Generated with Claude Code