Skip to main content
Glama
sudo-ai-git

io.github.sudo-ai-git/mcp-benchmark-hygiene

mcp-benchmark-hygiene

mcp-name: io.github.sudo-ai-git/mcp-benchmark-hygiene

Deterministische Erkennung des pytest-Konfigurationslecks, das Agent-Benchmark-/Funktionsbewertung stillschweigend korrumpiert.

Kein LLM. Kein Netzwerk. Eine Frage, zuverlässig beantwortet:

Wenn ich python -m pytest <tests> in diesem Workspace ausführe, erbt es dann ein Host-Coverage-/Abbruch-Gate, das bestehenden Code fälschlich als fehlgeschlagen bewertet?


Der Fehler, den dies erkennt

Automatisierte Agenten-Bewertungs-Harnesses führen oft python -m pytest <hidden_tests> im Workspace des Ziels aus. Wenn dieser Workspace unter einer Repository-Wurzel verschachtelt ist, die pytest-addopts trägt — z. B.:

[tool.pytest.ini_options]
addopts = "--cov=harness --cov-report=term-missing:skip-covered --cov-fail-under=80"

...pytest löst diese Host-pyproject.toml als sein Rootdir auf, erbt die addopts und scheitert an dem eigenen Coverage-Gate des Hosts (harness bei 0 % gesammelt → unter dem Schwellenwert → Exit-Code ungleich Null). Das Harness zeichnet dann funktional BESTANDENEN Code als FEHLGESCHLAGEN auf.

Genau das ist der Fehler, der in sudo-ai-git/vulcanbench-findings dokumentiert ist: Der deklarative Grader von VulcanBench bewertete aus diesem Grund jede funktionale Aufgabe fälschlich als 0.0; mit -o addopts=, das das Leck neutralisiert, bestanden dieselben Workspaces 10/10.

Related MCP server: forge-repo-mcp

Der Fix, den es dir an die Hand gibt

Wenn ein Workspace als CORRUPTED markiert ist, gibt das Tool den korrigierten Befehl zurück:

python -m pytest -o addopts= <tests>

-o addopts= entfernt geerbte Coverage-/Abbruch-Gates. (Oder führe den Grader außerhalb der Repository-Wurzel aus.)

Werkzeuge

tool

purpose

inspect_workspace(path)

vollständige Analyse: ini-Kette, effektive addopts, CLEAN/CORRUPTED/UNKNOWN-Ergebnis + korrigierter Befehl

check_addopts(path)

schlanker Boolean: corrupted + Gründe

summarize(analysis)

einzeiliger, umsetzbarer Zusammenfassungs-String

Deterministischer Kern (ohne Abhängigkeiten)

Die Analyse durchläuft das Workspace-Verzeichnis bis zur Dateisystemwurzel, liest pyproject.toml / pytest.ini / tox.ini / setup.cfg in der Reihenfolge, in der pytest sie zuerst findet, und extrahiert addopts. Markiert werden:

  • Coverage-Gates — --cov, --cov-fail-under, --cov-report, --cov-config

  • Abbruch-/Strict-Gates — --maxfail, -x, --strict, --strict-markers, --pdb, --ff

Nur Gates, die Exit-Codes ändern / die Bewertung abbrechen, werden markiert. Ein harmloses addopts wird als CLEAN mit der exakten Zeichenkette gemeldet.

Installation und Ausführung (MCP stdio)

Ein Befehl (empfohlen) — installiert aus dem Repo, kein PyPI-Token nötig:

uv tool install git+https://github.com/sudo-ai-git/mcp-benchmark-hygiene
mcp-benchmark-hygiene                        # run stdio server
mcp-benchmark-hygiene --http --port 8137     # or Streamable HTTP

Oder mit pipx: pipx install git+https://github.com/sudo-ai-git/mcp-benchmark-hygiene

Direkt aus dem Quellcode (Fallback):

{ "mcpServers": {
    "benchmark-hygiene": { "command": "python3", "args": ["/abs/path/to/mcp_server.py"] }
}}

Erfordert das offizielle mcp-Python-Paket (pip install mcp). Der deterministische Kern (inspect_workspace / check_addopts / summarize) importiert und läuft mit null Abhängigkeiten — das mcp-Paket wird nur für den stdio-Server benötigt.

Streamable HTTP (remote/für Smithery veröffentlichbar)

python3 mcp_server.py --http --port 8137   # serves on http://<host>:8137/mcp/

Führe mit --http aus, um über Streamable HTTP (einen entfernten MCP-Endpunkt) statt über stdio zu dienen. Dies ist der Transport, den smithery mcp publish <url> für die URL-basierte Veröffentlichung erwartet — sobald also ein Smithery-Service-Token existiert, lässt sich der Server unverändert bereitstellen.

Beispiel

inspect_workspace(path="/home/runner/vulcanbench/workspace/task-1")
→ {
    "ok": true,
    "workspace": "/home/runner/vulcanbench/workspace/task-1",
    "ini_chain": [{"file": "/home/runner/vulcanbench/pyproject.toml",
                   "addopts": "--cov=harness ... --cov-fail-under=80"}],
    "effective_addopts": "--cov=harness ... --cov-fail-under=80",
    "will_corrupt_grading": true,
    "verdict": "CORRUPTED",
    "fixed_command": ["python3", "-m", "pytest", "-o", "addopts=", "<tests>"],
    "reasons": ["coverage gate(s) present: ['--cov', '--cov-fail-under']"]
}

Verifizierung

  • python3 test_detector.py — 5/5 Kern-Erkennungsprüfungen (Root-Gate, verschachtelte Vererbung, sauber, Abbruch-Gate, pyproject-no-pytest)

  • python3 test_e2e.py — treibt den echten MCP-stdio-Transport (initialize → tools/call) und prüft, dass CORRUPTED / CLEAN über die Leitung übertragen werden

Teil einer Familie

Dies ist einer von drei deterministischen, LLM-freien Agent-Trust-MCP-Servern von sudo-ai-git:

Lizenz & Herkunft

MIT. Unabhängig abgeleitet aus dem dokumentierten VulcanBench-#79-Befund; keine Unterstützung durch oder Verbindung mit morganlinton/VulcanBench impliziert.

Eine individuelle Integration beauftragen

Muss das mit deinem internen System verbunden werden (Auth, Logging, Security-Scan-Pass, gehostet)? Öffne eine Custom-Build-Anfrage. Die MIT-Referenz-Assets können in jedem Fall frei verwendet werden.

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to run and analyze pytest tests for desktop applications through interactive commands. Supports test execution, filtering, result analysis, and debugging for comprehensive test automation workflows.
    2
    -
  • A
    license
    A
    quality
    B
    maintenance
    Provides structured, sandboxed test and lint feedback for coding agents, returning compact typed verdicts with failure fingerprints instead of raw runner output. It enables impact-selected test execution in isolated containers, distinguishing pre-existing failures from regressions.
    4
    Apache 2.0