关于 mcp-benchmark-hygiene
mcp-benchmark-hygiene 是确定性的 MCP 服务,用于检测可能扭曲 Agent 基准测试评分的继承式 pytest 配置。它检查工作区设置,并在发现评分门槛时给出修正后的测试命令。
主要功能
- 01追踪至文件系统根目录的 pytest 配置
- 02检测 addopts 中的覆盖率与中止门槛
- 03将工作区判定为 CLEAN、CORRUPTED 或 UNKNOWN
- 04提供修正后的 pytest 命令
- 05生成简洁分析摘要
适用场景
- 01诊断代码通过但基准评分失败的情况
- 02检查嵌套工作区继承的 pytest 设置
- 03选择可避开宿主评分门槛的测试命令
MCP 相关
它通过 stdio 或 Streamable HTTP 向 MCP 客户端提供工作区检查、addopts 检查和分析摘要工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
mcp-benchmark-hygiene
mcp-name: io.github.sudo-ai-git/mcp-benchmark-hygiene
确定性检测 pytest 配置泄漏,避免其悄无声息地破坏 Agent 基准测试/函数评分。
无需大模型。无需联网。只需回答一个问题,而且答案可靠:
如果我在此工作区内运行
python -m pytest <tests>,它是否会继承主机的覆盖率/中止门槛,导致将通过的代码错误判为失败?
此工具捕获的错误
自动化 Agent 评估框架通常会在目标工作区内运行 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。
提供的修复方案
当工作区被标记为 CORRUPTED 时,工具会返回修正后的命令:
python -m pytest -o addopts= <tests>
-o addopts= 会移除继承的覆盖率/中止门槛。(或者从仓库根目录之外运行评分器。)
工具
| 工具 | 用途 |
|---|---|
inspect_workspace(path) | 完整分析:ini 链、有效的 addopts、CLEAN/CORRUPTED/UNKNOWN 判定及修正后的命令 |
check_addopts(path) | 简化的布尔检查:corrupted + 原因 |
summarize(analysis) | 单行、可执行的摘要字符串 |
确定性核心(无依赖)
分析会从工作区目录向上遍历至文件系统根目录,按 pytest 的优先顺序读取
pyproject.toml / pytest.ini / tox.ini / setup.cfg,并提取 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"] }
}}
需要官方的 mcp Python 包(pip install mcp)。确定性核心(inspect_workspace / check_addopts / summarize)导入和运行时无需任何依赖——只有 stdio 服务需要 mcp 包。
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 项核心检测检查(根目录门槛、嵌套继承、干净配置、中止门槛、无 pytest 配置的 pyproject)python3 test_e2e.py— 驱动真实的 MCP stdio 传输(initialize → tools/call),并断言 CORRUPTED / CLEAN 状态会沿传输链路传递
家族成员
这是 sudo-ai-git 推出的三个确定性、无 LLM Agent 信任 MCP 服务之一:
mcp-skill-sec— 安装前的技能/安全审计mcp-verify-claim— 以证据为门槛、按可信度分级的声明报告mcp-benchmark-hygiene— 检测 pytest 配置泄漏 / 评估诚信问题(本仓库)
同系列产品: mcp-token-saver — 面向 Agent 对话的令牌成本代理 + 分析器(在计费前去重冗余令牌;已通过实时验证,减少 74%)。讨论
同系列还有(一款免费 CLI,并非 MCP 服务):harness-audit — 确定性的 Agent 评估 / 基准测试评分卫生审计,可捕获同类静默配置泄漏误评分问题。免费的引流工具;秉持同样的验证原则,零依赖,可逐行审计。
许可证与来源
MIT。独立衍生自有文档记录的 VulcanBench #79 发现;不代表 morganlinton/VulcanBench 为此背书或与其有关联。
定制集成
需要将其接入你的内部系统(身份验证、日志记录、安全扫描通行、托管)?请提交定制构建请求。MIT 参考资源可免费使用。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。