12 MCP、Tool Calling 与工具治理
章节目标
理解 MCP 和 Tool Calling 在企业 AI 系统中的作用,并学会设计工具权限、审计、失败处理和执行边界。
为什么重要
Agent 真正进入业务流程,必须调用外部工具:查订单、读库存、发消息、创建工单、发起审批。工具调用让 AI 具备行动能力,也带来权限、审计和执行风险。
开篇案例:一次“自动创建工单”的事故
某团队让客服 Agent 在判断问题复杂时自动创建工单。上线第一天,用户重复提交同一问题,Agent 也重复创建了多张工单;更糟的是,工具没有幂等键,客服系统把它们都当成新任务。最后人工花了半天合并和关闭重复工单。
这个问题不是模型输出错了,而是工具治理没做好:执行型工具缺少审批、幂等、去重、回滚和审计。Tool Calling 让 AI 有行动能力,也意味着 FDE 必须像设计生产 API 一样设计工具边界。
工具类型
| 类型 | 示例 | 风险控制 |
|---|---|---|
| 查询型 | 查订单、查库存、查制度 | 权限过滤、审计日志 |
| 建议型 | 生成建议、风险解释 | 引用依据、置信度、人审 |
| 执行型 | 创建工单、发消息、改状态 | 审批、二次确认、幂等、回滚 |
MCP 的价值
MCP 提供一种标准方式,把文件、数据库、业务系统和外部服务开放给 Agent。它减少碎片化工具适配,也让工具描述、参数和调用过程更容易治理。
工具描述要求
每个工具要写清:
- 工具名称。
- 用途。
- 输入参数。
- 输出结构。
- 权限要求。
- 失败处理。
- 测试样例。
- 是否允许执行写操作。
工具网关
生产环境建议通过 MCP Gateway 或 Tool Gateway 统一管理:
- 工具注册。
- 参数校验。
- 权限判断。
- 调用日志。
- 速率限制。
- 风险标记。
- 版本管理。
工具 Schema 示例
{
"name": "create_support_ticket",
"description": "创建售后工单草稿,必须由坐席确认后提交",
"input_schema": {
"type": "object",
"required": ["customer_id", "issue_type", "summary", "idempotency_key"],
"properties": {
"customer_id": { "type": "string" },
"issue_type": { "type": "string", "enum": ["refund", "repair", "complaint", "other"] },
"summary": { "type": "string" },
"idempotency_key": { "type": "string" }
}
},
"risk_level": "high",
"requires_approval": true
}
注意这里写的是“创建草稿”,不是“直接提交”。工具名称、描述和参数本身就是风险控制的一部分。
工具上线前的五问
- 这个工具是查询、建议还是执行?
- 用户是否有权调用它,数据是否需要行级过滤?
- 重复调用会不会产生副作用?
- 调用失败后是否能回滚或补偿?
- 审计日志能否追踪 trace、用户、参数摘要和结果?
这五个问题没有答案,就不要把工具交给 Agent。
实操任务
为你的 PoC 设计 3-5 个工具:
- 至少 1 个查询型工具。
- 至少 1 个建议型工具。
- 如有执行型工具,必须设计审批和回滚。
交付物
- 工具清单。
- 工具参数 Schema。
- 工具权限矩阵。
- 工具失败处理表。
常见误区
- 让模型自由拼 SQL。
- 工具描述含糊,参数不结构化。
- 执行型工具没有幂等和回滚。
- 没有记录 tool_calls。
检查清单
- 是否区分查询、建议和执行?
- 是否所有工具都有权限校验?
- 是否记录工具调用日志?
- 是否能禁用高风险工具?