MCP 工具定义太多怎么办?Weavz Code Mode 用 3 个元工具替代 12,000 个
MCP(Model Context Protocol)让 AI 编码 Agent 能够调用外部工具,但随之而来的是一个被低估的隐患:工具 Schema 膨胀。
当你给 Agent 连接一个集成 100+ 工具的 MCP 服务器——Slack 频道、GitHub 仓库、Google Sheets 工作表都各自暴露为独立工具——Agent 的上下文窗口会被大量无关的工具定义塞满。这不仅消耗 Token(直接经济成本),更会稀释 Agent 的推理质量:当 12,000 个工具 Schema 塞进上下文,Agent 花在甄别「该用哪个」上的注意力远超「该做什么」。
Weavz 的 Code Mode 提供了一种截然不同的思路:用 3 个元工具替代 12,000 个独立工具定义。
工具 Schema 膨胀:MCP 生态的阿喀琉斯之踵
MCP 的设计哲学是「给 Agent 一把瑞士军刀」——每个功能对应一个独立工具,Agent 按需调用。但当这把刀展开后有 12,000 个刀片,Agent 反而不知道抓哪个。
实际场景中,每次 Agent 与 MCP 服务器握手时,服务器会发送完整的工具 Schema 列表。如果这个列表包含数百甚至数千条定义(结构化的名称、描述、参数 Schema),Agent 必须在每次推理时「读完」整张菜单才能点菜。Token 消耗与工具数量成正比,而工具越多,Agent 选择的正确率反而下降。这主要是因为 Large Tool-Schema Lists 会挤占上下文窗口——无关的工具定义越多,Agent 在关键推理上的注意力就越少。
这个问题在 MCP 集成数量增长的今天尤为突出。一个企业级 AI Agent 可能需要同时访问 Slack(数百个频道和动作)、GitHub(几十个 API 端点)、Notion(数据库和页面操作)、Google Sheets(读写数据)、Jira(任务和项目操作)等集成。每个集成都暴露十几到上百个工具定义,累积起来轻松破千。
Weavz Code Mode:三工具范式
Weavz 本身是一个「托管应用访问层」(Governed App Access Layer),为 AI Agent 提供 SaaS 集成、身份管理、审批流和持久化存储。其核心产品之一是 MCP 服务器——让 Agent 通过标准 MCP 协议调用 1,000+ 集成和 12,000+ 动作。
但 Weavz 的 Code Mode 实现了与传统 MCP 「工具枚举」模式完全不同的架构:
Tool Mode vs Code Mode
Tool Mode 是标准的 MCP 模式:每个集成动作都暴露为一个独立工具,Agent 需要从大量工具定义中选择。优点是结构清晰、可预测性强,但随着集成数量的增长,Tool Mode 的 Schema 列表会急速膨胀。
Code Mode 则将所有工具定义压缩为 3 个元工具:
- Search——Agent 搜索可用的集成和动作,返回结构化的 API 描述
- Read——Agent 读取特定 API 的完整文档(含参数 Schema、返回值格式、认证要求)
- Execute——Agent 编写 JavaScript 代码,动态组合多步工作流并执行
Agent 不再需要提前加载所有工具定义,而是「按需发现、按需调用」。需要操作 Slack 时先 Search 找到 Slack 的相关动作,Read 确认参数格式,然后 Execute JavaScript 代码完成发送消息/读取频道/搜索历史等操作。
上下文效率对比
从 Token 消耗角度看,Code Mode 的优势非常直观:Code Mode 只加载 3 个元工具的定义(约 2K Token),然后按需通过 Search + Read 加载具体集成描述。相比之下,Tool Mode 需要加载完整的工具 Schema 列表——如果连接了 Slack、GitHub、Notion、Google Sheets 四个集成,Schema 定义轻松上万,Token 消耗差距可达数十倍。
快速上手:用 Weavz CLI 体验 Code Mode
Weavz 提供了完整的 CLI、SDK 和 Dashboard,上手成本极低。
1. 安装 CLI
brew install weavz/tap/weavz curl -fsSL https://get.weavz.io/cli | sh npx -y @weavz-io/cli login
2. 登录并创建工作区
weavz login
CLI 会输出一个设备码和浏览器地址——打开浏览器,授权 CLI 访问你的 Weavz 账户并创建一个工作区。
3. 添加集成并配置 Code Mode
在 Weavz Dashboard 中,选择你的工作区,点击「Add Integration」:
- 选择 Slack、GitHub 等集成服务
- 设置一个可读的别名(如
customer_slack) - 选择 Tool Mode 或 Code Mode
配置完成后,Weavz 会生成一个动态的 MCP 服务器端点 URL。最简单的连接方式是使用 Claude Code 的 mcp add 命令:
claude mcp add --transport http weavz https://platform.weavz.io/mcp/weavz
或者直接配置 MCP 客户端 JSON:
{
"mcpServers": {
"weavz": {
"type": "http",
"url": "https://platform.weavz.io/mcp/weavz"
}
}
}
对于每个工作区的专属 MCP 端点,可以在 Dashboard 中创建 MCP Server 后获取动态 URL(格式如
https://platform.weavz.io/mcp/srv_xxx),或通过 REST APIPOST /api/v1/mcp/servers创建。
4. Agent 开始使用 Code Mode
一旦连接成功,Agent 不会收到 12,000 个工具定义。它只会看到 3 个元工具。当需要操作 Slack 时,Agent 自动触发以下流程:
- Search → 找到 Slack 频道列表和消息发送动作
- Read → 查看消息发送动作的输入参数 Schema
- Execute → 编写 JavaScript 代码调用 Slack API 发送消息
整个过程中,未被用到的 GitHub、Notion、Google Sheets 等集成的工具定义完全不占用上下文。
Human Gates:安全托底
Code Mode 解决了工具膨胀问题,但也引入了新的担忧:Agent 动态执行代码是否安全?
Weavz 的 Human Gates(人工审批门) 为此提供了安全托底。你可以配置特定的敏感操作需要人工审批——Agent 发起执行请求后不会立即执行,而是等待审批者通过 Web 或移动端确认。审批门配置非常灵活:
- 按动作类型(如「所有发送消息的操作」)
- 按集成别名(如「生产环境 Slack」)
- 按参数条件(如「删除操作」)
Agent 执行流程变为:Search → Read → Propose Code → Await Approval → Execute。
适用场景
- 多集成的企业 Agent——Slack、GitHub、Jira、Notion 等同时接入时,Code Mode 的上下文效率优势最显著
- 动态集成发现——Agent 需要按需发现可用的 API 而非预配置固定工具列表
- 敏感操作的审批流程——需要 Human-in-the-Loop 的自动化场景
- 成本敏感环境——按 Token 计费的 API 模型中,减少工具定义可显著降低成本
总结
Weavz Code Mode 代表了一种 MCP 工具管理的范式转变:不是「给 Agent 更多工具」,而是「让 Agent 自己发现所需工具」。3 个元工具 + 动态代码执行的模式,在保持 Agent 能力完整性的同时,大幅减少了上下文占用和 Token 消耗。
如果你曾遇到过 Agent 在大量工具定义中「迷路」的情况,或者每月 API 费用中被工具 Schema 占据了不少比例,Weavz Code Mode 值得一试。
相关链接