Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
作者提供的说明(英文原文)
Cost-parity bench for agent loops: $/success and time across model mixes, with verifiable receipts.
这三项永远不会合并成一个分数:意见、测量和人气是不同的东西。
我们还没有为它写通俗的介绍。下面是我们从注册中心读取到的事实。
选择你使用的 AI 应用,然后复制设置。
ANTHROPIC_API_KEY, OPENAI_API_KEY标为机密的值是你账户的钥匙。千万不要分享给别人,也不要粘贴到聊天里。
你需要
你用的是哪个应用?
在上方选择你的应用。我们会记住它,下次按钮会显示“安装到 …”。
打开 Claude Desktop → Settings → Developer → Edit Config,把下面的内容粘贴到 claude_desktop_config.json
{
"mcpServers": {
"plzebo": {
"command": "npx",
"args": [
"-y",
"plzebo"
],
"env": {
"ANTHROPIC_API_KEY": "your-value",
"OPENAI_API_KEY": "your-value"
}
}
}
}在终端中运行这条命令
claude mcp add plzebo --env ANTHROPIC_API_KEY=your-value --env OPENAI_API_KEY=your-value -- npx -y plzebo运行前请先填写空着的值。
粘贴到项目中的 .cursor/mcp.json,或 ~/.cursor/mcp.json
{
"mcpServers": {
"plzebo": {
"command": "npx",
"args": [
"-y",
"plzebo"
],
"env": {
"ANTHROPIC_API_KEY": "your-value",
"OPENAI_API_KEY": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
粘贴到项目中的 .vscode/mcp.json
{
"servers": {
"plzebo": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"plzebo"
],
"env": {
"ANTHROPIC_API_KEY": "your-value",
"OPENAI_API_KEY": "your-value"
}
}
}
}浏览器会先询问是否打开应用,然后应用会显示设置并请你确认。密钥的值会留空,由你自己填写。
这个服务器在你的电脑上运行,而 ChatGPT 只能连接互联网上的服务器。请选择其他应用。
你的选择通过 Cookie 保存在这台设备上,无需账户。
这些设置是根据作者在注册中心的条目生成的。如果 README 的写法不同,请以 README 为准。
它在你的电脑上运行;安装后,工具列表会显示在你的 AI 应用中。
我们检查的是任何人都能看到的信息;我们没有阅读代码。不适用的检查项不计入总数。 · 检查于 2026年11月7日
注册名称已通过 GitHub 账户 wkoverfield 验证,该账户拥有此仓库
我们还没有从 GitHub 读取这个仓库
我们还没有从 GitHub 读取这个仓库
它在你的电脑上运行,没有互联网端点
在你的电脑上运行,改用本地设置
它在你的电脑上运行;我们只能读取互联网端点的工具列表
与注册中心里这个分类中所有活跃的服务器比较。只有当发布者拥有该仓库时,星标数才计入。
它在 1 项适用的基础检查中通过了 1 项。我们没有阅读代码。在添加密钥或令牌之前,请先看看这个服务器要求哪些权限,并使用只具备所需权限的密钥。
你需要填写:ANTHROPIC_API_KEY, OPENAI_API_KEY
它在你的电脑上运行。你的 AI 应用会在需要时启动它,数据不会经过作者的服务器(除非它自己调用在线服务)。
GitHub 仓库最后更新于–,最新版本(0.2.0)于3个月前进入注册中心。
支持 MCP 的应用,例如 Claude Desktop、Claude Code、Cursor 和 VS Code。你的电脑上还需要有 Node.js。
同一分类中有:Spec Driven Development, Remote Desktop Commander, arr-mcp
同一分类中其他作者的服务器,按星标数排序。
如何看卡片:★ GitHub 星标i三大支柱:评价 · 检查 · 使用情况i更新 = 最新版本发布到注册中心的时间i
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
One server, 40 tools, the whole media stack: *arrs, Jellyfin, Plex, Seerr, Cleanuparr, downloaders
按原文从作者的仓库复制。PopNx MCP 没有审查或背书其内容。HTML、图片和脚本已被移除。链接会离开本站。
Cost-parity bench for agent loops. Point it at two or more ways of getting the same task done (a cheaper model mix, a different setup, a tool on vs off) and it measures which one delivers the outcome for less, in dollars and in minutes, and whether the gap is real or noise. Runs locally, on your own keys or your own subscription. An agent can call it on itself over MCP.
The headline metric is cost per successful outcome: total metered spend divided by successes, compared across arms with a 95% confidence interval. Time per successful outcome is reported beside it. When the data cannot support a claim, plzebo says so instead of making it.
claude-* call to each arm's model.sk-placebo-...) and a redirected base URL; the gateway swaps in the real key upstream and records provider-reported token usage per call. A call that bypasses the gateway fails at the provider instead of billing invisibly, and a trial with zero metered calls is flagged, never compared.plzebo verify receipt.json recomputes every derived number from the raw rows and reports any divergence.Node 22.6 or later (the CLI runs its TypeScript sources through Node type stripping; the launcher supplies the flag on versions that need it). Git, plus whatever your arms and oracle need (for the examples here: python3).
npx plzebo run spec.yaml --estimate # prices the run from prior receipts; spends nothing
npx plzebo run spec.yaml # runs the experiment npx plzebo verify # recompute a receipt's claims from its raw rows
A spec:
name: sonnet-vs-opus
fixture: repo: ./my-fixture-repo # a git repo; every trial gets a fresh clone ref: main task: "Make the failing tests in this repo pass. Do not edit the tests." arms: sonnet: cmd: claude --print "$PLZEBO_TASK" --dangerously-skip-permissions --strict-mcp-config --mcp-config '{"mcpServers":{}}' --model claude-sonnet-5 auth: passthrough # runs on your logged-in Claude subscription rewrite: claude-*: claude-sonnet-5 # pin every call this arm makes, including auxiliary ones opus: cmd: claude --print "$PLZEBO_TASK" --dangerously-skip-permissions --strict-mcp-config --mcp-config '{"mcpServers":{}}' --model claude-opus-4-7 auth: passthrough rewrite: claude-*: claude-opus-4-7 baseline: opus oracle: cmd: [python3, -m, unittest, discover, -s, tests, -t, .] k: 3 trialTimeoutMs: 600000 budgetUsd: 30 # hard kill switch enforced at the gateway
Every run prints its cost estimate before the first trial. A run without a budget is refused. Start with a small K: the report on an inconclusive run prints the exact K that would resolve it and the estimated cost, and plzebo extend --to-k K reuses the trials you already paid for. A receipt can be extended once, and the extension is disclosed inside it.
auth: placebo (default): you export ANTHROPIC_API_KEY or OPENAI_API_KEY; arms only ever see placebo keys. Strongest metering guarantee: a bypassing call fails loudly.auth: passthrough: the arm uses its own login. No API credits are spent; USD is imputed from metered tokens at list rates and the receipt discloses this. Tokens are the ground truth either way. Verified for Claude Code, which honors ANTHROPIC_BASE_URL under subscription auth. Codex under ChatGPT auth routes to its own backend and ignores OPENAI_BASE_URL, so subscription-authed Codex is unmeterable; run Codex arms in API-key mode via the codex-cli template instead.Two caveats for passthrough arms. A trial that bypasses the meter is excluded rather than falsely counted, but the tokens it consumed upstream are real; the receipt cannot see them. And a personal login carries personal agent configuration: instructions, hooks, and memory files travel with it, which can inflate costs and, for agents that act on standing instructions, cause writes outside the trial workspace. Prefer isolated-config templates when comparing loops rather than your own setup.
Every cost node in a receipt records two models: role, the model the loop REQUESTED, and model, what the arm's rewrite rules resolved it to. A loop that requests different models for different jobs (a main session on one model, subagents on another) therefore encodes its role structure into the receipt, and arms that share the same command can bind those roles differently through rewrites alone:
arms:
mixed: cmd: sh scripts/arms/subagent-mix.sh # opus main session + a worker agent definition requesting sonnet auth: passthrough rewrite: claude-opus-*: claude-opus-4-7 # orchestrator stays opus claude-sonnet-*: claude-sonnet-5 # workers stay sonnet claude-*: claude-opus-4-7 # catch-all LAST: wildcard rules match in order after exact keys all_opus: cmd: sh scripts/arms/subagent-mix.sh # byte-identical loop; only the mapping differs auth: passthrough rewrite: claude-*: claude-opus-4-7
The packaged scripts/arms/subagent-mix.sh shows the Claude Code shape: a headless session with an inline --agents definition whose worker requests a different model than the main session. Adapt the agent prompt and models to your task.
A model-mix comparison is only valid when the loop actually delegated: a trial whose cost tree has no worker-role calls measured a solo run, not a mix.
npx plzebo fidelity <receipt.json|run-dir> # per-trial requested -> resolved counts
npx plzebo fidelity --worker "claude-haiku-*"
fidelity exits 1 if any completed trial never made a worker-role call, and prints each trial's call counts, tokens, and imputed spend grouped by requested and resolved model, so the mix an arm claims is checkable from its receipt.
The gateway speaks two wire formats: Anthropic and OpenAI-compatible, which covers most open-weight serving (Ollama, vLLM, OpenRouter, Together, and similar). Arms can override providers individually:
arms:
local-qwen: cmd: my-loop --task "$PLZEBO_TASK" upstreams: openai: http://127.0.0.1:11434 # any OpenAI-compatible server gpt: cmd: my-loop --task "$PLZEBO_TASK" keysFrom: openai: OPENAI_API_KEY # env var NAME; specs never contain key values
Constraint: plzebo can only meter loops that authenticate with a key or token and honor a redirectable base URL (ANTHROPIC_BASE_URL / OPENAI_BASE_URL).
npx plzebo-mcp serves four tools on stdio: measure_start, measure_extend, measure_status, and measure_result. Starting a measurement is two-phase: the first call validates the request and returns a cost estimate plus a one-time confirm token while spending nothing; only a second call presenting that token runs trials. A budget is mandatory, and MCP arms come only from named templates (claude-cli, claude-subscription, codex-cli), never raw shell. Job state and receipts persist under .plzebo/, so verdicts survive the session that produced them.
A receipt is a single-task result under a stated model mapping. It is not a model capability ranking and does not generalize beyond its fixture; the estimand text inside the receipt says exactly this. USD figures on passthrough arms are imputed at pricing-table rates from metered tokens, not billed spend, and the pricing table version travels in the receipt so the numbers stay recomputable after prices change.
MIT