vacuous-tests-mcp
vacuous-tests-mcp
Ein MCP-Server, der Tests findet, die unabhängig vom Code immer bestehen.
Ein inhaltsloser Test ist schlimmer als ein fehlender. Ein fehlender Test ist sichtbar fehlend. Ein inhaltsloser Test sitzt in der Suite, läuft grün, zählt in der Gesamtzahl und wird als Beleg angeführt, dass ein Verhalten abgedeckt ist – während er nichts prüft. Es ist Abdeckung, die unsichtbar fehlt, und er überlebt genau die Situationen, für die Tests existieren.
Sie sind leicht aus Versehen zu schreiben und schwer durch Lesen zu erkennen, denn ein inhaltsloser Test und ein echter sehen oft fast identisch aus.
Der Fall, aus dem das entstanden ist
Eine Rust-Datei mit 6,764 Zeilen in einem Projekt, dessen Testsuite bereits regelmäßig manuell geprüft wurde. Zwei Tests darin:
// flagged
const SRC: &str = include_str!("lib.rs");
assert!(SRC.contains("pub sas_verified: bool,"), "the field must be exposed");// not flagged
const SRC: &str = include_str!("lib.rs");
let prod = SRC.split_once("\n#[cfg(test)]\nmod tests {").expect("test module").0;
assert!(prod.contains("InviterSecrets::create_for_group("), "production never calls it");Beide betten den eigenen Quellcode der Datei ein. Der erste testet direkt auf SRC – und SRC enthält den Test selbst, einschließlich des genau gesuchten Strings. Er ist konstruktionsbedingt wahr: Löscht man den Produktionscode, den er angeblich schützt, bleibt er grün. Der zweite schneidet zuerst das Testmodul ab und testet nur auf den Produktionsausschnitt, sodass er fehlschlägt, wenn sich der Produktionscode ändert. Das ist eine echte Absicherung.
Beim Scannen dieser Datei wird ein Treffer gemeldet, an der richtigen Zeile, und die anderen vier include_str!-Stellen bleiben unberührt. Der Scanner folgt der Bindung und nicht dem Mustervergleich auf include_str!, was die beiden Fälle unterscheidet.
Related MCP server: leakguard-mcp
Regeln
Regel | Schweregrad | Was sie erkennt |
| hoch | Der Test bettet seinen eigenen Quellcode ein und prüft, ob ein Literal darin vorkommt. Das Literal steht in der Prüfung, also kann es nie fehlschlagen. |
| hoch | Keinerlei Assertion. Nur ein Panic oder Throw kann den Test fehlschlagen lassen, also besteht falsches, aber stilles Verhalten. |
| hoch |
|
| hoch | Nichts im Körper, das fehlschlagen könnte. |
| Info |
|
Sprachen
Sprache | Methode | Genauigkeit |
Python |
| Exakt |
Rust | Klammer-Matching-Scanner über den Quelltext | Heuristisch |
JavaScript / TypeScript | Klammer-Matching-Scanner über den Quelltext | Heuristisch |
Die Rust- und JS-Scanner maskieren String-Literale und Kommentare, bevor sie abgleichen, sodass eine { in einem String oder eine auskommentierte Assertion sie nicht in die Irre führen kann. Sie sind darauf abgestimmt, einen Fall eher zu übersehen als zu erfinden: Ein falsch positiver Treffer kostet hier mehr als ein falsch negativer, denn die erste falsche Antwort lehrt die Leute, die Ausgabe zu ignorieren.
Behandeln Sie jeden Treffer als eine zu prüfende Frage, nicht als Urteil. Jeder nennt eine Datei und eine Zeile, sodass die Bestätigung Sekunden dauert.
Installation
Noch nicht auf PyPI – von der Quelle installieren:
git clone https://github.com/zegroged/vacuous-tests-mcp
cd vacuous-tests-mcp
pip install .Das legt einen vacuous-tests-mcp-Befehl auf Ihren PATH.
Verwendung über einen MCP-Client
Fügen Sie Folgendes zur MCP-Konfiguration Ihres Clients hinzu:
{
"mcpServers": {
"vacuous-tests": {
"command": "vacuous-tests-mcp"
}
}
}Für Claude Code:
claude mcp add vacuous-tests -- vacuous-tests-mcpBitten Sie es dann, etwas zu scannen:
Scanne ./src nach Tests, die nicht fehlschlagen können.
Werkzeuge
scan_tests(path, include_skipped=True, max_findings=100) – Durchsucht eine Datei oder ein Verzeichnis und meldet Tests, die nicht fehlschlagen können. Build- und Abhängigkeitsverzeichnisse (target, node_modules, .venv, …) werden übersprungen. Die Ergebnisse kommen zuerst mit der höchsten Schwere, jeweils mit Pfad, Zeile, Testname, Regel und Ausschnitt.
list_rules() – Jede Regel mit einer Beschreibung, damit ein Modell entscheiden kann, wonach es fragen soll.
explain_rule(rule) – Was eine Regel erkennt und wie der Treffer normalerweise behoben wird.
Der Server liest nur. Er schreibt keine Dateien, führt den gescannten Code nicht aus und schaut nicht über den ihm gegebenen Pfad hinaus.
Entwicklung
pip install -e ".[dev]"
pytestDie Suite deckt jede Regel in jeder Sprache ab und – was wichtiger ist – prüft, dass ein normaler Test neben einem inhaltslosen nicht gemeldet wird. Es gibt auch einen End-to-End-Test, der den Server als Unterprozess startet und ihn über einen echten MCP-Handshake steuert, sodass die Protokollebene abgedeckt und nicht nur angenommen wird.
Einschränkungen
Die Erkennung von Rust und JS/TS ist textbasiert, keine Analyse. Makro-generierte Tests, ungewöhnliche Formatierung und stark verschachtelte Closures können übersehen werden.
no-assertionsweiß nicht, dass ein Test möglicherweise nur dazu dient, zu beweisen, dass etwas nicht in Panik gerät. Ein solcher Test ist nach der Regel ein echter Treffer und nach Absicht ein falscher; sagen Sie es mit einer expliziten Assertion, dann wird es ruhig.Es werden nur die oben genannten Sprachen gescannt. Andere Dateien werden ignoriert, nicht geraten.
Lizenz
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Tools
Related MCP Servers
- FlicenseAqualityCmaintenanceAI-powered code review tool that detects AI-generated code defects invisible to traditional linters — hallucinated packages, deprecated APIs, cross-file contradictions, hidden security anti-patterns, and over-engineering. Works as a standalone CLI, GitHub Action, or MCP server. Supports TypeScript, Python, Java, Go, and Kotlin. Free for individuals, no API key required.433
- AlicenseAqualityAmaintenanceStatic-analyzes Python code for lookahead bias and data leakage, preventing invalid backtests in time-series ML.5MIT
- AlicenseAqualityBmaintenanceOn-demand micro-mutation sandbox for AI test verification that maps weaknesses in unit tests by running isolated mutation testing via the Model Context Protocol.342MIT

OrangePro MCPofficial
AlicenseAqualityAmaintenanceAnalyzes code to map behaviors, identify untested gaps, and generate grounded integration tests that actually run.81564317MIT
Related MCP Connectors
Flaky test detection, root cause analysis, and fix suggestions for development teams.
Deterministic validation for AI-generated artifacts: JSON Schema, OpenAPI response, SQL syntax.
Zero-config MCP security scanner for AI-generated apps. 25K+ vulnerability patterns.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/zegroged/vacuous-tests-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server