经 AI Skill Hub 精选评估,mk-qa-master MCP工具 获评「推荐使用」。这款MCP工具在功能完整性、社区活跃度和易用性方面表现出色,AI 评分 7.5 分,适合有一定技术背景的用户使用。
AI 測試大師 — MCP server driving pytest / Jest / Cypress / Go / Maestro,帮助开发者自动化测试和发布
mk-qa-master MCP工具 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
AI 測試大師 — MCP server driving pytest / Jest / Cypress / Go / Maestro,帮助开发者自动化测试和发布
mk-qa-master MCP工具 是一款遵循 MCP(Model Context Protocol)标准协议的 AI 工具扩展。通过 MCP 协议,它可以让 Claude、Cursor 等主流 AI 客户端直接访问和操作外部工具、数据源和服务,实现 AI 能力的无缝扩展。无论是文件操作、数据库查询还是 API 调用,都可以通过自然语言在 AI 对话中直接触发,极大提升生产效率。
# 方式一:通过 Claude Code CLI 一键安装
claude skill install https://github.com/kao273183/mk-qa-master
# 方式二:手动配置 claude_desktop_config.json
{
"mcpServers": {
"mk-qa-master-mcp--": {
"command": "npx",
"args": ["-y", "mk-qa-master"]
}
}
}
# 配置文件位置
# macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
# Windows: %APPDATA%/Claude/claude_desktop_config.json
# 安装后在 Claude 对话中直接使用 # 示例: 用户: 请帮我用 mk-qa-master MCP工具 执行以下任务... Claude: [自动调用 mk-qa-master MCP工具 MCP 工具处理请求] # 查看可用工具列表 # 在 Claude 中输入:"列出所有可用的 MCP 工具"
// claude_desktop_config.json 配置示例
{
"mcpServers": {
"mk-qa-master_mcp__": {
"command": "npx",
"args": ["-y", "mk-qa-master"],
"env": {
// "API_KEY": "your-api-key-here"
}
}
}
}
// 保存后重启 Claude Desktop 生效
<p align="center"> <img src="https://raw.githubusercontent.com/kao273183/mk-qa-master/main/assets/logo.png" alt="mk-qa-master logo" width="180" /> </p>
<p align="center"> <em>AI 測試大師 — your AI QA loop, from analyze to advise.</em> </p>
<p align="center"> <strong>English</strong> · <a href="README.zh-TW.md">繁體中文</a> </p>
<p align="center"> <a href="https://pypi.org/project/mk-qa-master/"><img src="https://img.shields.io/pypi/v/mk-qa-master.svg?logo=pypi&logoColor=white&color=3775A9" alt="PyPI" /></a> <a href="https://github.com/kao273183/mk-qa-master/actions/workflows/ci.yml"><img src="https://github.com/kao273183/mk-qa-master/actions/workflows/ci.yml/badge.svg" alt="CI" /></a> <a href="https://glama.ai/mcp/servers/kao273183/mk-qa-master"><img src="https://glama.ai/mcp/servers/kao273183/mk-qa-master/badges/score.svg" alt="Glama score" /></a> <a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-yellow.svg" alt="License: MIT" /></a> <a href="https://www.buymeacoffee.com/minikao"><img src="https://img.shields.io/badge/Buy%20Me%20a%20Coffee-Support-FFDD00?logo=buy-me-a-coffee&logoColor=black" alt="Buy Me a Coffee" /></a> </p>
Universal MCP server for running tests across pytest / Jest / Cypress / Go, with built-in DOM analyzer, run history, and a self-improvement coach. Stable since v1.0.0 (2026-06-02) — see Stability promise below.
A Model Context Protocol server that lets Claude Desktop / Cursor / any MCP client drive your test suite end-to-end: run tests, inspect failures (screenshot + video + trace), analyze a live URL to draft test cases, and — after each run — produce a prioritized action plan telling you exactly what to fix or write next.
QA_RUNNER | Framework | Language | Target |
|---|---|---|---|
pytest / pytest-playwright / playwright | pytest + Playwright | Python | Web |
jest | Jest | JavaScript | Web |
cypress | Cypress | JavaScript | Web |
go / go-test | go test | Go | Backend |
maestro / mobile | Maestro | YAML | iOS + Android |
schemathesis / api | Schemathesis | OpenAPI 3.x / Swagger 2.0 | API (since v0.6.0) |
newman / postman | Newman | Postman collection v2.x | API (since v0.6.1) |
Full design notes: docs/framework.md.
---
- Run tests across multiple frameworks (web + mobile + API) via a single MCP surface - Mobile via Maestro (since v0.3.0): same MCP tools, iOS Simulator / Android Emulator / real device; YAML flows; cross-platform without rewrites - Native API testing — two runners (since v0.6.0 / v0.6.1): two peers now share the API testing slot, each fed by the artifact your team already maintains. - Schemathesis (QA_RUNNER=schemathesis, since v0.6.0): point at an OpenAPI 3.x / Swagger 2.0 URL or file:// schema and get property-based fuzzed tests covering status codes, response schemas, content types, and 5xx-on-fuzz violations. - Newman (QA_RUNNER=newman, since v0.6.1): point at an exported Postman 2.x collection (plus optional environment / globals files) and Newman replays every request, runs the embedded pm.test(...) assertions, and returns one mk-qa-master nodeid per assertion. Newman is a system prerequisite (npm install -g newman) — it's an npm package, not pip, so it doesn't ship as a Python extra.
Both drop into the same MCP tool surface as the web / mobile runners, and both feed the same report.json / history / flake / optimizer pipeline. Existing API tests written in pytest+httpx, Jest+supertest, Cypress cy.request(), or Go net/http/httptest still ride their existing runners — no migration needed. Pact provider verification stays on the v0.7.0 conditional roadmap. - Failure artifacts: screenshot (base64-inlined), video, Playwright trace.zip / Maestro recordings - Run history: every run snapshotted; HTML report shows a sparkline trend - DOM / Screen analyzer — analyze_url for web (forms / nav / dialogs / CTAs + the API endpoints the page hits) and analyze_screen for mobile (maestro hierarchy → form / cta / tab_bar modules) - Smart test generation (generate_test): hand it an analyzer module and it writes a runnable Playwright .py or Maestro .yaml with concrete selectors, not # TODO stubs - Auto-retry flakes — pytest side via pytest-rerunfailures; Maestro side via custom retry wrapper (no native --reruns); flaky tests surfaced separately from real failures - Self-improvement coach (get_optimization_plan): post-run analysis across three lenses — suite quality, MCP usability, AI generation effectiveness - JUnit XML output for CI integrations (GitHub Actions / Jenkins / GitLab)
---
QA_RUNNER | You also need |
|---|---|
pytest / pytest-playwright | pip install pytest-playwright + playwright install chromium |
jest | A Node project with jest installed (npm i -D jest) |
cypress | A Node project with cypress installed (npm i -D cypress) |
go | Go toolchain on PATH |
maestro | [Maestro CLI](https://maestro.mobile.dev/) + a booted simulator / emulator / device (or BlueStacks reachable via adb connect) |
schemathesis / api | pip install 'mk-qa-master[api]' (pulls in schemathesis>=3.0,<4) |
newman / postman | npm install -g newman (Newman is an npm package, not pip — no extra to install) |
Two paths — pick the one that matches how you'll use it.
Add mk-qa-master to your client config without installing anything globally; uv fetches and runs it in an ephemeral environment per session:
{
"mcpServers": {
"mk-qa-master": {
"command": "uvx",
"args": ["mk-qa-master"],
"env": { "QA_RUNNER": "pytest", "QA_PROJECT_ROOT": "/path/to/your-test-project" }
}
}
}
That's the whole setup. First call downloads the package; subsequent calls are cached. Switching versions: uvx mk-qa-master@0.4.1 ....
pip install mk-qa-master # or: pip install -e . from a clone
playwright install # only if you use pytest-playwright
pip install pytest-rerunfailures # optional, enables auto-retry
Then point your client config at the same Python interpreter:
"command": "/path/to/.venv/bin/python",
"args": ["-m", "mk_qa_master.server"]
mk-qa-master doctor # human-readable check report
mk-qa-master doctor --json # for CI gates / host-LLM consumption
Walks Python version, ffmpeg + mediamtx on PATH, core deps, [edge] extras, runner registry, and MCP tool surface. Exits 0 when nothing critical is missing (warnings about unused features don't fail), 1 when mk-qa-master can't run cleanly. Run it after a fresh install or when an MCP tool returns missing_extras.
```text
```bash pip install "mk-qa-master[edge]" # opencv-python + ultralytics + requests
```
| You say | Claude calls |
|---|---|
| "Initialize the QA knowledge file." | init_qa_knowledge → writes qa-knowledge.md to your project root |
| "Show me the current QA knowledge." | get_qa_context → methodology + your domain sections |
| "Open the ISTQB principles section." | get_qa_context(section="ISTQB") |
| You say | Claude calls |
|---|---|
"Auto-generate tests for https://shop.example/." | auto_generate_tests(url=...) — one-shot |
"Analyze https://shop.example/coupon first, then write one test per module." | analyze_url → generate_test × N |
| "Analyze coupon page and write a regression test for our past idempotency bug." | get_qa_context(section="Bug") → analyze_url → generate_test(business_context=...) |
| "Just record a checkout flow as a baseline." | codegen(url=...) |
Requires QA_RUNNER=maestro, Maestro CLI, and a booted simulator/emulator/device.
| You say | Claude calls |
|---|---|
| "Analyze the current your mobile app screen and write a test for the barcode button." | analyze_screen(app_id="com.example.app", launch_app=true) → generate_test(module=<cta>) |
| "Test the login form on this app." | analyze_screen(launch_app=true) → pick form module → generate_test |
| "Cover the tab bar — write one flow per tab." | analyze_screen → take the tab_bar module → generate_test |
| "Use Maestro Studio to record a flow." | codegen(url=...) returns a hint pointing at maestro studio (record + save manually) |
BlueStacks / remote Android instances: set QA_ANDROID_HOST=127.0.0.1:5555 (or whatever host:port BlueStacks exposes — see Settings → Advanced → Android Debug Bridge). The Maestro runner will adb connect before each test and analyze_screen, and bumps the hierarchy timeout to 60s to absorb the slower TCP-ADB path. Genymotion / Nox / LDPlayer / WSA work the same way; any host:port that responds to adb connect is fine.
"env": {
"QA_RUNNER": "pytest",
"QA_PROJECT_ROOT": "/path/to/project",
"QA_VISUAL_CHALLENGE_CONSENT": "true",
"QA_VISUAL_CHALLENGE_AUTHORIZED_DOMAINS": "client-staging.example.com"
}
Then, when a run_tests call surfaces an external_dependency failure that points at a CAPTCHA, the AI client can escalate:
mk-qa-master.inspect_visual_challenge() # screenshot + tile grid
→ AI vision picks tiles [0, 4, 7]
mk-qa-master.solve_visual_challenge(
challenge_id="...", selected_tile_indices=[0, 4, 7], confirm=true,
)
→ status: "passed", token: "...", hint: "CAPTCHA verified. Resume your test."
Full walkthrough lives in docs/walkthrough-visual-challenge.md. PRD: docs/prd-v0.7-visual-challenge.md.
"env": {
"QA_RUNNER": "pytest",
"QA_PROJECT_ROOT": "/path/to/project",
"QA_API_SECURITY_CONSENT": "true",
"QA_API_SECURITY_AUTHORIZED_DOMAINS": "api.staging.example.com"
}
Then ask the AI client to scan:
mk-qa-master.run_api_security_scan(
spec_url="https://api.staging.example.com/openapi.yaml",
auth={
"token": "alice's bearer token",
"alt_user_token": "bob's bearer token",
"bola_test_ids": {"user_a": [101, 103], "user_b": [202]}
},
severity_threshold="medium"
)
Returns the v0.8 security report block:
{
"scan_id": "a3f8d1c9b7e2",
"spec_url": "...",
"base_url": "https://api.staging.example.com",
"categories_run": ["headers", "broken_auth", "bola", "function_authz"],
"rules_ran": ["OWASP-API8-Headers", "OWASP-API2-BrokenAuth", ...],
"ops_scanned": 23,
"severity_threshold": "medium",
"findings": [
{
"rule_id": "OWASP-API1-BOLA-CrossUserDataExposure",
"severity": "critical",
"endpoint": "GET /orders/{id}",
"title": "user_a can read user_b's object id=202 — missing object-level authorization check",
"evidence": {"actor": "user_a", "target_owner": "user_b", "target_id": 202, "probed_path": "/orders/202", "status_code": 200, ...},
"remediation_hint": "Compare the caller's identity to the object's owner before returning..."
},
...
],
"summary": {"total": 7, "by_severity": {"critical": 2, "high": 4, "medium": 1, "low": 0, "info": 0}}
}
"env": {
"QA_RUNNER": "schemathesis",
"QA_OPENAPI_URL": "https://api.example.com/openapi.json"
}
| Variable | Required | Default | What it does |
|---|---|---|---|
QA_OPENAPI_URL | yes | — | OpenAPI URL. http(s)://... for live schemas, file://... for local files. **Plain filesystem paths are not accepted** — they need the file:// prefix. |
QA_SCHEMATHESIS_CHECKS | no | all | Comma-separated subset: response_schema_conformance,status_code_conformance,not_a_server_error,content_type_conformance,response_headers_conformance. |
QA_SCHEMATHESIS_AUTH | no | — | Authorization header value. Sent as -H "Authorization: <value>". Never logged; redacted from archived reports. |
QA_SCHEMATHESIS_MAX_EXAMPLES | no | 20 | Hypothesis examples per operation. Higher = deeper fuzz, slower run. |
QA_SCHEMATHESIS_DRY_RUN | no | 0 | Set to 1 to plan-without-HTTP — useful for safety preview against production, or CI smoke against a schema-only artifact. |
QA_NO_REDACT | no | 0 | Disables secret redaction in archived reports. Default redacts Authorization: Bearer …, "password": …, "token" / "api_key" / "secret" / "access_token" / "refresh_token": …. |
Standard QA_TIMEOUT_SECONDS still applies (default 600s).
"env": {
"QA_RUNNER": "newman",
"QA_POSTMAN_COLLECTION": "/absolute/path/to/your-collection.json"
}
| Variable | Required | Default | What it does |
|---|---|---|---|
QA_POSTMAN_COLLECTION | yes | — | Plain filesystem path to a Postman 2.x collection JSON. **No file:// prefix** — Newman doesn't need scheme disambiguation since collections are always local artifacts. |
QA_POSTMAN_ENVIRONMENT | no | — | Plain path to a Postman environment file (-e <path>). Provides values for {{var_name}} placeholders in the collection. |
QA_POSTMAN_GLOBALS | no | — | Plain path to a Postman globals file (-g <path>). Same shape as the environment, globally scoped. |
QA_POSTMAN_ITERATIONS | no | 1 | Replay the whole collection N times (-n <N>). Useful for soak tests and flake detection. |
QA_POSTMAN_FOLDER | no | — | CSV of Postman folder names to restrict the run to (repeated --folder flags). run_failed also uses folder-scoping when failures cluster in known folders. |
QA_POSTMAN_TIMEOUT_REQUEST_MS | no | 30000 | Per-request HTTP timeout in milliseconds (--timeout-request). Distinct from QA_TIMEOUT_SECONDS, which caps the whole subprocess. |
QA_NO_REDACT | no | 0 | Same redaction policy as the Schemathesis runner — disable only for short debug sessions. |
Standard QA_TIMEOUT_SECONDS still applies (default 600s).
All five run as separate processes alongside mk-qa-master:
{
"mcpServers": {
"mk-qa-master": { "command": "python", "args": ["-m", "mk_qa_master.server"], "env": { "QA_RUNNER": "maestro" } },
"atlassian": { "command": "npx", "args": ["-y", "@atlassian/mcp"] },
"slack": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-slack"] },
"github": { "command": "npx", "args": ["-y", "@modelcontextprotocol/server-github"] }
}
}
Then a single prompt walks the chain:
"Run the checkout suite. For each failure, open a JIRA in project QA with the RIDER format and the screenshot attached. Post the HTML report to #qa-bots when done."
Why this matters: mk-qa-master stays focused on the test loop (analyze → generate → run → coach). JIRA / Slack / Sentry are entire domains with their own dedicated servers — bolting them into this one would dilute the scope, duplicate auth handling, and force every user to inherit dependencies they may not want.
本 repo 不打包任何第三方 SDK——維持「測試執行 + 分析」單一職責。實務上 QA 工作流是多個 MCP server 並存、由 Claude 編排跨 server 的 tool chain達成的。範例配套:JIRA / Slack / GitHub / Sentry / Filesystem 各自獨立 MCP server,配上 mk-qa-master 拼出完整測試管線。
---
Schemathesis catches correctness drift. v0.8.0 adds the layer that catches the security drift hiding behind a passing schema.
v0.8.0 ships an OWASP API Security Top 10 (2023) rule-based scanner as a new MCP tool: run_api_security_scan. It loads an OpenAPI 3.x spec, walks each (path × method), and dispatches five purely-HTTP- observable rules:
| OWASP # | Rule | Severity when triggered |
|---|---|---|
| API1 | **BOLA / IDOR** — alice's token reads bob's object via path-id tampering | CRITICAL |
| API2 | **Broken Authentication** — server accepts alg:none, malformed, or wrong-signature JWTs | MEDIUM / HIGH / CRITICAL by probe |
| API3 | **Mass Assignment** — server persists dangerous extra fields like role: admin, is_verified: true | HIGH |
| API5 | **Function-Level Authz** — non-admin user accesses admin-shaped endpoints | HIGH |
| API8 | **Security Misconfiguration** — missing HSTS/CSP/X-Frame headers, wildcard CORS with credentials | LOW / MEDIUM / HIGH |
API4 (rate limit DoS risk), API6 (business flow modeling), API7 (SSRF callback infra), API9 (prod recon), API10 (upstream APIs) are deferred — see docs/prd-v0.8-api-security.md §3.
```
The scanner finds all 5 categories on /vuln/* and produces zero false positives on /safe/*. That property is enforced by the Tier 1 dogfood tests on every PR.
The intended pipeline — from a URL to "what should I improve next time":
The loop is the point: every run feeds the optimizer, the optimizer points at the weakest link, the next run hits that link first.
"""
Login happy path
Auto-generated from analyze_url module: email_password_form_0 (kind=form)
"""
from playwright.sync_api import Page, expect
def test_login(page: Page):
page.goto('https://shop.example/login')
page.locator('#email').fill('test@example.com')
page.locator('#password').fill('TestPass123!')
page.locator("button[type='submit']").click()
# TC: Email 欄位填入格式錯誤的字串(無 @),應顯示格式錯誤
# TC: Password 欄位輸入後應預設遮蔽
# TC: 正確 Email + 正確密碼 → 導向 dashboard
# TODO: 補上實際斷言,例如:
# expect(page).to_have_url(...)
# expect(page.get_by_text("成功")).to_be_visible()
mk-qa-master doesn't bundle third-party SDKs — it stays a pure test-execution + analysis layer. Real QA workflows are composed by running multiple MCP servers side-by-side in the same client config; Claude orchestrates the chain across servers. There's no MCP-to-MCP RPC — each server is independent, the AI client is the conductor.
The pairings below are the ones that complete the loop most often:
| Pair with | Why | Example chain |
|---|---|---|
| **[Atlassian MCP](https://www.atlassian.com/platform/remote-mcp-server)** *(JIRA + Confluence)* | Auto-open bug tickets from failures; sync optimization-plan.md to a team Confluence page | run_tests → get_failure_details → atlassian.createJiraIssue *(attaches screenshot + trace path)* |
| **[Slack MCP](https://github.com/modelcontextprotocol/servers/tree/main/src/slack)** | Notify channels on failure, share the rendered HTML report, mention oncall for flaky tests | generate_html_report → slack.send_message(channel="#qa-bots", attachments=...) |
| **[GitHub MCP](https://github.com/github/github-mcp-server)** | Read PR description / linked issues for *business context* before generating tests; post results back as PR comments | github.get_pull_request → analyze_url → generate_test(business_context=PR body) → github.create_issue_comment |
| **[Sentry MCP](https://github.com/getsentry/sentry-mcp)** | Production errors drive regression priority: top crashes → matching regression tests | sentry.list_issues(sort="frequency") → generate_test(business_context=stack trace) → run_tests |
| **[Filesystem MCP](https://github.com/modelcontextprotocol/servers/tree/main/src/filesystem)** | Read a shared qa-knowledge.md or TC source files that live outside QA_PROJECT_ROOT (monorepos, multi-project setups) | filesystem.read_file("~/shared/qa-knowledge.md") → init_qa_knowledge |
Honorable mention — Google Drive MCP: pairs with Google-Sheet-based TC management (read TCs from a sheet → generate_test → write status back).
The built-in QA knowledge layer (get_qa_context section="CAPTCHA") codifies three tiers. Reach for them in order:
| Tier | Approach | When |
|---|---|---|
| **1 — bypass** | reCAPTCHA test keys, feature flags, IP allowlist, test-mode headers | Default. Covers ~90% of cases. |
| **2 — degrade** | Mark as external_dependency, skip downstream assertions | When you can't change the backend but the test isn't about the CAPTCHA itself. |
| **3 — AI visual judgment** | This feature. | Only when 1 + 2 don't fit (client sites with authorization but no backend access, staging that mirrors prod CAPTCHA, mobile webviews where IP allowlist isn't reachable). |
Point the runner at any OpenAPI 3.x / Swagger 2.0 schema and Schemathesis generates property-based test cases per operation — covering response schema conformance, status code conformance, content-type checks, and 5xx-on-fuzz. Results flow through the same report.json / history / flake / optimizer pipeline as your UI tests.
End-to-end walkthrough lives in docs/walkthrough-api.md; a self-contained 3-endpoint sample lives at examples/sample_api_project/.
Point the runner at any exported Postman 2.x collection and Newman 6.x replays every request, runs the embedded pm.test(...) assertions, and returns one mk-qa-master "test" per assertion. Results flow through the same report.json / history / flake / optimizer pipeline as the Schemathesis and UI runners.
System prerequisite: Newman ships via npm, not pip. Install once:
npm install -g newman
There's no pip install 'mk-qa-master[postman]' extra — the runner just shells out to the newman binary on PATH. If it's missing, the runner raises a clear ImportError pointing at the npm install line.
The same 3-endpoint Library API that the OpenAPI sample targets ships as a Postman collection at examples/sample_api_project/postman-collection.json — pair it with prism mock examples/sample_api_project/openapi.yaml for a fully self-contained dev loop, or point at your own staging server.
| Symptom | Likely cause | Fix |
|---|---|---|
Could not open RTSP stream: rtsp://localhost:8554/cam | ffmpeg or mediamtx not on PATH; readiness probe timed out at 10 s | Verify which ffmpeg mediamtx; if mediamtx lives elsewhere, set QA_MEDIAMTX_BIN=/full/path/to/mediamtx; slow first-run on Apple Silicon — re-run after the first mediamtx boot |
[edge] setup failed: ConnectionError | Port 8554 already in use by another mediamtx / RTSP server | Set QA_RTSP_PORT=8555 (or any free port); the generated test reads EDGE_RTSP_URL so no test edit needed |
{ "error": "missing_extras", "hint": ... } from analyze_stream | Base install without [edge] extras | pip install "mk-qa-master[edge]" (or run mk-qa-master doctor to audit the full install) |
{ "error": "forbidden_vendor_host", "blocked_host": "..." } | Default-on blacklist (Dahua / Hikvision / etc.) | If it's your own camera: export QA_EDGE_ALLOW_VENDOR_HOSTS=true. If it isn't: leave the block in place |
NotImplementedError: RemoteHTTP backend lands in v1.2 (Phase 3 of theme G) | You set QA_JETSON_HOST or QA_INFERENCE_ENDPOINT against v1.1.x | v1.1 ships LocalYolo only. Unset the remote env vars to fall back to desktop YOLO. Phase 3 follows in v1.2 |
ultralytics taking forever to install | First-time torch download (~700 MB) | One-time cost. Cache pip install in CI; locally use pip install --no-deps once torch is in place |
Generated test asserts hit, "label X not detected" but the sample fixture is just testsrc | Synthetic test pattern doesn't contain real persons / forklifts | Expected for the bundled fixture (it's plumbing verification only). Swap in real footage + real annotations for actual detection assertions; see [examples/sample_edge_fixture/README.md](examples/sample_edge_fixture/README.md) |
| p95 latency assertion fires on CPU but passes on GPU | Default QA_LATENCY_SLA_MS=40 assumes GPU inference | Raise QA_LATENCY_SLA_MS for CPU runs (typical CPU yolov8n: 60–120 ms). See the SLA defaults table in get_qa_context(section="Edge Vision Inference") |
ffmpeg complains about Stream #0:0: Video: ... at 5/1 fps | Sample fixture is intentionally low fps (5) to keep the binary at 75KB | Expected. For real testing supply your own higher-fps source |
MK QA Master 是一个 AI 測試大師,旨在为开发者提供一个从分析到建议的 AI QA 循环。它支持多框架测试(web + mobile + API),并提供了一个统一的 MCP 表面。
MK QA Master 提供了多种功能,包括跨框架测试、移动测试(via Maestro)、Native API 测试(两种运行器)等。它还支持 YAML 流和跨平台测试。
MK QA Master 需要以下环境依赖:pytest、jest、cypress 等。具体的环境依赖和系统要求请参见下面的表格。
MK QA Master 可以通过两种方式安装:一是通过 `uvx`(零安装,推荐给终端用户);二是通过 pip 安装(推荐给贡献者和开发者)。
MK QA Master 的使用教程包括如何配置环境变量、如何使用 `run_tests` 命令等。具体的使用教程请参见下面的教程。
MK QA Master 的配置包括环境变量、MCP 配置、关键参数等。具体的配置说明请参见下面的配置说明。
MK QA Master 的工作流包括从 URL 到“下次应该改进什么”的流程。具体的工作流请参见下面的工作流图。
MK QA Master 的 FAQ 包括 API 测试、环境变量配置等。具体的 FAQ 请参见下面的 FAQ 摘要。
该项目提供了一个开源的MCP工具,帮助开发者自动化测试和发布,支持多种测试框架和工具,但需要进一步优化和完善
AI Skill Hub 为第三方内容聚合平台,本页面信息基于公开数据整理,不对工具功能和质量作任何法律背书。
建议在沙箱或测试环境中充分验证后,再部署至生产环境,并做好必要的安全评估。
✅ MIT 协议 — 最宽松的开源协议之一,可自由商用、修改、分发,仅需保留版权声明。
AI Skill Hub 点评:mk-qa-master MCP工具 的核心功能完整,质量良好。对于Claude Desktop / Claude Code 用户来说,这是一个值得纳入个人工具库的选择。建议先在非生产环境试用,再逐步推广。
| 原始名称 | mk-qa-master |
| 原始描述 | 开源MCP工具:AI 測試大師 — MCP server driving pytest / Jest / Cypress / Go / Maestro. Analyze, ge。⭐19 · Python |
| Topics | mcpmaestromobile-testingmodel-context-protocol |
| GitHub | https://github.com/kao273183/mk-qa-master |
| License | MIT |
| 语言 | Python |
收录时间:2026-05-17 · 更新时间:2026-05-19 · License:MIT · AI Skill Hub 不对第三方内容的准确性作法律背书。
选择 Agent 类型,复制安装指令后粘贴到对应客户端