原型 · 预览版:收录官方注册中心里的全部服务器,每 30 分钟同步一次。评价和账户功能将在后续阶段推出。
PopNx MCP为使用 AI 的人准备的 MCP 服务器 · 用大白话讲清楚

Test Genie

作者:MUSE-CODE-SPACE版本 2.0.3i★ –i在你的电脑上运行
注册名称io.github.MUSE-CODE-SPACE/test-genie

安装

概览

作者提供的说明(英文原文)

AI-powered app test automation for iOS, Android, Flutter, React Native, Web

PopNx MCP 的三大支柱

这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。

它能帮你做什么

我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。

  • 连接方式: 在你的电脑上运行
  • 传输方式: stdio
  • 分类: 其他

安装

选择你使用的 AI 应用,然后复制设置。

安装之前

  • 基础检查:1 项中通过 1 项
  • 在你的电脑上运行,拥有你的用户账户的权限(文件、网络、应用)。
  • 注册中心没有列出需要填写的密钥。

你需要

  • npm已安装 Node.js(用于 npx 命令)

你用的是哪个应用?

在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。

打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json

{
  "mcpServers": {
    "test-genie": {
      "command": "npx",
      "args": [
        "-y",
        "test-genie-mcp"
      ]
    }
  }
}

在终端中运行这条命令

claude mcp add test-genie -- npx -y test-genie-mcp

在 Cursor 中打开

或者自己复制设置

粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json

