mcpField
C
cli-bridge-mcp

cli-bridge-mcp

本地服务
github.comAI 与智能体22 周前更新

关于 cli-bridge-mcp

cli-bridge-mcp 是面向本地 AI CLI 用户的 MCP 服务,可让当前助手委托其他已安装的 CLI 并汇总结果。它通过子进程调用官方 CLI,无需提取 API 密钥,并提供隔离构建、多模型审查和任务路由。

主要功能

  1. 01并行或级联咨询多个 CLI
  2. 02按模式选择模型并记录线程
  3. 03隔离工作树中生成代码差异
  4. 04多模型审查差异与方案辩论
  5. 05检查 CLI 状态、成本和任务

适用场景

  1. 01让多个模型并行定位代码缺陷
  2. 02在隔离工作树中委托代码修改
  3. 03对变更进行安全或代码审查
  4. 04比较迁移方案并汇总投票

MCP 相关

该 MCP 服务为客户端提供咨询、构建、审查和任务管理工具,并能调用本机已安装的 AI CLI。它也通过 MCP 资源公开用量摘要和各 CLI 通道统计。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"joaoberne-cli-bridge": {
"command": "uvx",
"args": [
"cli-bridge-mcp"
],
"env": {
"CLI_BRIDGE_PROFILE": "<CLI_BRIDGE_PROFILE>",
"CLI_BRIDGE_TERSE": "<CLI_BRIDGE_TERSE>",
"CLI_BRIDGE_CACHE_TTL_S": "<CLI_BRIDGE_CACHE_TTL_S>"
}
}
}
}
启动命令uvx cli-bridge-mcp
需要配置的环境变量
CLI_BRIDGE_PROFILECost profile: saver (free-only fan-out, include_paid refused) | balanced (paid only with include_paid) | max (limited/paid join fan-out).
CLI_BRIDGE_TERSEResponse-style preamble level: off | lite (default) | full | ultra.
CLI_BRIDGE_CACHE_TTL_SResponse cache TTL in seconds. 0 = off (default).

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypicli-bridge-mcp0.3.0

工具

2

收录的工具列表 · 更新于 2 周前

参数类型必填说明
deepboolean否对每个免费通道的身份验证进行实时探测。

详细介绍

cli-bridge

CI PyPI

一个 Model Context Protocol 服务,让你正在对话的 AI 助手能够咨询安装在你机器上的其他 AI 命令行工具——Claude Code、Codex、Gemini、Mistral、opencode、Ollama、Apple fm 等。每个通道都会将官方命令行工具作为子进程启动:无需 API 密钥,不提取令牌,默认只读。

依赖:Python 标准库和 mcp(1.x 或 2.x)。无需守护进程。

功能

ask_gemini(task="find the bug across ./src", cwd="path/to/repo")     # one lane (1M-token context)
ask_apple(task="what's wrong in this UI?", images=["shot.png"])      # vision, on-device, $0
ask_all(task="…")                                                    # every free lane in parallel + disagreement score
ask_cascade(task="…")                                                # cheapest→strongest, skips cooled-down lanes
ask_best(task="…", mode="deep")                                      # router picks; rate_lane teaches it
ask_build(lane="opencode", task="add retry with backoff")            # build in a throwaway worktree → diff
review_diff(base="origin/main", focus="security")                    # multi-model review, severity-ranked
debate(task="which migration strategy?", vote="borda")               # N blind answers, peer-ranked
workflow(preset="converge", task="is this migration safe?")          # author → blind arbiter → cross-family peers
git_text(kind="commit")                                              # Conventional Commit from the staged diff

每次调用 ask_<lane> 都会返回一个线程 ID;可重复使用该 ID(也可切换到其他通道),进行可跨越 /compact 的多模型对话。conversations 可列出或重放线程。

工具

15 个固定工具,另有每个已安装命令行工具对应的一个 ask_<lane>:

  • 咨询:ask_<lane>、ask_all、ask_cascade、ask_best、conversations、list_models
  • 构建:ask_build(mode=isolated → 差异;mode=direct → 受区域保护的写入;使用 mode=direct 时,async=true → 可通过 job 调整)
  • 审查:review_diff(focus=code|security)、debate(vote=judge|borda)、workflow(预设:refine_plan、map_review、research_verify、fanout_compare、converge、premortem、test_plan、challenge)、git_text(kind=commit|pr)
  • 运维:job(action=status|result|cancel|list|tail|steer)、rate_lane、set_lane_cost、doctor、setup

