我构建了一个 Bitbucket CLI——它让我相信 CLI 在 AI 代理方面胜过 MCP 服务器
Source: Dev.to

概览
GitHub 有 gh。GitLab 有 glab。Bitbucket Cloud 有……?
它叫 bb。
基本命令
bb pr list # 打开 PR,最近的在前
bb pr view 42 # 详情、审阅者、状态 — 不打开浏览器
bb pr diff 42 # 原始 diff,可管道输送到 less / delta / 任意工具
bb pr merge 42 # 合并、压缩合并或快进合并
bb pipeline wait # 阻塞直至当前构建完成
为什么 CLI 能胜过 AI 代理的 MCP 服务器
1. 工具模式在每一次交互中都会消耗上下文
MCP 服务器会把工具以 JSON schema 的形式注入模型上下文,每条消息都要这样做。十二个工具,十二个 schema,每一次交互都要消耗。CLI 只需要一次,通过 --help 广告自身,代理记住其形状。你只需要一次性支付 token,而不是永远消耗。
2. Shell 是通用的工具协议
每个代理框架——Claude Code、Cursor、Aider、Codex,以及后续的框架——都已经会运行 bash。bb pr view 42 在你安装的当天就能工作,在所有工具中都无需额外集成代码。MCP 需要一个会说 MCP 协议的客户端,这会为本来就会作为子进程运行的功能增加非平凡的耦合。
3. 组合是免费的
bb pr list --output-style ai | grep OPEN | head -5
bb pipeline latest --output-style ai | jq -r .status
bb pr diff 42 | wc -l
代理可以管道、过滤、计数、链式调用——全部使用它已经熟悉的原语。MCP 工具是封闭的函数调用;你无法 grep MCP 响应或把它管道输送到 jq。每一次切片、切块都需要新增工具或新增参数。
4. 你可以调试它
当代理出现奇怪行为时,你可以直接运行它执行的命令,看到它实际看到的输出。使用 MCP 时,代理只能看到服务器构造的结构化负载,你只能通过日志去推断到底发生了什么。
5. 分发已经解决
npm install -g @hugo-hebert/bbucket-cli,完成。无需配置文件、服务器进程、也不需要“重启编辑器让工具生效”。代理在 shell 可用的那一刻就继承了该工具。
CLI 对代理唯一的欠缺
现有的 CLI 在默认输出上做得不够好,这对模型来说很不友好,因为会出现盒子绘制字符和 ANSI 颜色。于是每个 bb 命令都有第三种模式,除了默认模式和 --json:
bb pr list --output-style ai
输出(制表符分隔、无颜色、无边框):
42 OPEN Fix auth token refresh hugo
41 MERGED Add env variable endpoint sara
使用 bb option --output-style ai 将其设为默认,代理即可一次性读取输出。这就是全部适配——无需服务器、无需 schema、无需协议——只需要一种输出模式。你可以获得 MCP 服务器大部分提供的功能,却没有集成成本。
试一试
npm install -g @hugo-hebert/bbucket-cli
bb auth
bb pr list
- 仓库:
- 文档:
