mcpField
B
Bench Agent Discovery

Bench Agent Discovery

リモート
bench.virajmishratakehome.workers.devAI・エージェント011 週間前に更新
リポジトリ公式サイト

Bench Agent Discovery について

BenchはAIエージェントの実行データを計測し、評価、失敗パターン、ベンチマークの証拠を公開します。性能を確認し、エージェントを公開したい開発者向けです。

主な機能

  1. 01リアルタイム実行ダッシュボード
  2. 02公開プロフィールとランキング
  3. 03タスクの自動採点と失敗分析
  4. 04証拠記録付きベンチマーク
  5. 05プライバシー設定と許可制再利用

活用シーン

  1. 01成功率、コスト、レイテンシの追跡
  2. 02繰り返し発生するタスク失敗の確認
  3. 03公開エージェントとベンチマーク結果の比較

MCP 対応

公開読み取り専用のMCPサーバーで、search_agents、get_agent、list_benchmarksを提供し、公開エージェントやベンチマークデータを検索できます。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://bench.virajmishratakehome.workers.dev/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

ツール

3
パラメーター型必須説明
sortenumいいえverified | recent | runs
limitintegerいいえ
modelstringいいえ
querystringいいえ検索するタスクまたは能力。例:根拠に基づく調査やコードレビュー。
licensestringいいえエージェントのマニフェストの由来情報に記載された、正確な SPDX 形式のライセンス ID。例:MIT、Apache-2.0。
categorystringいいえ
reusablebooleanいいえTrue の場合、所有者が呼び出しポリシーと能力マニフェストを設定したエージェントを返します。
verifiedbooleanいいえTrue の場合、信頼できるランナーによって検証されたベンチマーク提出が少なくとも 1 件あるエージェントを返します。
frameworkstringいいえ
liveCallablebooleanいいえTrue の場合、再利用可能な呼び出しポリシーがあり、エンドポイントが現在到達可能で所有者によって検証済みのエージェントを返します。
maxP50LatencyMsintegerいいえエージェントで観測された p50 レイテンシの上限(ミリ秒)。
maxCostPerRunUsdnumberいいえエージェントのライフタイムにおける total_cost_usd / total_runs の上限、つまり観測された実行あたりの平均コスト。

詳細

bench

優れたエージェントの違いを確認できます。

コードは1行。ライブダッシュボード、公開プロフィール、README バッジが使えます。

Live npm PyPI License Built on

Bench ダッシュボード — ライブイベントストリーム、タスク履歴、評価スコア、README バッジ

これは何ですか?

AI エージェントを作り、何度か実行してみたものの、本当にうまく動いているのかはわからない。どのタスクが気づかれないまま失敗するのか、実行ごとにいくらかかるのか、ほかのものと比べてどうなのかも把握できません。

Bench がそれを解決します。関数を1回呼び出してエージェントをラップするだけで、次の機能を利用できます。

  • 実行数、成功率、コスト、レイテンシを表示する公開プロフィールページ
  • すべてのタスクを自動採点(0~1、LLM による評価)
  • 失敗パターンを AI が生成する要約
  • エージェントの実行に応じて常に最新の状態に保たれる README バッジ
  • 誰でもエージェントを見つけられる公開リーダーボード

エージェントのための GitHub のようなもので、可観測性があり、共有でき、デフォルトで公開されます。

登録前に試してみたいですか?/try のサンドボックスをお試しください。登録は不要です。


セットアップ(3分)

GitHub で bench.virajmishratakehome.workers.dev にサインインしてください。ダッシュボードには、インストールコマンド、API キー、最初のタスクテンプレートをまとめたコピー可能なセットアップ一式が表示されます。最初のイベントを待ち受け、イベントが届くとプロフィールに直接リンクします。

または、手動でセットアップできます。

npm install @virajmishra1/bench-sdk
export BENCH_KEY="bk_..."
import { observe } from "@virajmishra1/bench-sdk";

const agent = observe({ apiKey: process.env.BENCH_KEY, agent: "my-agent" });

await agent.task("search", { query }, async (t) => {
  const result = await doSearch(query);
  t.log("found", result.length);
  t.cost(0.004);
  return result;
});

SDK はこれだけです。それ以外はすべて任意です。

Python:

pip install bench-observe
export BENCH_KEY="bk_..."
import bench

agent = bench.observe(api_key=os.environ["BENCH_KEY"], agent="my-agent")

async with agent.task_ctx("search", {"query": query}) as task:
    result = await do_search(query)
    task.log("found", len(result))
    task.set_output(result)

すでに OpenTelemetry をお使いですか? エクスポーターの送信先を Bench に変更してください。

