背景
MCP(Model Context Protocol)把「模型怎么用外部工具」做成更标准的接入方式。接一个服务器,Agent 立刻多一批能力。
这很爽,也很快失控:工具列表一长,模型更爱乱调;权限一大,风险直接上升。
我接 MCP 时的顺序
- 先只读:搜索、读文件、查文档
- 再加本地写:写笔记、改配置
- 最后才碰高风险:删改、外发、支付、发消息
每一步都问:失败了最坏是什么?
边界做法
- 按环境拆工具集:开发机全量,生产只读
- 高危工具强制人工确认(类似 HITL)
- 给工具结果做长度截断,避免上下文爆炸
- 记录每次工具调用参数,便于回放
概念示例
Agent
├─ mcp: docs_search (只读)
├─ mcp: notes_read (只读)
├─ mcp: notes_append (写,需确认)
└─ mcp: email_send (默认关闭)
默认关闭高危工具,比事后加防火墙更简单。
踩坑
- 把 30 个工具一次全挂上,命中率下降
- 工具描述互相重叠,模型选错
- 只在开发环境验证,生产权限没拆
结论
MCP 解决的是 接入摩擦,不是 权限治理。
工具越标准,越要自己把边界画细。