Skip to main content
Glama
sudo-ai-git

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

by sudo-ai-git

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: Debug Companion MCP

Исправление, которое он вам даёт

Когда рабочий каталог помечен как CORRUPTED, инструмент возвращает исправленную команду:

python -m pytest -o addopts= <tests>

-o addopts= снимает унаследованные шлюзы покрытия/прерывания. (Либо запускайте оценщик из-за пределов корня репозитория.)

Инструменты

tool

purpose

inspect_workspace(path)

полный анализ: цепочка ini, действующие addopts, вердикт CLEAN/CORRUPTED/UNKNOWN + исправленная команда

check_addopts(path)

простой булев результат: corrupted + причины

summarize(analysis)

однострочная практическая сводная строка

Детерминированное ядро (без зависимостей)

Анализ проходит по каталогу рабочей области вплоть до корня файловой системы, читая 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-активы можно свободно использовать в любом случае.

A
license - permissive license
Not graded
quality - not tested
C
maintenance

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

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
    Not graded
    quality
    A
    maintenance
    Local-first MCP and coding-agent reliability harness that captures bounded, sanitized failure evidence and generates deterministic executable regression tests. Capture is opt-in; no API key or hosted service is required.
    2
    Apache 2.0

View all related MCP servers

Related MCP Connectors

View all MCP Connectors

Latest Blog Posts

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/sudo-ai-git/mcp-benchmark-hygiene'

If you have feedback or need assistance with the MCP directory API, please join our Discord server