展示HN:Mcptoon – 将MCP CLI客户端的工具发现令牌减少97%
MCP工具发现的成本超过10,000个令牌,而mcptoon只需350个。每个AI代理都有一个MCP客户端。跨平台。零依赖。如果这能为您节省令牌,请给仓库加星——这有助于其他人发现它。英语 | 中文文档 | 报告错误 | 请求功能 问题 每个启用MCP的对话在语法上消耗令牌,而不是数据:您的代理连接到5个MCP服务器,列出它们的工具:约10,000个JSON令牌。您的代理调用20个工具,每个工具返回500-3,000个令牌,外面包装着{"content":[{"type":"text","text":"..."}]}。总的MCP开销:实际思考之前消耗40,000-70,000个令牌。在128K上下文窗口中,这意味着30-55%已消失。不是在工作,而是在语法上。 解决方案 mcptoon是一个CLI客户端,可以连接到任何MCP服务器(标准输入或HTTP),并输出TOON(令牌优化对象表示法),而不是JSON。 操作 | 操作 | JSON令牌 | mcptoon令牌 | 节省 | |---|---|---|---| | 工具发现(96个工具) | ~2,000 | ~60 | 97% | | 工具结果(结构化数据) | ~800 | ~350 | 56% | | 工具结果(原始HTML/文本) | ~1,000 | ~900 | 10% | 零依赖。纯Python。50KB。适用于所有AI代理——Claude Code、Codex、OpenCode、Cursor、CatPaw,任何可以运行Shell命令的东西。 显示我JSON(287个令牌)——其他每个MCP客户端返回的内容: [ { "name": "search_web", "description": "搜索网络信息", "inputSchema": { "type": "object", "properties": { "query": { "type": "string", "description": "搜索查询" }, "num_results": { "type": "number", "default": 5 } }, "required": ["query"] } }, { "name": "fetch_url", "description": "从URL获取内容", "inputSchema": { "type": "object", "properties": { "url": { "type": "string" } }, "required": ["url"] } } ] TOON(5个令牌)——mcptoon返回的内容: search_web fetch_url 工具发现节省98%,完整模式节省60%,没有信息丢失。 快速开始 pip install mcptoon 零依赖。50KB。Python 3.10+。Windows,macOS,Linux。 mcptoon init # 示例配置:~/.mcptoon/config.json mcptoon add fetch --stdio npx -y @modelcontextprotocol/server-fetch mcptoon manifest --toon # -> fetch:fetch mcptoon call fetch fetch '{"url":"https://example.com"}' --toon mcptoon call fetch fetch '{"url":"https://example.com"}' --json # 当您需要JSON时 TOON如何运作 JSON TOON | 为什么 | |:---| | {"name":"search","count":3} | | name:search|count:3 | 管道替换花括号 + 引号 + 冒号 | [1, 2, 3] | | 1 2 3 | 空格替换中括号 + 逗号 | true / false | | T / F | 1个字符与4-5个 | null | | ∅ | 1个符号与4个字符 | "line1\nline2" | | line1↲line2 | ↲替换转义序列 | {"a":{"b":[1,2]}} | | a:b:1_2 | 递归压缩 输出格式 | 标志 | 获取内容 | |:---|:---| | --toon | 紧凑表述,完整语义,减少40-60%比JSON | | --compact | 仅工具名称,以空格分隔,减少97%比JSON | | --json | 标准JSON(用于脚本,CI)基线 | | --raw | 原始响应,无解析,完整大小 | | --head | 仅前N个项目,变量 | | --max-chars N | 硬截断为N个字符,变量 | | --full | 禁用默认4000个字符的截断,完整大小 | 设置MCPTOON_AGENT_TYPE=claude,所有调用自动选择--toon。 与其他MCP客户端的比较 | mcptoon | mcp-cli | mcporter | 原始MCP SDK | |:---|:---|:---|:---| | 令牌节省 | 97% 清单,40-60% 结果 | 0% | 0% | 0% | | 兼容所有代理 | 是(Claude Code,Codex,OpenCode,Cursor,任何) | Claude仅 | Claude仅 | varies | | 一个配置适用于所有代理 | 是 | 否 | 否 | 否 | | 输出格式 | TOON + JSON + 紧凑JSON | JSON | JSON | JSON | | 依赖关系 | 0 | 5-20 npm | 3-8 | 危险操作阻塞 | 是 | 否 | 否 | 否 | | 使用跟踪 | 是(本地) | 否 | 否 | 否 | | 模式缓存 | 是(5分钟) | 否 | 否 | 否 | | 安装大小 | ~50KB | ~50MB+ | ~30MB | ~10MB | | 平台支持 | Windows,macOS,Linux | Linux/macOS | macOS | varies | | 兼容所有代理 | mcptoon是一个CLI工具。如果您的代理可以运行Shell命令,它就可以使用mcptoon。代理如何使用Claude Code 在SKILL.md文件中编写mcptoon命令 Codex (OpenAI) 将mcptoon添加到AGENTS.md OpenCode 在自定义命令中使用mcptoon Cursor 将mcptoon添加到.cursorrules CatPaw 在技能文件中编写mcptoon命令 任何代理 如果它可以运行Shell命令,就可以调用mcptoon。 配置MCP服务器一次,在~/.mcptoon/config.json中。每个代理共享相同的服务器,相同的工具,相同的令牌节省。 Claude Code 导出 MCPTOON_AGENT_TYPE=claude # 自动选择 --toon # 在~ /.claude/skills/mcp-tools/SKILL.md 搜索网络:mcptoon call exa search '{"query":"AI news"}' 列出可用工具:mcptoon manifest --toon 获取URL:mcptoon call fetch fetch '{"url":"https://example.com"}' Codex (OpenAI) # 在AGENTS.md或系统提示中 使用mcptoon调用MCP工具。它与JSON相比节省了60%令牌。 - 列出工具:mcptoon manifest --toon - 调用工具:mcptoon call <server> <tool> '{"args":"这里"}' --toon Python API from mcptoon.client import MCPClient from mcptoon.output import toon with MCPClient(stdio=["npx", "-y", "@modelcontextprotocol/server-fetch"]) as c: tools = c.list_tools() print(toon(tools)) # 紧凑TOON 结果 = c.call_tool("fetch", {"url": "https://example.com"}) print(toon(result)) 自定义处理程序 — 完全绕过MCP
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