mcpField
V
verdict-mcp

verdict-mcp

ローカル
github.com/Dgotlieb開発ツール09 週間前に更新

verdict-mcp について

verdict-mcpは、コーディングエージェント向けに隔離コンテナでPythonのチェックを実行し、簡潔な型付き結果を返すMCPサーバーです。失敗のフィンガープリントと履歴により、新たなリグレッションと以前からの失敗を区別できます。

主な機能

  1. 01作業ツリーの変更に応じたテスト選択
  2. 02隔離コンテナ内でのチェック実行
  3. 03型付き判定と失敗フィンガープリントの返却
  4. 04必要に応じた完全なトレースバック取得
  5. 05失敗の初回・直近の発生時刻の記録

活用シーン

  1. 01テストスイート全体を実行せずに変更を検証
  2. 02テスト失敗が変更前から存在したかを確認
  3. 03ruffとmypyを統一形式の結果で実行

MCP 対応

このMCPサーバーは、影響範囲に基づく検証、失敗のオンデマンド説明、フィンガープリント履歴の参照、lintや型チェックのツールを提供します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"dgotlieb-verdict": {
"command": "uvx",
"args": [
"verdict-mcp"
],
"env": {
"VERDICT_PROJECT": "<VERDICT_PROJECT>"
}
}
}
}
起動コマンドuvx verdict-mcp
設定が必要な環境変数
VERDICT_PROJECTPath to the project to verify (defaults to cwd)

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

パッケージ
pypiverdict-mcp0.1.0a4

ツール

4

掲載時のツール一覧 · 3 週間前に更新

パラメーター型必須説明
baseanyいいえ差分比較の基準となる git ref(デフォルト:HEAD、つまり未コミットの変更)。
scopeanyいいえ影響範囲に基づいて選択する場合は None(デフォルト)、テストスイート全体を実行する場合は 'all'、1 つのファイルを実行する場合は 'tests/test_api.py' のようなパスを指定します。

詳細

verdict

https://github.com/user-attachments/assets/62923912-98aa-4246-8bc8-4adf55ae3ff8

CI PyPI Python License

コーディングエージェント向けの、構造化されたサンドボックス内検証フィードバックです。

エージェントの pytest のシェル呼び出しを、エージェントの内部ループ向けに構築された仕組みに置き換えるMCPサーバーです。影響を受けるテストを選択し、分離された環境で実行して、生のランナー出力を40,000トークン分返す代わりに、コンパクトで型付きの判定結果を返します。さらに、失敗がエージェント自身の回帰なのか、以前から存在する問題なのかを知らせる失敗フィンガープリントも提供します。

raw pytest dump:  ~40,000 tokens, unstructured, run un-sandboxed on your machine
verdict:              ~400 tokens, typed JSON, run in a rootless container, with memory

その理由

エージェントによるコーディングで最も頻繁に呼び出されるツールは検証ですが、最も構造化されていないものでもあります。エージェントは1つのモジュールを変更しただけでもテストスイート全体を再実行し、ANSIコード付きのトレースバックの解析にコンテキストを消費し、任意のコードをマシン上で直接実行し、既存の不具合を自分の回帰と誤診することも頻繁にあります(その結果、壊れていなかったコードを「修正」します)。verdictはこの4つすべてを解決します。

ツール

ツール機能
verify(scope?, base?)作業ツリーの差分によって影響を受けるテストを選択し(grimpによる静的インポートグラフ)、作業ツリーを読み取り専用でマウントしたpodman/docker上で実行します。フィンガープリントとpreexistingフラグを含む、型付きの失敗結果を返します
explain_failure(check_id)必要に応じて1件の失敗の完全なトレースバックを返します。大量の情報が要約に含まれることはありません
history(fingerprint)初回確認時/最終確認時/確認回数を返し、回帰か長期にわたる不具合かを判別します
run_checks(["ruff","mypy"])リントと型チェックを実行し、同じ判定スキーマに正規化します

