stryker-mcp-reporter
v1.16.1
Published
Ein Stryker Reporter Plugin, das Mutation Testing Ergebnisse nativ über das Model Context Protocol (MCP) bereitstellt.
Maintainers
Readme
⚡ stryker-mcp-reporter & Control Server
"100% Code Coverage sagt dir nur, was ausgeführt wurde. Stryker MCP befähigt deine KI zu beweisen, was unzerstörbar ist."
Ein hochmodernes Stryker Mutator Plugin & Standalone Control Server, das Mutation Testing Ergebnisse sowie interaktive Steuerung per Model Context Protocol (MCP) über SSE und stdio für KI-Agenten (Antigravity, Cursor, Cline, Roo Code, Claude Desktop) bereitstellt.
🚀 Quickstart • 🤖 KI-Agenten Setup • 🏗️ Architektur • 🤝 Contributing
📖 Die Story: Warum stryker-mcp-reporter?
[!IMPORTANT] Das 100% Coverage-Paradoxon:
Standard Code Coverage misst lediglich, welche Zeilen Code während eines Tests einmal ausgeführt wurden – selbst wenn deine Tests schwache oder gar keine Assertions enthalten. Generative KI-Agenten schreiben heute in Sekunden hunderte Zeilen Testcode, neigen aber zum "Happy Path Bias" und lassen logische Randfälle unbemerkt durch.
Die Stryker MCP Revolution:
Stryker mutiert deinen Quellcode (z. B. verwandelt es > in >=, löscht Rückgabewerte oder invertiert Logik). Überlebt ein Mutant, existiert eine unsichtbare Testlücke.stryker-mcp-reporter macht diese Mutanten für KI-Agenten lesbar und steuerbar. KI-Pair-Programmer erkennen Lücken autonom, schreiben exakte Grenzwert-Tests und eliminieren überlebende Mutanten in Echtzeit.
📸 In Aktion (Reale Screenshots)
📊 1. Echter Stryker HTML Mutation Testing Report

🧬 2. Mutanten-Detailanalyse mit In-Line Code Diff

💻 3. Standalone MCP Control Server & Real-Time Protocol Verification (npm run test:e2e)

