Skip to main content
Glama

MCPエージェント評価ハーネス

Model Context Protocolツールを使用するコーディングエージェントを評価するためのコンパクトな参考プロジェクトです。このハーネスは、エージェントに制御されたリポジトリアクセスを提供し、再現可能なチェックを実行し、繰り返し実行を比較して、構造化された検証レポートを返します。

このプロジェクトが示すもの

  • リポジトリの一覧表示、読み取り、検索、検証ツールを備えたMCPサーバー

  • パストラバーサルを防止するルート限定のファイルアクセス

  • ロケール、タイムゾーン、Pythonハッシュシードを固定した決定的なコマンド実行

  • 必須コードパターンと禁止コードパターンのチェック

  • 非決定性を検出するための繰り返し実行の比較

  • 再現可能なバグ修正タスクのためのゴールデンリファレンス資料

  • 標準ライブラリのユニットテストと継続的インテグレーションワークフロー

Related MCP server: mcp-software-engineering-challenge

アーキテクチャ

MCP client or coding agent
          |
          v
Repository MCP tools
          |
          v
SafeWorkspace boundary
          |
          v
DeterministicVerifier
          |
          v
Structured VerificationReport

コア検証器にはサードパーティの依存関係はありません。MCPアダプターは公式Python SDK v2を使用しています。

クイックスタート

ユニットテストを実行します。

python -m unittest discover -s tests -v

同梱の評価タスクを実行します。

PYTHONPATH=src python -m mcp_eval_harness.cli verify \
  examples/rounding-bug/task.json \
  examples/rounding-bug/workspace

MCPアダプターをインストールして、stdioサーバーを起動します。

python -m pip install -e ".[mcp]"
mcp-eval serve

MCPツール

ツール

目的

list_repository_files

設定されたルート配下の安定してソートされたファイルリストを返します

read_repository_file

パストラバーサルをブロックしつつUTF-8ファイルを1つ読み取ります

search_repository

決定論的な順序と結果数制限でリテラルテキストを検索します

verify_solution

タスク仕様を実行し、構造化されたレポートを返します

タスク仕様

各タスクはJSONであり、ファイル、コード要件、検証コマンド、タイムアウト、繰り返し回数を宣言します。

{
  "task_id": "decimal-rounding-fix",
  "required_files": ["calculator.py", "test_calculator.py"],
  "required_patterns": {"calculator.py": ["Decimal", "ROUND_HALF_UP"]},
  "forbidden_patterns": {"calculator.py": ["round("]},
  "command": ["python", "-m", "unittest", "discover", "-s", ".", "-p", "test_*.py"],
  "timeout_seconds": 10,
  "repeat_count": 2
}

セキュリティ境界

パスチェックは設定されたリポジトリルートを保護します。コマンド検証器は、信頼されたローカルタスク定義用に設計されています。信頼できない候補コードは、コンテナまたは別のオペレーティングシステムのサンドボックス内で実行してください。

作者

Mohammed Ibrahim Sadiq

ライセンス

MIT

Related MCP Connectors

Related MCP Servers