各失敗にはフィンガープリントが付与されます。これは、正規化された失敗シグネチャの安定したハッシュです(アドレス、一時パス、ID、所要時間などの変動するトークンはまとめられます)。論理的に同じ失敗であれば、実行やリファクタリングを経ても同じフィンガープリントになります。verdictのメモリを実現するのが、このフィンガープリントです。

クイックスタート

インストール手順は不要です。初回使用時にuvxが取得します。(または、永続的に使えるverdict-mcpコマンドを使う場合は、uv tool install verdict-mcp / pip install verdict-mcpを実行してください。)

Claude Code — プロジェクトルートの.mcp.json:

{
  "mcpServers": {
    "verdict": {
      "command": "uvx",
      "args": ["verdict-mcp"],
      "env": { "VERDICT_PROJECT": "." }
    }
  }
}

Cursor — .cursor/mcp.jsonに同じ形式で設定します。

任意で、リポジトリのルートにverdict.tomlを配置します。

[project]
packages = ["your_package"]          # for impact selection (auto-guessed if omitted)

[runner]
image = "ghcr.io/you/yourproj-test"  # prebuilt env with your deps
setup_cmd = "pip install -e .[test]" # or install on the fly (runs with network; tests don't)
# prefer = "local"                   # escape hatch if you have no container runtime

[limits]
max_failures = 10

エージェントを使わずに試すには:

cd examples/demo_project
VERDICT_PROJECT=. verdict-mcp   # then connect any MCP client, or use the MCP inspector

サンドボックスの方針(v0.1)

チェックは一時的なコンテナ内で実行されます(podmanを優先し、利用できない場合はdockerを使用)。作業ツリーは/srcに読み取り専用でマウントされ、コンテナ内の書き込み可能な/workにコピーされます。チェックの実行中は--network=noneが適用されます。テストの実行によってホスト環境が変更されることはありません。setup_cmdが設定されている場合、そのステップはチェックの前にネットワーク接続ありで実行されます。より厳格な方針にするには、事前構築済みのイメージを使用してください。コンテナランタイムがない場合は、明示的にprefer = "local"へフォールバックし、作業ツリーの一時コピーに対してチェックを実行します(元の作業ツリー上で実行されることはありません)。脅威モデルと既知の制限事項の詳細はSECURITY.mdを参照してください。

トラブルシューティング: 判定結果にcontainer engine 'podman' could not start the checkと表示された場合は、提案されたpodman pull <image>を手動で実行してください。エンジン自身のエラーが原因を示しています。macOSで知られている落とし穴の1つは、~/.docker/config.jsonに"credsStore": "gcloud"の行があると、podmanがdocker.ioを含むすべてのレジストリに対してgcloud認証情報ヘルパーを呼び出すことです。gcloudへのログイン期限が切れると、すべてのイメージ取得が失敗します。gcloud auth loginを実行するか、その行を削除して解決してください。

正直な制限事項

  • 影響範囲の選定には静的インポートグラフを使用します。そのため、設計上、近似的な結果となります。動的インポート、名前によるフィクスチャの解決、データ駆動型テストは見落とされる可能性があります。verify(scope="all") はいつでも利用でき、フォールバックが発生した場合は selection_note にその旨が記載されます。
  • 現時点では Python/pytest のみが対象で、ruff/mypy にも対応しています。アダプターのインターフェースは小規模で、ドキュメントも整備されています。最も求められている貢献は vitest および go test -json アダプターです(CONTRIBUTING.md)。
  • フレーク検出とカバレッジマップに基づく選定は v0.2 の予定です(ロードマップ)。

ロードマップ

v0.2: カバレッジに基づく影響範囲マップ(正確な選定)、フィンガープリントの交互変化によるフレーク検出、devcontainer.json のサポート、(ツリーハッシュ、チェック、イメージダイジェスト)をキーとした結果キャッシュ。今後: vitest/jest、go test、cargo test のアダプター、リポジトリごとの判定デーモンモード。

ライセンス

Apache-2.0

コメント

MCP は初めてですか?

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

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