mcpField
M
mcp-benchmark-hygiene

mcp-benchmark-hygiene

ローカル
github.com/sudo-ai-git開発ツール09 週間前に更新

mcp-benchmark-hygiene について

mcp-benchmark-hygieneは、Agentベンチマークの採点を歪める可能性がある、継承されたpytest設定を検出する決定論的なMCPサーバーです。ワークスペース設定を調べ、採点ゲートが見つかった場合は修正したテストコマンドを返します。

主な機能

  1. 01ファイルシステムのルートまでpytest設定を追跡
  2. 02addopts内のカバレッジ・中断ゲートを検出
  3. 03ワークスペースをCLEAN、CORRUPTED、UNKNOWNに分類
  4. 04修正済みpytestコマンドを提示
  5. 05簡潔な分析サマリーを生成

活用シーン

  1. 01コードが動作するのに失敗するベンチマーク結果を調査
  2. 02ネストしたワークスペースが継承するpytest設定を確認
  3. 03ホスト側の採点ゲートを避けるテストコマンドを選択

MCP 対応

stdioまたはStreamable HTTP経由で、ワークスペース検査、addopts確認、分析サマリーのツールをMCPクライアントに公開します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"sudo-ai-git-mcp-benchmark-hygiene": {
"command": "uvx",
"args": [
"mcp-benchmark-hygiene"
]
}
}
}
起動コマンドuvx mcp-benchmark-hygiene

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
pypimcp-benchmark-hygiene1.0.1

ツール

ツール一覧はまだ取得されていません

ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。

詳細

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%で収集され、しきい値を下回るため、終了コードが 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)実行可能な内容を示す1行の要約文字列

決定論的なコア(依存関係なし)

分析では、ワークスペースのディレクトリからファイルシステムのルートまで順にたどり、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)

1つのコマンド(推奨)— リポジトリからインストールするため、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/

stdio の代わりに Streamable HTTP(リモート MCP エンドポイント)で提供するには、--http を付けて実行します。これは URL ベースの公開で smithery mcp publish <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 を使用しない エージェント信頼性向け MCP サーバー3つのうちの1つです。

  • mcp-skill-sec — スキルのインストール前セキュリティ監査
  • mcp-verify-claim — 証拠に基づき、確実性のレベルを明示した主張の報告
  • mcp-benchmark-hygiene — pytest の設定漏洩/評価の誠実性を検出(このリポジトリ)

姉妹プロダクト: mcp-token-saver — エージェントの会話におけるトークンコストのプロキシ兼アナライザー(請求前に重複トークンを排除し、実運用で74%の削減を実証)。ディスカッション

同じファミリーのツール(MCP サーバーではなく、無料の CLI):harness-audit — 同じ種類の、気づきにくい設定漏洩による誤採点を検出する、決定論的なエージェント評価/ベンチマーク採点の衛生監査ツールです。無料のリード獲得ツールであり、同じ検証規律を備え、依存関係はゼロで、1行ずつ監査できます。

ライセンスと由来

MIT。文書化された VulcanBench #79 の調査結果から独自に派生したものであり、morganlinton/VulcanBench による承認や同プロジェクトとの提携を示唆するものではありません。

カスタム統合の依頼

これをお客様の内部システム(認証、ロギング、セキュリティスキャンの合格判定、ホスティング)に接続する必要がありますか?カスタム構築の依頼を作成してください。どちらの場合も、MIT ライセンスの参照アセットは無料で利用できます。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。