export OTEL_EXPORTER_OTLP_ENDPOINT=https://bench.virajmishratakehome.workers.dev
export OTEL_EXPORTER_OTLP_PROTOCOL=http/json
export OTEL_EXPORTER_OTLP_HEADERS="X-Bench-Key=bka_...,X-Bench-Agent=my-agent"

Bench は標準の gen_ai.* スパン(invoke_agent、execute_tool、chat、retrieval など)に対応しています。

CLI を使いたいですか? スタックを検出する CLI が、OpenAI、Anthropic、Vercel AI SDK、Mastra、LangChain を自動計測します。

npx @virajmishra1/bench-cli init --install
npx @virajmishra1/bench-cli login

利用できる機能

機能説明
ライブダッシュボードエージェントの実行中にイベントストリームをリアルタイム表示します。WebSocket を使用し、ポーリングは不要です。
公開プロフィール/u/you/your-agent — 共有可能で、OG 画像に対応し、サーバー側でレンダリングされます
README バッジライブ SVG バッジです。自動的に更新されます。GitHub の画像プロキシにも対応しています。
LLM 評価すべてのタスクを Llama 3.3 70B の評価モデルが自動採点します(0~1)。スコアのロジックは公開されています。
失敗分析k-means クラスタリングと LLM による、繰り返し発生する問題の説明
リーダーボード実行数、成功率、評価スコア、コストで公開エージェントを閲覧できます
比較/vs/@a/agent1/@b/agent2 — 品質、コスト、レイテンシを並べて比較できます
ベンチマーク繰り返し実行とエビデンスの記録を備えた、バージョン管理されたベンチマークスイートです。自己申告のテレメトリーとは別に管理されます。
MCP 検索公開読み取り専用 MCP サーバー — search_agents、get_agent、list_benchmarks
埋め込みウィジェット<iframe> 対応のミニダッシュボード。3つのサイズとダーク/ライトに対応しています
プライバシー設定入出力を非表示にし、エージェントを非公開に設定し、キーごとにアクセスを管理できます
権限付き再利用デフォルト拒否のポリシーとクォータを設定して、機能を公開できます

フレームワークアダプター

既存の LLM 呼び出しを自動計測する、すぐに使えるラッパーです。

// Anthropic — wraps every messages.create() call
import { wrapAnthropic } from "@virajmishra1/bench-anthropic";
const client = wrapAnthropic(new Anthropic(), bench);

// OpenAI — wraps chat completions, responses, and embeddings
import { wrapOpenAI } from "@virajmishra1/bench-openai";
const client = wrapOpenAI(new OpenAI(), bench);

// Vercel AI SDK — wraps generateText / streamText / generateObject
import { track } from "@virajmishra1/bench-vercel-ai";
const result = await track(bench, "summarize", () =>
  generateText({ model: anthropic("claude-sonnet-4-6"), prompt: "..." })
);

// Mastra
import { wrapMastra } from "@virajmishra1/bench-mastra";

AI にエージェントを見つけてもらう

Bench は /mcp でパブリック MCP サーバーを公開しています。Claude Code に接続します。

claude mcp add --transport http bench https://bench.virajmishratakehome.workers.dev/mcp

または Codex に接続します。

codex mcp add bench --url https://bench.virajmishratakehome.workers.dev/mcp

利用可能なツール:search_agents、get_agent、list_benchmarks。検索結果にはパブリックエージェントのみが表示されます。オーナーのテレメトリとベンチマークのエビデンスは、個別にラベル付けされます。

各ツールの完全なスキーマとプライバシーモデルについては、MCP.md を参照してください。


アーキテクチャ

Bench は Cloudflare 上で完全に動作します。各プロダクトはそれぞれ特定の役割を担っています。

SDK (npm: @virajmishra1/bench-sdk)
        |  batched events, X-Bench-Key
        v
POST /ingest                              <- Workers (Hono)
        |
        +-> D1 --- users, agents, tasks, events
        |
        +-> AgentDO --- one Durable Object per agent
        |           +- ring buffer (last 1k events, SQLite in DO storage)
        |           +- latency histogram (p50, p95)
        |           +- hibernating WebSocket -> live dashboards
        |
        +-> EvalWorkflow --- runs per task.end
        |           +- Workers AI (Llama 3.3 70B) -> score 0-1 + reasoning
        |              -> writes back to D1.tasks
        |              -> updates agents.avg_eval_score
        |
        +-> ClusterWorkflow --- on-demand + hourly cron
                    +- k-means on task embeddings -> cluster labels
                       -> Workers AI LLM describes each cluster
                       -> stored in agents.failure_clusters

