Chaos-MCP
Breek je code met opzet, en ontdek wat je tests nooit opmerkten.
Chaos (Χάος) is in de Griekse kosmogonie het allereerste wat bestond, de gapende leegte die Hesiodus in de Theogonie voor alles laat komen. Orde ontstond eruit, niet andersom. De naam betekent 'kloof' of 'afgrond', en dat is precies waar deze tool naar zoekt.
- TypeScript
- MCP
- StrykerJS
- cosmic-ray
- cargo-mutants
- Infection
GitHub (opent in een nieuw tabblad)README (opent in een nieuw tabblad)Changelog (opent in een nieuw tabblad)
Wat het doet
Chaos-MCP is een MCP-server met drie tools: audit_code_resilience (één bestand auditen), triage_test_coverage (een hele boom zwakste-eerst rangschikken) en estimate_audit (een goedkope schatting vooraf van het aantal mutanten en de looptijd). De tool draait geïsoleerde mutation-testing op je bronbestand: hij wijzigt met opzet kleine logische details, zoals > in >=, en toetst of je bestaande tests dat opmerken. Een mutant die overleeft, wijst een gat aan dat je dekkingspercentage nooit liet zien.
Elke run gebeurt in een sandbox: je echte werkruimte wordt nooit aangeraakt, en het echte pad van het doelbestand binnen die sandbox ligt wordt gecontroleerd voordat een engine draait. Vier mutation-engines dekken vier ecosystemen: StrykerJS voor TypeScript en JavaScript, cosmic-ray voor Python, cargo-mutants voor Rust en Infection voor PHP, elk native of via een vastgepind container-image, zodat de host de toolchain niet hoeft te installeren.
Snel starten
Chaos-MCP staat nog niet op npm, dus installeer het vanaf de broncode.
git clone https://github.com/AraneaDev/Chaos-MCP.git
cd Chaos-MCP
npm install
npm run build
claude mcp add chaos-mcp -- node /absolute/path/to/Chaos-MCP/build/index.jsVoorbeelden
Twee aanroepen, allebei echt uitgevoerd op de eigen broncode van Chaos-MCP.
Een snelle schatting vooraf, zonder dat er een mutatie draait:
Aanroep (estimate_audit):
{ "filePath": "src/utils/path-safety.ts" }Resultaat:
{
"target": "src/utils/path-safety.ts",
"language": "typescript",
"mutants": 36,
"fidelity": "approx",
"basis": "source heuristic: 31 constructs",
"note": "Approximate mutant count from a source-parse heuristic; the real audit may differ. Run audit_code_resilience for exact results."
}Een volledige audit van een klein bestand:
Aanroep (audit_code_resilience):
{ "filePath": "src/utils/ignore-dirs.ts", "maxSurvivors": 5 }Resultaat:
{
"target": "src/utils/ignore-dirs.ts",
"mutationScore": "100.00%",
"summary": { "total": 8, "killed": 8, "survived": 0 },
"survivors": [],
"noCoverage": [],
"note": "No surviving mutants — the test suite caught every mutation.",
"runId": "f17fcb15"
}Mogelijkheden
| Tool | Wat het doet |
|---|---|
audit_code_resilience | Muteert één bestand en rapporteert per regel welke mutanten je tests wel en niet doodden |
triage_test_coverage | Rangschikt een hele boom zwakste-eerst, met optionele git-diff-scoping |
estimate_audit | Snelle schatting van het aantal mutanten en, optioneel, de looptijd, voorafgaand aan een volledige run |
| Taal | Engine | Nauwkeurigheid van estimate_audit |
|---|---|---|
| TypeScript/JavaScript | StrykerJS | approx |
| Python | cosmic-ray | approx |
| Rust | cargo-mutants | exact |
| PHP | Infection | approx |
Elke audit draait desgewenst in een vastgepinde container in plaats van native op de host. Een runId uit een eerdere audit laat je precies die overlevende mutanten herverifiëren nadat je tests hebt aangevuld. Mutanten die logisch equivalent zijn aan het origineel kun je onderdrukken, waarna ze buiten de score blijven. minScore zet elke audit of triage om in een pass/fail-veld voor CI, zonder ooit zelf af te breken.
Configuratie
Chaos-MCP leest chaos-mcp.config.json uit de root van je werkruimte.
{
"defaultTimeoutMs": 300000,
"mutatorDenylist": ["StringLiteral"],
"concurrency": 4,
"defaultMaxFiles": 25,
"defaultMaxSurvivors": 10,
"defaultSeverityFloor": "medium",
"container": {
"mode": "auto",
"runtime": "docker",
"cpus": 2,
"memoryMb": 4096
}
}mutatorDenylist sluit mutatortypen globaal uit. defaultMaxSurvivors en defaultSeverityFloor begrenzen hoeveel overlevende mutanten een rapport toont en vanaf welke ernst. container.mode: "auto" gebruikt een container zodra de geconfigureerde runtime bereikbaar is, en valt anders terug op native uitvoering.