{
  "mcpServers": {
    "test-genie": {
      "command": "npx",
      "args": [
        "-y",
        "test-genie-mcp"
      ]
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

在 VS Code 中打开

或者自己复制设置

粘贴到项目中的 .vscode/mcp.json

{
  "servers": {
    "test-genie": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "test-genie-mcp"
      ]
    }
  }
}

浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。

这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。

你的选择通过 Cookie 保存在这台设备上,无需账户。

这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。

它能做什么

它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。

基础检查i

我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月6日

  • ✓ 通过

    作者与仓库一致

    注册名称已通过 GitHub 账户 MUSE-CODE-SPACE 验证,该账户拥有此仓库

  • … 尚未检查

    仍在维护

    我们还没有从 GitHub 读取这个仓库

  • … 尚未检查

    有许可证

    我们还没有从 GitHub 读取这个仓库

  • – 不适用

    端点有响应

    它在你的电脑上运行,没有互联网端点

  • – 不适用

    使用 OAuth 登录

    在你的电脑上运行,改用本地设置

  • … 尚未检查

    工具描述中没有隐藏指令

    它在你的电脑上运行;我们只能读取互联网端点的工具列表

与“其他”中的其他服务器比较i

  • 星标数多于此分类中其他 32433 个服务器的 0%
  • 发布到注册中心的时间比此分类中其他 32433 个服务器的 1% 更新
  • 基础检查结果等于或优于此分类中其他 32433 个服务器的 100%

与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。

常见问题

Test Genie 安全吗?

它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。

它需要哪些密钥或代码?

注册中心没有列出必需的密钥,不过有些服务器会在首次使用时要求你登录。

它在我的电脑上运行还是在云端?

它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。

它还在维护吗?

GitHub 仓库最后更新于–,最新版本(2.0.3)于10个月前进入注册中心。

哪些应用可以使用它?

支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。

有什么可以替代它?

同一分类中有:Spec Driven Development, Remote Desktop Commander, Symantec Cloud DLP AIops

替代选择

同一分类中其他作者的服务器,按星标数排序。

如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i

Spec Driven Development

作者:formulahendry

MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.

在你的电脑上运行★ 440MIT14个月前更新
安装

Remote Desktop Commander

作者:desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

在云端运行★ 211昨天更新
安装

Symantec Cloud DLP AIops

作者:AIops-tools

Governed Symantec Cloud DLP — 14 MCP tools, read-only with audit.

在你的电脑上运行今天更新
安装

作者的 README

打开 README

按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。

test-genie-mcp

Built for vibe coders: one command, get a prioritized list of what's actually broken about your project.

Self-healing test automation for iOS, Android, Flutter, React Native and Web apps — as an MCP server.

v3.1.1 — vibe-check + honest auto-fix. One MCP call, ~30 seconds: race conditions + security issues + memory leaks + logic errors + perf smells, prioritized. Stays on your machine, no telemetry. Pass autoFix: true for the small, safe mechanical fixes (weak-hash, simple Math.random assignment) — backup + syntax-validate + rollback-on-syntax-fail. For test-verified application of harder fixes, use v3.0.0's iterate-fix loop.


Vibe coders quickstart

You don't read the docs. You open the project, talk to Claude, and want a verdict. Here it is:

In Claude (with test-genie-mcp installed — setup):

/vibe-check /Users/me/my-app

Claude calls diagnose_project under the hood. ~30 seconds later you see:

# vibe-check report
  • Project: /Users/me/my-app
  • Platform: web
  • Findings: 11 total — 4 critical, 4 high, 1 medium, 1 low
  • Estimated fix time: ~85 min

Top 5 issues

1. [CRIT] Hardcoded AWS access key id found in source
  • File: server.js:7
  • Category: security / secret (CWE-798)
  • Confidence: 95%
  • Fix: Move the value to an env var, gitignore the config, rotate the leaked key.
2. [CRIT] SQL string built by concatenating user input
  • File: server.js:21
  • Category: security / injection (CWE-89)
  • Fix: Use parameterized queries (db.query("... WHERE id = ?", [id])).
3. [HIGH] useState setter called after await without mount guard
  • File: UserProfile.tsx:16
  • Category: race-condition / react-setstate-after-await (CWE-362)
  • Confidence: 78%
  • Fix: Use AbortController and check signal.aborted before calling setters.

… (top 5 shown — full list at output: "detailed")

Next steps

  1. Address the critical / high findings above.
  2. Re-run diagnose_project after fixing to confirm convergence.
  3. Use run_iterative_fix_loop for test-driven verification of each fix.

If any finding is autoFixable: true and is at high/critical severity, the diagnose_project call accepts autoFix: true to apply the mechanical replacement directly (with backup + syntax validation — see SAFETY.md for the exact guards). The v3.1.1 honest scope is narrow: weak hash (createHash('md5'|'sha1') → createHash('sha256')) and standalone Math.random() in security-sensitive files. For broader/structural fixes (race conditions, eval, exec injection) run run_iterative_fix_loop separately — it re-runs tests and auto-rolls-back on regression.


Why test-genie?

The bottleneck in mobile + cross-platform test automation isn't writing tests — it's the loop *between* a failing test and a passing test. test-genie closes that loop:

failing test → analyzer flags issue → fix proposed → dry-run + syntax check →

applied with backup → affected tests re-run → regression check → loop or stop

This full loop is the run_iterative_fix_loop tool. The diagnose_project autoFix: true path in v3.1.1 covers a strict subset — backup + dry-run + syntax-validate + apply, without re-running tests (so no test-regression rollback in that path). Use the right tool for the job — and see SAFETY.md for the exact guards on each.

Other tools (Detox, Maestro, Playwright, xcodebuild test) run tests. test-genie **runs tests *and* drives the fix until the bar is met or it can no longer make progress** — without you scrubbing through stack traces.


5-minute Quickstart

# 1. Install

npm install -g test-genie-mcp

2. Add to Claude Desktop config (~/.config/claude/claude_desktop_config.json)

{ "mcpServers": { "test-genie": { "command": "npx", "args": ["test-genie-mcp"], "env": { "TEST_GENIE_ALLOWED_ROOT": "/path/to/your/project" } } } }

3. Restart Claude Desktop. From a chat:

"Run the iterate-fix loop on /Users/me/my-rn-app with autoApply=false"

Expected output (truncated):

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Iterative fix loop f8b3… — PAUSED-FOR-CONFIRMATION ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Iterations completed: 1 Fixes applied: 0 Regressions rolled back: 0 Final tests: 7/10 passing (3 failing)

Pending confirmations (3):

  • 71fbe…: Fix: useEffect missing cleanup for setInterval (confidence: 85)
  • 92ad1…: Fix: Force-unwrap on possibly-undefined name (confidence: 85)
  • …

Resume token: f8b3…

Re-call with autoApply: true (or resumeToken: "f8b3…") to actually patch the files.


Real use cases

The flows below describe the `run_iterative_fix_loop` path (v3.0

headline) — full detect → propose → dry-run → apply-with-backup →

re-run-tests → rollback-on-regression. The diagnose_project autoFix

path in v3.1.1 is the narrower mechanical-replacement-only path; see

SAFETY.md §4 for what that one actually touches.

1. React Native memory-leak self-healing

A team adds setInterval(...) in a useEffect and forgets cleanup. test-genie's detect_memory_leaks flags it, suggest_fixes proposes return () => clearInterval(id) (src/tools/fixing/suggestFixes.ts:169-179), the loop dry-runs the patch through the TS compiler, applies with backup, re-runs only the affected snapshot test, confirms 100% pass, stops. Before: 1 failing snapshot. After: 0 failing, 1 fix applied, 1 backup at .test-genie-backups/.

2. Flutter widget dispose() automation

AnimationController left undisposed. test-genie sees the missing dispose() override, generates a Dart @override dispose() { controller.dispose(); super.dispose(); } block (suggestFixes.ts:214-217), runs dart analyze on the patched file, applies, re-runs flutter test, converges.

3. iOS retain-cycle (closure capture)

self.timer = Timer.scheduledTimer(...) { _ in self.tick() } — rule-based detector flags closure self-capture, fixer rewrites to [weak self] _ in guard let self = self else { return }; self.tick() (suggestFixes.ts:239-242). If swiftc is on PATH the syntax check is real; otherwise test-genie reports "downgraded validation" so you know.


How the iterate-fix loop works

┌────────────────────┐

│ collect tests │ (run_scenario_test / supplied list) └─────────┬──────────┘ │ pass-rate ≥ threshold? ── yes ──▶ SUCCESS │ no ▼ ┌────────────────────┐ │ detect issues │ memory + logic analyzers └─────────┬──────────┘ │ ┌────────────────────┐ │ suggest fixes │ rule-based (default) → LLM (hybrid, optional) └─────────┬──────────┘ │ ┌────────────────────┐ │ dry-run + syntax │ TS compiler API / platform compiler / brace check └─────────┬──────────┘ │ ┌────────────────────┐ │ apply with backup │ per-file .test-genie-backups/ └─────────┬──────────┘ │ ┌────────────────────┐ │ re-run tests │ regression? yes → auto-rollback └─────────┬──────────┘ │ ▼ loop (≤ maxIterations, ≤ totalTimeout)

See [docs/ITERATE_FIX_LOOP.md](docs/ITERATE_FIX_LOOP.md) for a sequence diagram and the full safety-guard list.


Tools (23)

#ToolMode
1analyze_app_structurereal
2generate_scenariosreal
3create_test_planreal
4run_scenario_testhybrid
5run_simulationsimulated
6run_stress_testhybrid
7detect_memory_leaksreal
8detect_logic_errorsreal
9suggest_fixesreal
10confirm_fixreal
11apply_fixreal
12rollback_fixreal
13run_full_automationhybrid
14run_iterative_fix_loop (v3.0 headline)hybrid
15generate_reportreal
16get_pending_fixesreal
17get_test_historyreal
18analyze_performancereal
19analyze_code_deepreal
20generate_cicd_configreal
21`diagnose_project` (v3.1 headline — vibe-check)real
22detect_race_conditionsreal
23detect_security_issuesreal

mode legend in [docs/SIMULATION_VS_REAL.md](docs/SIMULATION_VS_REAL.md).

Plus 4 resources (test-genie://iteration-logs, …/test-history/{path}, …/iteration-logs/{loopId}, …/applied-fixes/{path}) and 3 prompts (full-test-pipeline, diagnose-failure, vibe-check).


What vibe-check catches

Race conditions (detect_race_conditions / diagnose_project):

PatternLanguageSeverityAuto-fixable (v3.1.1)
useState setter called after await without mount guardTS/JS/Reacthighno (structural)
useEffect with async fetch, no AbortController/cleanupTS/JS/Reacthighno (structural)
arr.forEach(async ...) (silent fire-and-forget)TS/JSmediumno (ordering-sensitive)
Adjacent fetches without Promise.all / sequencingTS/JSmediumno
TOCTOU: existsSync then readFileSync without lockTS/JS Nodemediumno
Non-atomic counter increment in async contextTS/JSlowno
@Published mutation outside @MainActorSwiftmediumno
Concurrent DispatchQueue writes without .barrierSwiftmediumno
MutableStateFlow mutated off Dispatchers.MainKotlinmediumno
Flow collected without flowOnKotlinlowno
Goroutine + shared map without sync.MutexGohighno

v3.1.1 honesty audit: useEffect-no-abort and forEach-await were

previously advertised as auto-fixable. They are not — wrapping with

AbortController or rewriting to Promise.all(arr.map(...)) changes

behavior we can't verify statically. They are now report-only. See

SAFETY.md.

Security (detect_security_issues / diagnose_project):

PatternSeverityCWEAuto-fixable (v3.1.1)
Hardcoded AWS / Stripe / GitHub / Google / Slack tokencritical / highCWE-798no (rotate)
Hardcoded JWT secret literalhighCWE-798no
API token in URL query stringhighCWE-200no
.env file present but not gitignoredhighCWE-538no (rotation must follow)
SQL string concat with req.params / req.bodycriticalCWE-89no
innerHTML / dangerouslySetInnerHTML with dynamic valuehighCWE-79no
eval() / new Function() with non-literalcriticalCWE-95no
Math.random() in security-sensitive file, standalone assignmenthighCWE-338yes (crypto.randomInt)
Math.random() mixed into arithmetichighCWE-338no (semantic)
`createHash('md5'\'sha1')` in security-keyword filehighCWE-327yes ('sha256')
`createHash('md5'\'sha1')` elsewheremediumCWE-327no (below severity floor)
child_process.exec with user-input template literalcriticalCWE-78no
fetch(req.query.url) (SSRF)highCWE-918no
CORS * origin + Allow-Credentials: truehighCWE-942no
Cookie set without httpOnly / secure / sameSitelowCWE-1004no
yaml.load without safe schemamediumCWE-502no

v3.1.1 honesty audit: .env/Math.random (general)/yaml.load were

previously advertised as auto-fixable. They were either too risky to

rewrite blindly or no strategy shipped — flipp

只显示了开头部分;其余内容请在仓库中阅读

问 PopNx