Public surfaces:
  /u/:login/:slug          -> profile page (server-rendered, OG image)
  /badge/:login/:slug.svg  -> README badge (KV-cached 60s)
  /embed/:login/:slug      -> iframe widget (3 sizes, dark/light)
  /leaderboard             -> discovery (5 sort modes)
  /vs/:a/:b                -> compare two agents
  /try                     -> sandbox (no signup)
  /benchmarks              -> verified benchmark registry
  /mcp                     -> read-only MCP server
  /api/agents/:l/:s/insights -> failure pattern analysis (JSON)

重要な設計上の決定は、アクターモデルです。各エージェントに専用の Durable Object が割り当てられます。この DO は SQLite に直近 1,000 件のイベント、レイテンシーヒストグラム、休止状態になる WebSocket 接続を保持します。アイドル時のコストはゼロで、ポーリングも不要です。

使用している Cloudflare プロダクト
プロダクト役割
WorkersAPI、プロフィールのレンダリング、バッジの生成
Durable Objectsエージェントごとに 1 つ — リングバッファー、レイテンシーヒストグラム、休止状態になる WebSocket
D1ユーザー、エージェント、タスク、イベント
KVトークン検索キャッシュ、バッジ SVG キャッシュ、OG 画像キャッシュ
Workers AILlama 3.3 70B — LLM ジャッジと失敗パターンの説明
WorkflowsEvalWorkflow と ClusterWorkflow の永続的な再試行
Browser RenderingOG シェア画像(SVG → PNG)
Assets静的フロントエンド(ランディングページ、ダッシュボード、JS、CSS)

SDK リファレンス

const agent = observe({
  apiKey: string;           // bk_xxx — from your dashboard
  agent: string;            // slug, e.g. "my-agent"
  displayName?: string;
  endpoint?: string;        // default: bench.virajmishratakehome.workers.dev
  flushIntervalMs?: number; // default: 2000
  maxBatchSize?: number;    // default: 50
});

// Wrap a task — records start/end/duration/status/eval automatically
await agent.task("name", input, async (task) => {
  task.log("label", value);    // attach a log event
  task.cost(0.003);            // report LLM spend (owner-reported)
  return result;               // returned value becomes the task output
});

// Fire a custom event
agent.event("custom", { key: "value" });

// Flush immediately (auto-runs on batch full or interval)
await agent.flush();

task.cost() の呼び出しは、UI で「オーナー報告」としてラベル付けされます。フレームワークアダプターはプロバイダーとトークンのエビデンスを付与し、これらは個別にラベル付けされます。

エラーは黙って無視されます。オブザーバビリティによってエージェントがクラッシュしてはなりません。


セルフホスト

git clone https://github.com/VirajMishra1/bench
cd bench && npm install

cd packages/worker
npx wrangler login

# Create infrastructure
npx wrangler d1 create bench-db
npx wrangler kv namespace create CACHE
npx wrangler kv namespace create SESSIONS

# Paste the returned IDs into wrangler.jsonc, then:
npx wrangler secret put SESSION_SECRET             # any random 32+ char string
npx wrangler secret put GITHUB_OAUTH_CLIENT_SECRET # from github.com/settings/developers

# Apply schema and deploy
npm run db:remote
npm run deploy

ファイル構成

bench/
+-- packages/
|   +-- sdk/                   <- @virajmishra1/bench-sdk
|   +-- adapters/
|   |   +-- anthropic/         <- @virajmishra1/bench-anthropic
|   |   +-- openai/            <- @virajmishra1/bench-openai
|   |   +-- vercel-ai/         <- @virajmishra1/bench-vercel-ai
|   |   +-- mastra/            <- @virajmishra1/bench-mastra
|   |   +-- langchain/         <- bench-langchain
|   +-- worker/                <- Cloudflare Worker (all backend + frontend)
|       +-- src/
|       |   +-- index.ts       <- Hono routes
|       |   +-- ingest.ts      <- POST /ingest
|       |   +-- profile.ts     <- public profile page
|       |   +-- badge.ts       <- SVG README badge
|       |   +-- embed.ts       <- iframe widget
|       |   +-- leaderboard.ts <- discovery page
|       |   +-- compare.ts     <- /vs/:a/:b
|       |   +-- do/agent.ts    <- AgentDO (actor per agent)
|       |   +-- workflows/
|       |       +-- eval.ts    <- LLM judge per task
|       |       +-- cluster.ts <- failure clustering
|       +-- public/            <- landing, dashboard, styles
|       +-- migrations/        <- D1 schema history
+-- benchmarks/
|   +-- grounded-research-v1/  <- example benchmark suite + cases
|   +-- eval-prompts.md        <- open-source judge prompts
+-- examples/                  <- runnable example agents

ライセンス

MIT — LICENSE を参照してください。

Cloudflare 上で @virajm1shra が開発しました。

コメント

MCP は初めてですか?

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

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