mcp2cli Bake模式深度解析:把任意API烘焙成@命名CLI,一条命令生成专属工具
【免费下载链接】mcp2cliTurn any MCP, OpenAPI, or GraphQL server into a CLI — at runtime, with zero codegen项目地址: https://gitcode.com/gh_mirrors/mc/mcp2cli
mcp2cli 是一个零代码生成的 CLI 转换工具,能把任意 MCP 服务器、OpenAPI 规范或 GraphQL 端点在运行时直接变成命令行工具,最高节省 96–99% 的工具 Schema Token 开销。其中Bake 模式(烘焙模式)是它最实用的特性之一:一次配置,永久复用,让重复的--spec、--mcp参数和认证信息彻底消失。
为什么需要 Bake 模式 🍰
想象一下:你每天要用 20 次同一个 OpenAPI 接口,每次都要敲这一串:
mcp2cli --spec https://api.example.com/spec.json \ --auth-header "Authorization:Bearer tok_xxx" \ --base-url https://api.example.com list-pets重复输入、密钥暴露在进程列表里、团队里每个人都得记住同一套参数——这是没有 Bake 模式时的日常。
Bake 模式的核心思路:把这些"连接设置"一次性"烘焙"成一个命名配置,之后只需要一个@名字前缀就能直接调用。它是 mcp2cli 面向高频 API 调用场景的"配置书签",也是 LLM Agent 接入大规模 MCP 服务器时的关键一环。
核心收益:命令从 4 行缩到 1 行、密钥支持
env:/file:引用避免泄露、过滤规则让大服务器只暴露你需要的工具。
一条命令烘焙你的专属 CLI
Bake 模式支持三种数据源:OpenAPI(--spec)、MCP HTTP/SSE(--mcp)、MCP stdio(--mcp-stdio),三者互斥。
# 从 OpenAPI 规范烘焙,只保留 GET/POST,排除 delete 和 update mcp2cli bake create petstore --spec https://api.example.com/spec.json \ --exclude "delete-*,update-*" --methods GET,POST --cache-ttl 7200 # 从 MCP stdio 服务器烘焙,白名单只保留搜索和列表 mcp2cli bake create mygit --mcp-stdio "npx @mcp/github" \ --include "search-*,list-*" --exclude "delete-*"烘焙成功后,工具会注册到本地配置文件~/.config/mcp2cli/baked.json(可通过MCP2CLI_CONFIG_DIR环境变量覆盖目录),并直接给出确认:
Baked tool 'petstore' created.命名的硬约束
Bake 工具名必须匹配正则[a-z][a-z0-9-]*——小写字母开头,只能包含小写字母、数字和连字符。这个限制保证了@name前缀在 shell 中的稳定性。相关源码见_BAKE_NAME_RE定义 与_bake_create参数校验。
用 @前缀一键调用,告别冗长参数
烘焙完成后,任何调用都只需@名字+ 子命令,连接参数、认证头、缓存策略全部自动注入:
mcp2cli @petstore --list # 列出可用命令 mcp2cli @petstore list-pets --limit 10 # 调用接口 mcp2cli @mygit search-repos --query "rust" # 调用 MCP 工具它的魔法在于:@petstore在底层被展开成你当初bake create时的完整 argv(--spec、--auth-header、--cache-ttl、--transport等),再拼接你本次的子命令参数,最后交给核心执行引擎。展开逻辑在_baked_to_argv,调用入口在_run_baked。
💡 你完全不需要再记
--spec指向哪个文件,也不用担心密钥被ps命令看到——它们都锁在本地配置里。
三大过滤维度:只暴露你需要的工具
大服务器动辄上百个工具,--list一次就吃掉几千 Token。Bake 模式提供三层过滤,按固定顺序生效:--methods→--include→--exclude,从源码filter_commands可以看到清晰的实现:
| 过滤维度 | 作用 | 适用场景 | 示例 |
|---|---|---|---|
--methods | 按 HTTP 方法白名单 | 只读场景禁写 | --methods GET,POST |
--include | 通配符白名单 | 只要某类操作 | --include "list-*" |
--exclude | 通配符黑名单 | 排除危险操作 | --exclude "delete-*" |
三个过滤器都是逗号分隔的 glob 模式,匹配的是命令名。MCP 工具没有 HTTP 方法,会自动跳过--methods过滤,这是filter_commands的有意设计。
配合 mcp2cli 的使用感知排序,过滤后的烘焙工具还能进一步省 Token:
mcp2cli @myapi --list --top 10 --compact # 只显示最常用的10个工具名,约20 Token mcp2cli @myapi --list --sort recent # 按最近使用排序完整管理生命周期:list / show / update / remove
烘焙工具是本地配置,有完整的 CRUD 生命周期,对应源码_handle_bake分发器:
mcp2cli bake list # 列表:名称 / 类型 / 来源,一屏看全 mcp2cli bake show petstore # 查看配置,密钥自动打码 mcp2cli bake update petstore --cache-ttl 3600 --methods GET mcp2cli bake remove petstore # 删除,并清理已安装的包装脚本密钥安全是 Bake 模式的一等公民。bake show会对认证头做脱敏——明文只显示前 4 位加****,而env:/file:前缀的引用值原样展示(因为它们本身就不是明文)。脱敏逻辑见_bake_show。
安装为独立命令:让工具"脱钩"运行
bake install会在~/.local/bin/下生成一个极简的 shell 包装脚本,让烘焙工具变成一条独立系统命令,无需再带mcp2cli前缀:
mcp2cli bake install petstore # 生成的包装脚本内容(见 _bake_install): # #!/bin/sh # exec mcp2cli @petstore "$@" petstore --list # 直接当系统命令用 petstore list-pets支持--dir自定义安装目录,比如装到./scripts/方便纳入项目版本管理。包装脚本的生成逻辑在_bake_install。
进阶:密钥、OAuth 与传输策略
Bake 模式完整继承了 mcp2cli 的所有高级能力,都能在bake create时一次性锁定:
- 密钥引用:
--auth-header "Authorization:env:MY_TOKEN"或file:/run/secrets/token,避免明文出现在命令行,由resolve_secret在运行时解析。 - OAuth:
--oauth启用授权码 + PKCE 流程,--oauth-client-id/--oauth-client-secret支持env:/file:前缀,Token 自动缓存与刷新。 - 传输策略:
--transport auto|sse|streamable锁定 MCP HTTP 传输方式,跳过自动协商的往返探测。 - 缓存 TTL:
--cache-ttl秒数,规范与工具列表缓存在~/.cache/mcp2cli/,默认 1 小时。
完整参数说明可直接运行mcp2cli bake create --help查看。
上手三步走 ⚡
- 烘焙:
mcp2cli bake create myapi --spec ./openapi.json --methods GET --include "get-*" - 调用:
mcp2cli @myapi --list,之后任何调用都带@myapi前缀 - (可选)独立化:
mcp2cli bake install myapi,之后直接用myapi命令
写在最后
mcp2cli 的 Bake 模式解决的是**"API 调用配置重复劳动"**这个真实痛点:一次烘焙,命令从多行缩到一行,密钥安全地锁进本地配置,过滤规则让大服务器只暴露你需要的工具。它不需要你写任何代码,也不需要预先生成客户端——所有命令都是从规范或 MCP 工具定义在运行时动态派生的。
如果你正在用 LLM Agent 接入一个拥有上百个工具的 MCP 服务器,Bake 模式 + 使用感知排序(--top+--compact)的组合,能把每一轮的工具清单开销压到最低,这正是 mcp2cli "节省 96–99% Token" 承诺的核心来源。
相关文档与源码入口:Bake 子命令分发与 CRUD · Bake 模式命令过滤 · Bake 模式测试用例
【免费下载链接】mcp2cliTurn any MCP, OpenAPI, or GraphQL server into a CLI — at runtime, with zero codegen项目地址: https://gitcode.com/gh_mirrors/mc/mcp2cli
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考