2026年6月29日 2 分钟阅读

MCP 工具定义太多怎么办?Weavz Code Mode 用 3 个元工具替代 12,000 个

tinyash 0 条评论

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 个元工具:

  1. Search——Agent 搜索可用的集成和动作,返回结构化的 API 描述
  2. Read——Agent 读取特定 API 的完整文档(含参数 Schema、返回值格式、认证要求)
  3. 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 API POST /api/v1/mcp/servers 创建。

4. Agent 开始使用 Code Mode

一旦连接成功,Agent 不会收到 12,000 个工具定义。它只会看到 3 个元工具。当需要操作 Slack 时,Agent 自动触发以下流程:

  1. Search → 找到 Slack 频道列表和消息发送动作
  2. Read → 查看消息发送动作的输入参数 Schema
  3. 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 值得一试。

相关链接

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。