Test Genie
概要
作者による説明(英語の原文)
AI-powered app test automation for iOS, Android, Flutter, React Native, Web
できること
このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。
- 接続方法: パソコンで動く
- トランスポート: stdio
- カテゴリ: 開発者ツール
インストール
使っているAIアプリを選んで、設定をコピーしてください。
チェック 3/3 合格 · あなたのパソコンで動きます
まず:どの AI を使っていますか?
使っているアプリを選ぶと、下に手順が表示されます。
Claude につなげますが、先に準備が必要です
先にパソコンへ Node.js を入れてください(1 回だけ) · パソコン版 Claude アプリ(Windows または Mac)のみ。Web やスマホでは使えません
パソコン版 Claude アプリの設定ファイルを開く
SettingsDeveloperEdit Config
この設定を貼り付けて保存
{ "mcpServers": { "test-genie": { "command": "npx", "args": [ "-y", "test-genie-mcp" ] } } }Claude を終了してもう一度開く
試してみる
Test Genie を使って、私に何ができるか教えて、1 つやってみせて✓ Claude が Test Genie を使っていると言うか、回答に Test Genie のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
ChatGPT はまだ Test Genie につなげません
Test Genie はパソコンに入れて使うものですが、ChatGPT は Web 上で動くサーバーにしかつなげません
代わりにできること
A · Test Genie につなげるアプリを使う
- 先にパソコンへ Node.js を入れてください(1 回だけ) · パソコン版 Claude アプリ(Windows または Mac)のみ。Web やスマホでは使えません
- 先にパソコンへ Node.js を入れてください(1 回だけ)
- 先にパソコンへ Node.js を入れてください(1 回だけ)
- 先にパソコンへ Node.js を入れてください(1 回だけ)
B · 開発者ツール の中で ChatGPT につなげる別のサーバー
同じカテゴリでよく使われているものから、キーなしでアドレスだけでつなげるものを選びました
- Sentry✓ ChatGPT
- Front-End Checklist✓ ChatGPT
- Compiler Explorer✓ ChatGPT
Claude Code につなげますが、先に準備が必要です
先にパソコンへ Node.js を入れてください(1 回だけ)
ターミナルを開く
Mac:Command+スペースで Terminal と入力 · Windows:PowerShell を開く
このコマンドを貼り付けて Enter
claude mcp add test-genie -- npx -y test-genie-mcpClaude Code で /mcp と入力
Test Genie が一覧にあり、接続済みと表示されれば OK です
試してみる
Test Genie を使って、私に何ができるか教えて、1 つやってみせて✓ Claude Code が Test Genie を使っていると言うか、回答に Test Genie のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に Anthropic のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
Cursor につなげますが、先に準備が必要です
先にパソコンへ Node.js を入れてください(1 回だけ)
Cursor の AI チャットを Agent モードで開く
試してみる
Test Genie を使って、私に何ができるか教えて、1 つやってみせて✓ Cursor が Test Genie を使っていると言うか、回答に Test Genie のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に Cursor のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
VS Code につなげますが、先に準備が必要です
先にパソコンへ Node.js を入れてください(1 回だけ)
VS Code の AI チャットを Agent モードで開く
試してみる
Test Genie を使って、私に何ができるか教えて、1 つやってみせて✓ VS Code が Test Genie を使っていると言うか、回答に Test Genie のツール名が出れば接続成功です
メニュー名は 2026年11月11日 に VS Code のヘルプページで確認 · アプリのバージョンにより画面が少し違うことがあります
開発者向け:ターミナルのコマンドと JSON 設定
パソコンにインストール
Claude Code
claude mcp add test-genie -- npx -y test-genie-mcpClaude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"test-genie": {
"command": "npx",
"args": [
"-y",
"test-genie-mcp"
]
}
}
}Cursor (~/.cursor/mcp.json)
{
"mcpServers": {
"test-genie": {
"command": "npx",
"args": [
"-y",
"test-genie-mcp"
]
}
}
}VS Code (mcp.json)
{
"servers": {
"test-genie": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"test-genie-mcp"
]
}
}
}この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。
ひと目でわかる
使えるアプリ
このサーバーのつなぎ方と、各アプリの公式ドキュメントに基づきます。2026年11月10日に確認。
パソコン上で動かせるアプリ
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
できること
パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。
基本チェックi
誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月11日にチェック
- ✓ 合格
作者とリポジトリが一致
レジストリ名は、リポジトリを所有するGitHubアカウント MUSE-CODE-SPACE で確認済みです
- ✓ 合格
今もメンテナンスされている
コードの最終更新:20 日前
- ✓ 合格
ライセンスがある
MITを使用
- – 対象外
エンドポイントが応答する
これはパソコンで動くため、インターネット上のエンドポイントはありません
- – 対象外
OAuthでサインイン
パソコンで動き、代わりにローカルの設定を使います
- … 未チェック
ツールの説明に隠れた指示がない
パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです
話し合い
質問、コツの共有、使えないことの報告ができます。「役に立った」の多い順です。
ユーザーレビュー
まだレビューはありません
開発者ツールのほかのサーバーとの比較i
- このカテゴリのほかの5755件のうち0%よりスターが多い
- このカテゴリのほかの5755件のうち2%より最近レジストリに公開
- 基本チェックの結果が、このカテゴリのほかの5755件のうち100%と同じかそれ以上
レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。
よくある質問
Test Genieは安全ですか?
当てはまる基本チェック3項目のうち3項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。
どんなキーやコードが必要ですか?
レジストリには必須のキーは載っていません。ただし、最初に使うときにサインインを求めるサーバーもあります。
パソコンで動きますか、それともクラウドですか?
あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。
今もメンテナンスされていますか?
GitHubリポジトリの最終更新は20 日前、最新バージョン(2.0.3)がレジストリに届いたのは11 か月前です。
どのアプリで使えますか?
Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。
代わりに使えるものは?
同じカテゴリには:REA, Netdata, Front-End Checklist
代わりの候補
同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。
カードの見方:↓ 週あたりのダウンロードi★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i
Netdata
Real-time infrastructure monitoring with metrics, logs, alerts, and ML-based anomaly detection.
Front-End Checklist
Review frontend code and live pages against 386 quality-gated web development rules.
作者の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: truefor the small, safe mechanical fixes (weak-hash, simpleMath.randomassignment) — 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
- Address the critical / high findings above.
- Re-run diagnose_project after fixing to confirm convergence.
- 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)
| # | Tool | Mode |
|---|---|---|
| 1 | analyze_app_structure | real |
| 2 | generate_scenarios | real |
| 3 | create_test_plan | real |
| 4 | run_scenario_test | hybrid |
| 5 | run_simulation | simulated |
| 6 | run_stress_test | hybrid |
| 7 | detect_memory_leaks | real |
| 8 | detect_logic_errors | real |
| 9 | suggest_fixes | real |
| 10 | confirm_fix | real |
| 11 | apply_fix | real |
| 12 | rollback_fix | real |
| 13 | run_full_automation | hybrid |
| 14 | run_iterative_fix_loop (v3.0 headline) | hybrid |
| 15 | generate_report | real |
| 16 | get_pending_fixes | real |
| 17 | get_test_history | real |
| 18 | analyze_performance | real |
| 19 | analyze_code_deep | real |
| 20 | generate_cicd_config | real |
| 21 | `diagnose_project` (v3.1 headline — vibe-check) | real |
| 22 | detect_race_conditions | real |
| 23 | detect_security_issues | real |
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):
| Pattern | Language | Severity | Auto-fixable (v3.1.1) |
|---|---|---|---|
useState setter called after await without mount guard | TS/JS/React | high | no (structural) |
useEffect with async fetch, no AbortController/cleanup | TS/JS/React | high | no (structural) |
arr.forEach(async ...) (silent fire-and-forget) | TS/JS | medium | no (ordering-sensitive) |
Adjacent fetches without Promise.all / sequencing | TS/JS | medium | no |
TOCTOU: existsSync then readFileSync without lock | TS/JS Node | medium | no |
| Non-atomic counter increment in async context | TS/JS | low | no |
@Published mutation outside @MainActor | Swift | medium | no |
Concurrent DispatchQueue writes without .barrier | Swift | medium | no |
MutableStateFlow mutated off Dispatchers.Main | Kotlin | medium | no |
Flow collected without flowOn | Kotlin | low | no |
Goroutine + shared map without sync.Mutex | Go | high | no |
v3.1.1 honesty audit:
useEffect-no-abortandforEach-awaitwere
previously advertised as auto-fixable. They are not — wrapping with
AbortControlleror rewriting toPromise.all(arr.map(...))changes
behavior we can't verify statically. They are now report-only. See
Security (detect_security_issues / diagnose_project):
| Pattern | Severity | CWE | Auto-fixable (v3.1.1) | |
|---|---|---|---|---|
| Hardcoded AWS / Stripe / GitHub / Google / Slack token | critical / high | CWE-798 | no (rotate) | |
| Hardcoded JWT secret literal | high | CWE-798 | no | |
| API token in URL query string | high | CWE-200 | no | |
.env file present but not gitignored | high | CWE-538 | no (rotation must follow) | |
SQL string concat with req.params / req.body | critical | CWE-89 | no | |
innerHTML / dangerouslySetInnerHTML with dynamic value | high | CWE-79 | no | |
eval() / new Function() with non-literal | critical | CWE-95 | no | |
Math.random() in security-sensitive file, standalone assignment | high | CWE-338 | yes (crypto.randomInt) | |
Math.random() mixed into arithmetic | high | CWE-338 | no (semantic) | |
| `createHash('md5'\ | 'sha1')` in security-keyword file | high | CWE-327 | yes ('sha256') |
| `createHash('md5'\ | 'sha1')` elsewhere | medium | CWE-327 | no (below severity floor) |
child_process.exec with user-input template literal | critical | CWE-78 | no | |
fetch(req.query.url) (SSRF) | high | CWE-918 | no | |
CORS * origin + Allow-Credentials: true | high | CWE-942 | no | |
Cookie set without httpOnly / secure / sameSite | low | CWE-1004 | no | |
yaml.load without safe schema | medium | CWE-502 | no |
v3.1.1 honesty audit:
.env/Math.random(general)/yaml.loadwere
previously advertised as auto-fixable. They were either too risky to
rewrite blindly or no strategy shipped — flipp