🤖 4. Live KI-Mutanten Auto-Remediation (suggest_mutant_fixes)
Analysiert überlebende Mutanten im Code-Kontext und erzeugt präzise TypeScript-Assertions (expect(result).toBe(...)) sowie konkrete Randwert-Test-Snippets für KI-Pair-Programmer.
🔮 5. Gezielte Mutanten-Risikoprognose (predict_mutation_impact)
Analysiert geänderte Quelldateien aus git diff in unter einer Sekunde und klassifiziert das Risiko überlebender Mutanten (HIGH, MEDIUM, LOW) für optimale Test-Priorisierung.
📈 6. Historische Score Trend Analytics (stryker://analytics/trends)
Verfolgt den historischen Verlauf von Mutation-Scores über mehrere Testläufe hinweg, berechnet Score-Deltas (+5.7% Steigerung) und visualisiert die Trend-Richtung.
🌟 Hauptmerkmale
- ⚡ Interaktives Mutation Testing: KI-Agenten können Mutationstests gezielt per MCP-Tool-Call anstoßen, beobachten und auswerten.
- 🤖 AI Mutant Auto-Remediation:
suggest_mutant_fixesgeneriert maßgeschneiderte Unit-Test Assertions für überlebte Mutanten. - 🛠️ Hybrid Auto-Remediation Profiling: Kombiniert statische Analyse und dynamisches Profiling, um KI-Reparaturvorschläge für überlebende Mutanten noch präziser zu machen.
- 🔮 Git-Diff Risikoprognose:
predict_mutation_impactprognostiziert in < 1s das Mutationsrisiko geänderter Quellcodedateien. - 🎯 Targeted Git-Diff Executions: Mit
run_targeted_mutation_testswerden nur die in Git geänderten TypeScript-Dateien getestet – spart bis zu 90% Laufzeit! - 💾 SQLite Caching & History: Speichert Testergebnisse, Trends und Historie sicher in einer lokalen SQLite Datenbank für pfeilschnellen Abruf und Langzeit-Analysen.
- 📈 Score Trend Tracking: Greife über
stryker://analytics/trendsauf den historischen Score-Verlauf und Score-Deltas zu. - 📦 Live MCP Resources: Greife über URIs wie
stryker://report/survivedoderstryker://statusdirekt auf Testdaten zu. - 📌 Persistente Desktop Overlays: Endgültige Testergebnisse (Completion/Error) bleiben auf dem Bildschirm fixiert, bis sie aktiv vom Entwickler weggeklickt werden.
- 🔊 Dezenter Mutant Hunter Cyber-Sound: Beinhaltet einen frei nutzbaren, synthetisierten Cyber-Chime (
assets/sounds/mutant_hunter.wav), der das Ende der Mutantenjagd ankündigt.
📦 Installation & Schnellstart
Voraussetzungen: Node.js >= 22.0.0 und @stryker-mutator/core >= 8.0.0.
Installiere das Plugin in deinem Projekt:
npm install --save-dev stryker-mcp-reporterModus 1: Stryker Reporter Plugin
Füge das Plugin und den Reporter zu deiner stryker.config.mjs hinzu:
// stryker.config.mjs
export default {
plugins: [
"@stryker-mutator/*",
"stryker-mcp-reporter",
],
reporters: [
"clear-text",
"progress",
"mcp", // MCP Reporter aktivieren
],
};Beim Ausführen von npx stryker run startet der MCP-Server nach dem Testlauf automatisch auf http://127.0.0.1:3000/mcp/sse.
Modus 2: Standalone MCP Control Server
Starte den MCP Server direkt über die CLI:
# STDIO Modus (für lokale KI-Tools & direktes Spawning):
npx stryker-mcp-server --stdio
# Oder SSE Modus (Server-Sent Events via HTTP Port 3000):
npx stryker-mcp-server --sseDer Server steht dauerhaft bereit und erlaubt KI-Agenten das dynamische Ausführen von Mutationstests per MCP Tool Call.
🤖 Interaktives KI-Agenten Setup
Verbinde deine bevorzugte KI-Entwicklungsumgebung im Handumdrehen mit stryker-mcp-reporter. Du kannst zwischen STDIO (direktes Spawning via CLI, empfohlen) und SSE (HTTP/Server-Sent Events) wählen.
🌟 Option A: STDIO Transport (Empfohlen für lokale IDEs & KI-Tools)
Wähle die passende Konfiguration für dein Betriebssystem aus:
🐧 🍏 Linux & macOS (npx):
{
"mcpServers": {
"stryker-mutation-testing": {
"command": "npx",
"args": ["-y", "--silent", "stryker-mcp-reporter"]
}
}
}🪟 Windows (cmd.exe Wrapper - empfohlener Npx-Start):
Warum
cmd.exe? Auf Windows istnpxein Batch-Skript (npx.cmd). Viele KI-Tools starten Prozesse ohne Shell-Kontext.cmd.exe /cstellt den sauberen Start sicher und das--silent-Flag verhindertstdout-Verschmutzung.
{
"mcpServers": {
"stryker-mutation-testing": {
"command": "cmd.exe",
"args": [
"/c",
"npx",
"-y",
"--silent",
"stryker-mcp-reporter"
]
}
}
}⚡ Direkter Pfad (Lokale Entwicklung / Maximale Geschwindigkeit):
{
"mcpServers": {
"stryker-mutation-testing": {
"command": "node",
"args": [
"C:\\Users\\DEIN_BENUTZER\\Projects\\stryker-mcp-reporter\\dist\\cli.js"
]
}
}
}🌐 Option B: SSE Transport (Server-Sent Events via HTTP)
Starte den MCP Server vorher im Hintergrund via npx stryker-mcp-server --sse und trage folgende URL ein:
{
"mcpServers": {
"stryker-mutation-testing": {
"url": "http://127.0.0.1:3000/mcp/sse"
}
}
}1. 🪐 Google Antigravity (Antigravity CLI / IDE)
- Projekt-Ebene:
.antigravity/mcp.json(im Wurzelverzeichnis deines Projekts) - Globale Konfiguration:
- Windows:
%USERPROFILE%\.gemini\config\mcp_config.json - macOS / Linux:
~/.gemini/config/mcp_config.json
- Windows:
{
"mcpServers": {
"stryker-mutation-testing": {
"command": "cmd.exe",
"args": ["/c", "npx", "-y", "--silent", "stryker-mcp-reporter"]
}
}
}2. ⚡ Cursor IDE
- Projekt-Ebene:
.cursor/mcp.json(im Wurzelverzeichnis deines Projekts) - Globale Konfiguration:
- Windows:
%USERPROFILE%\.cursor\mcp.json - macOS / Linux:
~/.cursor/mcp.json - Oder im GUI-Menü: Cursor Settings -> Features -> MCP
- Windows:
{
"mcpServers": {
"stryker-mutation-testing": {
"command": "cmd.exe",
"args": ["/c", "npx", "-y", "--silent", "stryker-mcp-reporter"]
}
}
}3. 🧩 Cline (VS Code Extension)
- Datei:
cline_mcp_settings.json - Pfade:
- Windows:
%APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json - macOS:
~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json - Linux:
~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
- Windows:
- Oder in VS Code: Cline Tab -> MCP Servers Icon -> Configure MCP Servers
{
"mcpServers": {
"stryker-mutation-testing": {
"command": "cmd.exe",
"args": ["/c", "npx", "-y", "--silent", "stryker-mcp-reporter"]
}
}
}4. 🦘 Roo Code (VS Code Extension)
- Projekt-Ebene:
.roo/mcp.json - Globale Konfiguration:
mcp_settings.json- Windows:
%APPDATA%\Code\User\globalStorage\rooveterinaryinc.roo-cline\settings\mcp_settings.json - macOS:
~/Library/Application Support/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json - Linux:
~/.config/Code/User/globalStorage/rooveterinaryinc.roo-cline/settings/mcp_settings.json
- Windows:
{
"mcpServers": {
"stryker-mutation-testing": {
"command": "cmd.exe",
"args": ["/c", "npx", "-y", "--silent", "stryker-mcp-reporter"]
}
}
}5. 🏄 Windsurf IDE (Codeium)
- Datei:
mcp_config.json - Pfade:
- Windows:
%USERPROFILE%\.codeium\windsurf\mcp_config.json - macOS / Linux:
~/.codeium/windsurf/mcp_config.json
- Windows:
- Oder via Command Palette:
Ctrl+Shift+P/Cmd+Shift+P-> Windsurf: Open MCP Configuration
{
"mcpServers": {
"stryker-mutation-testing": {
"command": "cmd.exe",
"args": ["/c", "npx", "-y", "--silent", "stryker-mcp-reporter"]
}
}
}6. 🧡 Claude Desktop
- Datei:
claude_desktop_config.json - Pfade:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
{
"mcpServers": {
"stryker-mutation-testing": {
"command": "cmd.exe",
"args": ["/c", "npx", "-y", "--silent", "stryker-mcp-reporter"]
}
}
}🔌 MCP Schnittstellen
📦 Resources (Datenabruf)
| Resource URI | MimeType | Beschreibung |
| :--- | :--- | :--- |
| stryker://report/latest | application/json | Der vollständige Stryker Mutation Testing Report im JSON-Format. |
| stryker://report/summary | application/json | Kompakte Zusammenfassung der Mutations-Metriken (Score, Killed, Survived). |
| stryker://report/survived | application/json | Liste aller überlebenden Mutanten inkl. Pfad, Zeile, Mutator & Ersetzung. |
| stryker://analytics/trends | application/json | Historische Trendanalyse der Mutationsscore-Entwicklung und Score-Deltas. |
| stryker://status | application/json | Aktueller Ausführungsstatus von Stryker (idle, running, completed, failed). |
🛠️ Tools (Interaktive Steuerung)
| Tool Name | Parameter | Beschreibung |
| :--- | :--- | :--- |
| run_mutation_tests | mutate, concurrency, testRunner, configFile | Startet einen vollständigen oder spezifischen Mutationstest-Lauf. |
| run_targeted_mutation_tests | commitSha, revision, fromRevision, toRevision | Erkennt in Git geänderte TypeScript-Dateien (git diff) und testet gezielt nur diese. |
| suggest_mutant_fixes | filePath | Generiert KI-gestützte Behebungsratschläge, konkrete Code-Assertions & Boundary-Tests für überlebte Mutanten. |
| predict_mutation_impact | changedFiles | Analysiert geänderte Quelldateien und prognostiziert in < 1s das Risiko überlebender Mutanten (HIGH, MEDIUM, LOW). |
| get_mutation_score | - | Ruft den aktuellen Mutationsscore und die Gesamtzusammenfassung ab. |
| get_survived_mutants | filePath | Liefert alle überlebenden Mutanten inkl. Dateipfad, Zeile, Mutator-Typ & Ersetzungscode. |
| configure_desktop_notifications | enabled, persistentOverlay, sound | Konfiguriert die nativen Desktop-Benachrichtigungen (Aktivieren, Ton, Persistenter Overlay Status). |
💡 Prompts (KI-gestützte Testgenerierung)
explain_survived_mutants: Erzeugt eine strukturierte KI-Instruktion zur detaillierten Ursachenanalyse überlebender Mutanten und zur automatischen Erstellung fehlender Unit Tests nach TDD-Standards.
🏗️ Software Engineering & Architektur-Highlights
stryker-mcp-reporter ist nach den Prinzipien der Clean Architecture / Hexagonal Architecture aufgebaut, um maximale Testbarkeit, Wartbarkeit und Entkopplung zu gewährleisten.
graph TD
subgraph Infrastructure Layer ["Infrastruktur (Adapters)"]
Express["Express Server (SSE / MCP)"]
McpResourceController["McpResourceController"]
McpToolController["McpToolController"]
McpPromptController["McpPromptController"]
StrykerRunner["StrykerCliRunnerAdapter"]
GitAdapter["GitCliAdapter"]
end
subgraph Application Layer ["Applikation (Use Cases)"]
RunUC["RunMutationTestsUseCase"]
RunTargetedUC["RunTargetedMutationTestsUseCase"]
GetSurvivedUC["GetSurvivedMutantsUseCase"]
GetSummaryUC["GetMutationSummaryUseCase"]
PublishUC["PublishReportUseCase"]
end
subgraph Core Domain Layer ["Kern-Domäne (Pure TS)"]
ReportStream["ReportStream"]
StatusStream["ExecutionStatusStream"]
Entity["MutationInsightEntity"]
Result["Result<T, E>"]
end
Express --> McpResourceController
Express --> McpToolController
Express --> McpPromptController
McpToolController --> RunUC
McpToolController --> RunTargetedUC
McpToolController --> GetSurvivedUC
McpResourceController --> GetSummaryUC
RunUC --> ReportStream
RunUC --> StatusStream
RunUC --> StrykerRunner
RunTargetedUC --> GitAdapter
RunTargetedUC --> RunUC
PublishUC --> ReportStream🧠 Vector DB & Developer Skill-Gap Data Model
stryker-mcp-reporter transformiert rohe Mutanten-Ergebnisse in angereicherte MutationInsightEntity-Objekte. Diese enthalten strukturierte Daten zur Speicherung in Vektordatenbanken (Qdrant, Pinecone, ChromaDB, Weaviate) für RAG-Pipelines:
- Mutator-Kategorie: (z. B.
Arithmetic & Math,Equality & Logic,Exception Handling). - Architekturschicht: (z. B.
Domain,Application,Infrastructure). - Risikoscore & Schweregrad: Automatisches Scoring (0 – 100) zur Priorisierung von Testlücken.
- Embedding Payload: Vektor-DB-ready Text-String für automatisierte KI-Trainings und Entwickler-Analysen.
🤝 Contributor Onboarding & Community
Wir freuen uns über jede Unterstützung! Egal ob Bugfix, neue MCP-Tools oder Dokumentations-Verbesserungen.
🏁 Quickstart für Contributor
git clone https://github.com/kluth/stryker-mcp-reporter.git
cd stryker-mcp-reporter
npm install
npm test # Unit Tests (Vitest)
npm run test:e2e # Real E2E MCP SSE Protocol Verification
npm run test:mutation # Stryker Mutation Testing (100% Target)📝 Lizenz
MIT License © 2026 Matthias Kluth
