io.github.sudo-ai-git/mcp-benchmark-hygiene
mcp-benchmark-hygiene
mcp-name: io.github.sudo-ai-git/mcp-benchmark-hygiene
Детерминированное обнаружение утечки конфигурации pytest, которая незаметно искажает оценку агентных бенчмарков / функций.
Без LLM. Без сети. Один вопрос, на который даётся надёжный ответ:
Если я запущу
python -m pytest <tests>в этом рабочем каталоге, унаследует ли он хост-шлюз покрытия/прерывания, который ошибочно оценивает проходящий код как непройденный?
Какую ошибку это выявляет
Автоматизированные оценочные обвязки агентов часто запускают python -m pytest <hidden_tests> внутри рабочего каталога цели. Если этот каталог вложен в корень репозитория с pytest addopts — например:
[tool.pytest.ini_options]
addopts = "--cov=harness --cov-report=term-missing:skip-covered --cov-fail-under=80"...pytest определяет pyproject.toml хоста как свой rootdir, наследует addopts и падает на собственном шлюзе покрытия хоста (harness собран на 0% → ниже порога → ненулевой код выхода). Затем обвязка фиксирует функционально ПРОХОДЯЩИЙ код как НЕПРОЙДЕННЫЙ.
Это ровно та ошибка, что описана в sudo-ai-git/vulcanbench-findings: декларативный оценщик VulcanBench ошибочно оценивал каждую функциональную задачу как 0.0 по этой причине; с -o addopts=, нейтрализующим утечку, те же рабочие каталоги проходили 10/10.
Related MCP server: forge-repo-mcp
Исправление, которое он вам даёт
Когда рабочий каталог помечен как CORRUPTED, инструмент возвращает исправленную команду:
python -m pytest -o addopts= <tests>-o addopts= снимает унаследованные шлюзы покрытия/прерывания. (Либо запускайте оценщик из-за пределов корня репозитория.)
Инструменты
tool | purpose |
| полный анализ: цепочка ini, действующие addopts, вердикт CLEAN/CORRUPTED/UNKNOWN + исправленная команда |
| простой булев результат: |
| однострочная практическая сводная строка |
Детерминированное ядро (без зависимостей)
Анализ проходит по каталогу рабочей области вплоть до корня файловой системы, читая pyproject.toml / pytest.ini / tox.ini / setup.cfg в порядке первого найденного у pytest, и извлекает addopts. Флаги:
шлюзы покрытия —
--cov,--cov-fail-under,--cov-report,--cov-configшлюзы прерывания/строгости —
--maxfail,-x,--strict,--strict-markers,--pdb,--ff
Помечаются только шлюзы, меняющие коды выхода / прерывающие оценку. Безвредный addopts сообщается как CLEAN с точной строкой.
Установка и запуск (MCP stdio)
Одна команда (рекомендуется) — установка из репозитория, токен PyPI не нужен:
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Или через pipx: pipx install git+https://github.com/sudo-ai-git/mcp-benchmark-hygiene
Напрямую из исходников (запасной вариант):
{ "mcpServers": {
"benchmark-hygiene": { "command": "python3", "args": ["/abs/path/to/mcp_server.py"] }
}}Требуется официальный python-пакет mcp (pip install mcp). Детерминированное ядро (inspect_workspace / check_addopts / summarize) импортируется и работает с нулевым числом зависимостей — пакет mcp нужен только для stdio-сервера.
Streamable HTTP (удалённый/публикуемый через Smithery)
python3 mcp_server.py --http --port 8137 # serves on http://<host>:8137/mcp/Запустите с --http, чтобы обслуживать через Streamable HTTP (удалённую MCP-конечную точку) вместо stdio. Это тот транспорт, который smithery mcp publish <url> ожидает для публикации по URL — так что как только появится сервисный токен Smithery, сервер разворачивается как есть.
Пример
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']"]
}Проверка
python3 test_detector.py— 5/5 проверок детектирования ядра (корневой шлюз, вложенное наследование, чистый, шлюз прерывания, pyproject без pytest)python3 test_e2e.py— гоняет реальный MCP stdio-транспорт (initialize → tools/call) и проверяет, что CORRUPTED / CLEAN проходят по проводу
Часть семейства
Это один из трёх детерминированных, без LLM MCP-серверов доверия к агентам от sudo-ai-git:
mcp-skill-sec— предустановочный аудит навыков/безопасностиmcp-verify-claim— отчётность по утверждениям с проверкой доказательств и честной градациейmcp-benchmark-hygiene— обнаружение утечки конфигурации pytest / честности оценки (этот репозиторий)
Лицензия и происхождение
MIT. Создано независимо на основе задокументированной находки VulcanBench #79; не подразумевается одобрение со стороны morganlinton/VulcanBench или связь с ними.
Заказать индивидуальную интеграцию
Нужно подключить это к вашей внутренней системе (аутентификация, логирование, прохождение сканера безопасности, хостинг)? Откройте запрос на индивидуальную сборку. Эталонные MIT-активы можно свободно использовать в любом случае.
This server cannot be deployed
Maintenance
Related MCP Connectors
Find your AI agent's likely failure mode, get runtime settings, and clarify ambiguous prompts.
Enforces architectural invariants and code quality rules inside your AI agent's edit loop.
418Deterministic pre-execution audit for trading agents. PASS/WAIT/FAIL, reproducible verdict_hash.
Pre-execution governance for AI agents. Deterministic PASS/FAIL/REVIEW verdicts, replayable proof.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables 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-
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to investigate and repair Python/pytest repositories in isolated Git worktrees with audit trails, without modifying the original repository.MIT
- AlicenseAqualityBmaintenanceProvides 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.4Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables deterministic evaluation of coding agents by exposing controlled repository tools and returning structured verification reports with pattern checks and repeat-run comparisons.MIT