MCP 工具调用护栏实践

Background-Job-862 · reddit · 2026-07-16

作者复盘了一次“几乎执行破坏性数据库查询”的 MCP 工具调用事故:代理在歧义指令下构造了可能 `drop table` 的调用,虽然最终被权限检查拦下,但这更多是运气而非设计。 文章将护栏分成两类: - **Pre-tool checks**:在请求到达 MCP server 前,检查参数是否不仅“schema 合法”,还是否“策略合法”,例如拦截破坏性 SQL、限制特定表/路径、扫描参数中的密钥或 PII,并做与调用者权限绑定的硬权限校验。 - **Post-tool checks**:工具返回后、结果回传给 agent/用户前,扫描是否包含不该出边界的 PII/密钥,对要展示给终端用户的内容做审核,必要时可以选择脱敏而不是完全阻断。 作者强调,真正关键的是哪些检查必须在请求路径里**同步阻断/脱敏**,哪些可以作为**异步日志/告警**跑,不要给每次调用都增加不必要的延迟。文中还提到他们在 MCP gateway 上用 Truefoundry 的 guardrails 规则链分别处理 block、redact、flag、pass,并且已经抓到过真实问题。最后作者反问:其他团队的 pre/post-tool checklist 是否已形成共识,还是仍在各自摸索。

原文链接 →