背景

MCP(Model Context Protocol)把「模型怎么用外部工具」做成更标准的接入方式。接一个服务器,Agent 立刻多一批能力。

这很爽,也很快失控:工具列表一长,模型更爱乱调;权限一大,风险直接上升。

我接 MCP 时的顺序

  1. 先只读:搜索、读文件、查文档
  2. 再加本地写:写笔记、改配置
  3. 最后才碰高风险:删改、外发、支付、发消息

每一步都问:失败了最坏是什么?

边界做法

  • 按环境拆工具集:开发机全量,生产只读
  • 高危工具强制人工确认(类似 HITL)
  • 给工具结果做长度截断,避免上下文爆炸
  • 记录每次工具调用参数,便于回放

概念示例

Agent
  ├─ mcp: docs_search      (只读)
  ├─ mcp: notes_read       (只读)
  ├─ mcp: notes_append     (写,需确认)
  └─ mcp: email_send       (默认关闭)

默认关闭高危工具,比事后加防火墙更简单。

踩坑

  1. 把 30 个工具一次全挂上,命中率下降
  2. 工具描述互相重叠,模型选错
  3. 只在开发环境验证,生产权限没拆

结论

MCP 解决的是 接入摩擦,不是 权限治理。
工具越标准,越要自己把边界画细。