CLI_BRIDGE_TOOLS=all 会添加 batch_run(带日志的扇出执行)和 reset_lane_state; CLI_BRIDGE_TOOLS=default,batch_run 会在默认工具基础上添加 batch_run;仅指定逗号分隔列表时,则只启用列表中的工具。 用量和通道健康状态是 MCP 资源(cli-bridge://usage-summary、cli-bridge://lane-stats)。 完整参考: docs/TOOLS.md。

此外还提供人工使用的命令行工具:cli-bridge doctor|ask|ask-all|ask-best|build|review-diff|security-review|test-plan|premortem|stats|usage|jobs|set-cost(适用时可使用 --json)。cli-bridge build <lane> "<task>" 会输出工作树差异;--apply 会将其应用为未暂存的更改。

安全编写代码

  • isolated(默认):委托方会在临时的 git 工作树中编辑,并返回差异。你的工作树不会受到影响。
  • direct:会写入实际文件,但仅限于你声明的 zone,并通过每个区域的锁以及任务结束后的区域违规检查加以保护;撤销操作仅限于该区域。async=true 会使其可调整(job action=tail|steer),并使用可执行的完成定义(dod_cmd)。

CLI_BRIDGE_VERIFY_PLAN_READONLY=1 会标记只读委托方擅自写入文件的情况(不会回退更改)。重新进入的深度受限(CLI_BRIDGE_MAX_DEPTH,默认值为 1)。委托方会在调用方的 cwd 中运行;若未设置,则使用 CLI_BRIDGE_DEFAULT_CWD;再否则使用宿主的 MCP 工作区根目录。

安装

前提条件:Python 3.12+、uv 以及至少一个已安装并登录的 AI 命令行工具。

uvx --from cli-bridge-mcp cli-bridge doctor        # what cli-bridge can see (--deep probes each lane)

将其接入你的宿主:

  • Claude Code:claude mcp add cli-bridge -- uvx cli-bridge-mcp(或使用插件:claude plugin marketplace add JoaoBerne/cli-bridge-mcp && claude plugin install cli-bridge@cli-bridge-mcp)。
  • 其他 MCP 宿主(Codex、Cursor、VS Code、Zed、Claude Desktop 等):
    { "mcpServers": { "cli-bridge": { "command": "uvx", "args": ["cli-bridge-mcp"] } } }
    
    各宿主的配置路径: docs/HOSTS.md。包含环境变量的完整示例: examples/mcp.example.json。图形界面宿主启动服务时使用的 PATH 通常很精简;cli-bridge 也会搜索常见安装目录,或者通过 CLI_BRIDGE_<LANE>_BIN=/full/path 指定通道对应的二进制文件。

重启宿主,然后让它咨询某个通道(“让 gemini 阅读 ./src 并找出 bug”)。 cli-bridge-mcp 是服务入口;cli-bridge 是人工使用的命令行工具。

配置

所有内容均通过环境变量(在 MCP 服务入口中设置)或 ~/.config/cli-bridge/config.json 配置(环境变量优先)。 重要的配置项:

CLI_BRIDGE_PROFILE=balanced            # saver = free-only fan-out · balanced = paid when asked · max = best
CLI_BRIDGE_<LANE>_COST=free|limited|paid
CLI_BRIDGE_<LANE>_ENABLED=false        # hide a lane
CLI_BRIDGE_<LANE>_MODEL=<model-id>
CLI_BRIDGE_<LANE>_DAILY_LIMIT=<runs/day>          # enforced at spawn
CLI_BRIDGE_<LANE>_CREDITS_PER_1K=<credits>        # makes CLI_BRIDGE_DAILY_CREDIT_CAP enforceable
CLI_BRIDGE_<LANE>_MIN_INTERVAL_S=2     # anti-burst pacing for a rate-limited free tier
CLI_BRIDGE_TERSE=off|lite|full|ultra
CLI_BRIDGE_GUARD=off|warn|strict       # injection guard on delegate output
CLI_BRIDGE_CACHE_TTL_S=0               # >0 enables the response cache
CLI_BRIDGE_TRACE_FOOTER=off            # hide the JSON trace footer in reports
CLI_BRIDGE_TOOLS=all                   # tool surface (see above)

doctor --deep(或 doctor(deep=true))会实时检查每个免费通道、其 CLI 版本及模型列表,并报告自上次深度探测以来的变化:每周运行一次,就能在委派失败前发现重命名的标志或新模型。

set_lane_cost(或 cli-bridge set-cost)会记录某个通道对你的费用,并将其保存到配置文件中。费用等级采用来源默认值,不会读取你的账户信息 (docs/COSTS.md);完整的支出模型请参阅 docs/BUDGET.md。

通道

内置通道:Claude Code、Codex(gpt)、Gemini(+ Antigravity agy)、Mistral(Vibe)、opencode、Ollama(本地,$0)、Apple Foundation Models(fm,设备端,$0)、Qwen Code、Copilot、Cursor、Grok,以及 Apple PCC(设置 APPLE_FM_SERVE_URL 后才会显示——它会连接你在终端中自行启动的 fm serve;请参阅 examples/apple-fm-serve.lane.json)。

images=[…] 适用于支持视觉的通道(apple、ollama、opencode、gpt、gemini);是否实际读取图像取决于通道背后的模型。

其他 CLI 只需通过 CLI_BRIDGE_LANES_FILE 提供几行 JSON: examples/local-runtime.lane.json(LM Studio、MLX、llama.cpp;运行时列表见 examples/local-first-host.md)、 examples/community-lanes.json(Aider、Goose、Plandex、Amp、Crush、Amazon Q、Droid),以及任何通过 curl 或随附的 cli-bridge-openai 桥接程序接入的 OpenAI 兼容端点(examples/openai-compatible.lane.json)。

已知限制

  • 不会提取令牌或密钥,但并非所有地方都正式认可对供应商 CLI 的非交互式使用。
  • 异步作业在进程内运行:服务重启会将运行中的作业标记为 interrupted。batch_run / workflow 会记录每项任务,并通过 resume_id 恢复。
  • 注入防护采用启发式方法。 请将委派输出视为数据。
  • 令牌/额度数据为估算值(字符数/4 × 你的 CREDITS_PER_1K)。
  • 实验性通道(qwen、copilot、grok、社区通道、images=):doctor --deep 会在你的机器上检查每个 CLI 的 --help。

开发

uv venv && uv pip install -e . pytest pytest-asyncio ruff
pytest -q            # no real CLI or network needed
ruff check src/ tests/

评测框架(在软件包之外运行的确定性评分器):benchmarks/。 历史记录:CHANGELOG.md。目录结构和规则:AGENTS.md、docs/ARCHITECTURE.md。

许可证

Apache 2.0

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。