运行时将 MCP Server、OpenAPI Spec、GraphQL Endpoint 零代码生成为 CLI 工具,专为 AI Agent 场景压缩 tool schema token 开销。
mcp2cli 是一个 Python CLI 工具,能够在运行时将任意 MCP Server(HTTP/SSE/stdio)、OpenAPI Spec(JSON/YAML)或 GraphQL Endpoint 动态转换为命令行接口,无需生成中间代码。其核心价值在于解决 AI Agent 调用工具时每轮对话需携带完整 tool schema 导致的 token 浪费问题,声称可节省 96–99% 的 schema token。
协议接入能力#
支持四种接入模式:--mcp URL(MCP HTTP/SSE,支持 auto/sse/streamable 传输)、--mcp-stdio CMD(stdio 子进程通信)、--spec URL|FILE(本地或远程 OpenAPI JSON/YAML)、--graphql URL(自动 introspection 发现 queries/mutations 并生成 selection sets)。
Token 优化机制#
- Schema 免传输:Agent 无需携带完整 tool schema,仅传递 CLI 命令行
- 工具列表压缩:
--list --top N --compact可将 96 个工具压缩至约 20 token - TOON 输出:面向 LLM 消费的高效编码格式,大数组场景比 JSON 节省 40–60% token
认证与安全#
内置 OAuth Authorization Code + PKCE 及 Client Credentials 两种流程,自动 token 缓存与刷新。env: 和 file: 前缀可从环境变量或文件读取敏感值,避免出现在进程参数列表中。
用户体验特性#
- Bake 模式:将 spec URL + auth 配置持久化为命名工具(如
@petstore),一键调用 - Usage-aware 排序:本地追踪调用频率,
--list默认按使用频率排序 - 搜索与过滤:
--search模糊搜索;--include/--excludeglob 白/黑名单 - 缓存机制:spec 与工具列表缓存于
~/.cache/mcp2cli/,默认 TTL 1 小时 - AI Agent Skill:提供 skills.sh 格式的可安装 skill,支持 Claude Code、Cursor、Codex 等代理
架构要点#
入口点为 mcp2cli:main,核心代码位于 src/mcp2cli/,测试位于 tests/(96 个测试用例)。核心依赖仅 httpx、mcp>=1.0、PyYAML 三库,Python >= 3.10,通过 PyPI 分发(当前版本 3.0.2,MIT 许可证,构建工具 uv_build)。所有子命令构建在内存中完成,不生成中间代码文件。配置持久化路径包括 ~/.config/mcp2cli/baked.json(Bake 配置)、~/.cache/mcp2cli/oauth/(OAuth token)、~/.cache/mcp2cli/usage.json(Usage 数据),均可通过环境变量覆盖。
安装与快速上手#
# 直接运行
uvx mcp2cli --help
# 全局安装
uv tool install mcp2cli
# pip 安装
pip install mcp2cli
# 列出 MCP server 工具
mcp2cli --mcp https://mcp.example.com/sse --list
# 调用 OpenAPI 端点
mcp2cli --spec https://petstore3.swagger.io/api/v3/openapi.json list-pets --status available
# GraphQL 查询
mcp2cli --graphql https://api.example.com/graphql users --limit 10
# MCP stdio 模式
mcp2cli --mcp-stdio "npx @modelcontextprotocol/server-filesystem /tmp" --list
待确认事项#
- "96–99% token 节省"的具体基准测试方法和数据未在 README 中详细展示
- TOON 格式的具体编码规范未在 README 中说明
- 项目暂未发布正式 GitHub Release,版本通过 PyPI 分发
- Bake 模式中持久化 auth 配置的加密或权限保护机制未说明