如何使用 Bencher MCP
Bencher MCP 是一个托管的 Model Context Protocol(MCP)服务器。
它让 AI 代理和助手无需安装 bencher CLI 即可查询基准测试数据并提交基准测试结果。
当 bencher CLI 可用时,它仍然是使用 Bencher 的推荐方式。
bencher run 负责处理基准测试工具适配器、迭代运行和 CI 集成。
当未安装 CLI,或您的 MCP 客户端无法执行 shell 命令时,请使用 Bencher MCP。
连接
Bencher 已收录在 Claude 连接器目录 中,该目录服务于 claude.ai、Claude Desktop、Claude Mobile 和 Claude Code。 添加 Bencher 连接器,并在 Claude 提示时使用您的 Bencher 账户登录。 当 Claude Code 使用 claude.ai 订阅登录时,它会使用您在 claude.ai 中添加的连接器。 该连接器仅连接到 Bencher Cloud。
Bencher 已收录在 OpenAI 插件目录 中,该目录服务于 ChatGPT 和 Codex。
添加 Bencher 插件,并在提示时使用您的 Bencher 账户登录。
在 Codex 中,该插件还会带来 Bencher 技能,让 Codex 可以运行 bencher CLI。
该插件仅连接到 Bencher Cloud。
对于其他 MCP 客户端、未使用 claude.ai 订阅登录的 Claude Code、Bencher Self-Hosted 以及 CI,请改用 URL:
| 部署方式 | URL |
|---|---|
| Bencher Cloud | https://mcp.bencher.dev/mcp |
| Bencher Self-Hosted | https://<api-host>/mcp |
将该 URL 添加到您的 MCP 客户端,并在客户端提示时使用您的 Bencher 账户登录。 Claude Code 通过 OAuth 登录;通过 URL 添加 Bencher Self-Hosted 服务器时,ChatGPT 和 claude.ai 也通过 OAuth 登录。 例如,从 Claude Code 连接:
claude mcp add --transport http bencher https://mcp.bencher.dev/mcp当某个工具需要您登录时,在 Claude Code 中运行 /mcp,并按照浏览器中的步骤操作。
如果改用 API 密钥连接,请在 Authorization 请求头中发送它:
claude mcp add --transport http bencher https://mcp.bencher.dev/mcp \ --header "Authorization: Bearer $BENCHER_API_KEY"或使用通用的 MCP 客户端配置:
{ "mcpServers": { "bencher": { "type": "http", "url": "https://mcp.bencher.dev/mcp", "headers": { "Authorization": "Bearer ${BENCHER_API_KEY}" } } }}认证
使用 OAuth 登录
支持 OAuth 的 MCP 客户端使用您的 Bencher 账户登录,因此您无需在其中粘贴任何密钥。
客户端会在您连接时,或在某个工具首次需要您登录时,在浏览器中打开 Bencher。
Bencher 以应用的网址来标识该应用,并列出该应用请求执行的操作。
登录,或粘贴用户 API 密钥(bencher_user_*),然后批准或拒绝。
每当有应用连接时,Bencher 都会询问您,且项目 API 密钥(bencher_run_*)无法用于批准。
应用最多保持连接一年。
使用用户 API 密钥批准的应用,会在该密钥被撤销或过期时立即断开连接。
OAuth 访问令牌用于 Bencher MCP:
Bencher API 会以 401 Unauthorized 拒绝它们。
在 Bencher Self-Hosted 上,配置 API 服务器的 plus.oauth 部分后即可登录。
ChatGPT 和 claude.ai 需要能从互联网访问该服务器。
只要服务器能获取 Claude Code 的客户端元数据文档,或已在 plus.oauth.clients 中配置该文档,Claude Code 也可以登录您自己网络中通过 https 提供服务的服务器。
作用域
对于应用请求的作用域,您只能全部批准或全部拒绝:
| 作用域 | 应用可以 |
|---|---|
projects:read |
查看您的项目及其结果,包括私有项目 |
projects:write |
查看、创建和更改您项目中的数据,包括私有项目,例如报告、阈值和警报,并提交会创建项目或认领 unclaimed 组织的运行 |
openid |
知道您登录的是哪个 Bencher 账户 |
email |
查看您的电子邮件地址及其是否已验证 |
profile |
查看您的姓名和用户名 |
读取类工具(list_*、view_* 和 query_perf)需要 projects:read。
其他所有工具都需要 projects:write,它包含 projects:read。
两者都未请求的应用会获得 projects:read。
登录时未获得 projects:write 的应用,在调用写入类工具时会被要求重新登录。
openid、email 和 profile 作用域用于 OpenID Connect,仅当服务器配置了 plus.oauth.signing_key 时才可用。
应用以您的身份操作:它在每个项目中能查看和更改什么,仍由您在该项目中的角色决定,并且它永远不会拥有服务器管理员权限。
已连接的应用
要查看已连接到您账户的应用,请在 Bencher Console 的账户菜单中打开 Connected Apps,或访问 /console/users/apps。
每个应用都按其网址列出,并显示它能执行的操作、连接时间、上次刷新访问权限的时间,以及您批准它的方式。
Revoke 会立即断开应用的连接。
API 密钥
Bencher MCP 也接受与 Bencher API 相同的 Authorization: Bearer 凭据:
项目 API 密钥(bencher_run_*)或用户 API 密钥(bencher_user_*)。
项目 API 密钥的权限范围限定在单个项目内,因此是大多数代理的最佳选择。
用户 API 密钥可以访问该用户的所有项目。
无效的凭据在每个请求中都会被拒绝,绝不会被当作匿名访问。
不登录
公开项目无需任何凭据即可读取。 匿名请求按 IP 地址共享速率限制,而登录后的请求计入您自己的限制。 当服务器配置了 OAuth 时,如果匿名工具调用需要登录,Bencher MCP 会请求您的客户端登录:
- 读取私有项目时。不存在的项目会得到相同的响应,因此输错项目或 ID 时,即使是在公开项目中,也会被要求登录。
- 调用写入类工具时,但向
unclaimed项目提交的submit_run除外。 - 使用
list_projects列出组织的项目时。 - 超出匿名速率限制时。
工具
工具范围与项目 API 密钥(bencher_run_*)的权限一致:
项目范围内的读取和写入,没有删除工具。
也没有重命名工具,并且使用项目 API 密钥时,警报更新仅限于状态变更。
大多数工具都接受 project 参数,可以是项目的 slug 或 UUID。
| 工具 | 用途 |
|---|---|
submit_run |
提交基准测试工具的原始输出;服务器会解析它,并按需自动创建分支、测试环境和阈值 |
query_perf |
查询基准测试指标随时间的变化 |
list_projects, view_project |
项目 |
list_reports, create_report, view_report |
报告 |
list_branches, create_branch, view_branch, update_branch |
分支 |
list_testbeds, create_testbed, view_testbed, update_testbed |
测试环境 |
list_benchmarks, create_benchmark, view_benchmark, update_benchmark |
基准测试 |
list_measures, create_measure, view_measure, update_measure |
度量 |
list_thresholds, create_threshold, view_threshold, update_threshold |
阈值 |
list_alerts, view_alert, update_alert |
警报 |
view_metric |
带有完整上下文的单个指标 |
list_plots, create_plot, view_plot, update_plot |
已保存的仪表板图表 |
list_jobs, view_job |
裸机运行器任务 |