mcpField
E
evalsnap

evalsnap

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

evalsnap について

evalsnapはcase IDでAgentやツールの出力スナップショットを比較し、変更、スコアと所要時間の差、合否を示します。CLIまたはローカルのMCPサーバーで実行結果を評価でき、入力データはネットワークに接続せずローカルで処理します。

主な機能

  1. 01case単位の照合と変更検出
  2. 02スコアと所要時間の差分
  3. 03回帰と改善の一覧
  4. 04一致ケースの平均スコア
  5. 05入力検証と判定

活用シーン

  1. 01Agentの実行結果をベースラインと比較
  2. 02スコアが低下したケースを特定
  3. 03出力と所要時間の変化を確認

MCP 対応

MCPクライアントに`diff_snapshots`ツールを公開します。ベースラインと現在のスナップショットを比較し、ケース別の結果、集計スコア、回帰項目、判定を返します。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"cloudcorprecords-evalsnap": {
"command": "npx",
"args": [
"-y",
"@reneturcios/evalsnap"
]
}
}
}
起動コマンドnpx -y @reneturcios/evalsnap

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

パッケージ
npm@reneturcios/evalsnap0.1.0
ocighcr.io/cloudcorprecords/evalsnap:0.1.0

ツール

1

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

パラメーター型必須説明
currentarrayはい現在のスナップショットエントリー(1 件以上)
baselinearrayはいベースラインのスナップショットエントリー(1 件以上)

詳細

evalsnap

エージェントを再実行したところ、回答が少し異なっているようです。 しかし、実際に何か悪くなったのでしょうか? evalsnap は、ケース出力のスナップショットを2つ(ベースライン実行と現在の実行)受け取り、case_id で照合して、どこが変わったのかを正確に示します。

  • 照合済み、追加、削除 — 両方に存在するケース、現在の実行にのみ存在するケース、ベースラインから消えたケースを、それぞれ ID 順で一覧表示します
  • ケースごとの結果 — 照合されたすべてのケースについて、完全一致の文字列比較で出力が変更されていないか、変更されているかを示します。また、スコアの差分と所要時間の差分(いずれかの実行で測定値が記録されていない場合はそれぞれ null)、スコアが下がった場合にのみ設定されるリグレッションフラグも示します
  • リグレッションと改善 — リグレッションが発生したケース ID の一覧を順に表示し、スコアが上昇したケース数を示します
  • 平均スコア — 両方の実行でスコアが記録されている照合済みケースのみを対象に、それぞれの平均を計算します。そのため、両方で同じケース群を比較できます。該当する照合済みケースがない場合は、両方の平均が null になります
  • 判定 — リグレッションが1件以上ある場合は fail、それ以外は pass です。追加・削除されたケースは報告されますが、それだけで判定が失敗になることはありません

差分と平均は小数点以下4桁に丸められます。計算は純粋なローカル処理です。ネットワークも設定も必要なく、渡されたスナップショット以外は読み取りません。

不正な入力(空のスナップショット、ID または出力のないケース、片方の実行内での ID 重複、数値以外のスコア、負の所要時間)は、問題のあるパスと実行側を示すエラーで拒否され、部分的な差分は生成されません。

CLI

npx @reneturcios/evalsnap diff --input args.json
npx @reneturcios/evalsnap --version

args.json には、引数オブジェクト全体を記述します。

{
  "baseline": [
    { "case_id": "greeting", "output": "hello", "score": 0.9, "duration_ms": 120 },
    { "case_id": "summary", "output": "short text", "score": 0.7 }
  ],
  "current": [
    { "case_id": "greeting", "output": "hello", "score": 0.95, "duration_ms": 110 },
    { "case_id": "summary", "output": "short text", "score": 0.6 }
  ]
}

各エントリの score と duration_ms は省略可能です。差分は JSON として出力されます。

終了コード:成功時は 0、実行時エラー(読み取り不能または無効な入力ファイル、無効な入力を含む)の場合は 1、使用方法のエラーの場合は 2 です。

MCP サーバー

npx -y @reneturcios/evalsnap mcp

MCP クライアントの設定:

{
  "mcpServers": {
    "evalsnap": {
      "command": "npx",
      "args": ["-y", "@reneturcios/evalsnap", "mcp"]
    }
  }
}
ツール
  • diff_snapshots — 2つの eval スナップショットを case_id で照合して差分を表示します。

    • baseline(配列、必須、1件以上)— {case_id, output, score?, duration_ms?} オブジェクト形式のエントリ
    • current(配列、必須、1件以上)— 同じ形式のエントリ

    {total_baseline, total_current, matched, unchanged, changed, added, removed, case_results, regressions, improved_count, baseline_avg_score, current_avg_score, verdict} を返します。

Docker

docker run -i ghcr.io/cloudcorprecords/evalsnap
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/evalsnap diff --input /w/args.json

開発

npm install
npm run build   # tsc -> dist/
npm test        # tsx --test test/*.test.ts (pure local, no network)
npm run dev     # run the CLI from source

ライセンス

MIT — Copyright (c) 2026 Rene Turcios

コメント

MCP は初めてですか?

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

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