MCP 工具目录变了,Agent 的权限为什么不能跟着自动变?

发布时间:2026/10/25 18:18:28
MCP 工具目录变了,Agent 的权限为什么不能跟着自动变? Agent 能看见一个工具不代表它有权调用。目录刷新把query_order换成了带退款参数的新 Schema如果授权仍只比较工具名原先的只读许可就可能被悄悄扩大。小团队省掉的那次复核会变成执行时没人说得清的权限。先固定审核对象MCP 2026-07-28 规范发布说明是 7 月资料不能当成十月新闻。十月接入时仍应按该版本核对客户端、SDK 与工具契约。工具目录是发现机制业务授权要另有主体、资源、动作和失效条件。官方安全建议也强调作用域收敛和代理授权风险。我的建议是把审核过的 manifest 保存为不可变快照。摘要至少覆盖工具名、描述、输入输出 Schema、风险标记及实际后端绑定序列化规则由团队固定。只对原始 JSON 算哈希会把键顺序变化误判成实质变化反过来只算名称又漏掉参数含义的改变。摘要不替代鉴权也不是协议规定的授权字段。一个本地可运行的拒绝条件下面只验证“授权绑定已审查版本”的不变量不实现 MCP 网络层。演示里的摘要直接使用受控结构序列化实际系统还需处理 Schema 规范化与后端配置。package main import (crypto/sha256; encoding/hex; encoding/json; fmt) type Manifest struct { Name string; ReadOnly bool; Backend string } func digest(m Manifest) string { b,err:json.Marshal(m);if err!nil {panic(err)};h:sha256.Sum256(b);return hex.EncodeToString(h[:]) } func allowed(reviewed string, current Manifest, userCanRead bool) bool { return userCanRead current.ReadOnly revieweddigest(current) } func main(){ m:Manifest{query_order,true,orders-v1};approved:digest(m) if !allowed(approved,m,true){panic(baseline denied)} changed:m;changed.Backendrefunds-v2 if allowed(approved,changed,true)||allowed(approved,m,false){panic(permission expanded)} fmt.Println(reviewed accepted; changed and revoked rejected) }本地 Go 1.26.5 执行go run .覆盖原版本允许、后端绑定变化拒绝、权限撤销拒绝。这个结果只证明分支行为不能证明真实凭证撤销传播速度。缓存可以旧授权不能靠猜目录缓存仍展示旧工具时调用入口应读取当前授权状态账号禁用、租户边界、资源归属、授权版本任一不匹配就拒绝。复核时记录谁批准了哪份差异而不是“今天刷新过目录”。对新增的写操作重新确认业务影响和幂等要求。发布前再做一项真实集成检查同时更新目录并撤销凭证旧客户端不得借缓存继续调用。本文没有连接外部 MCP 服务不声称完成该实验。

关于本文作者

来自尧图内容编辑团队

尧图内容编辑团队 内容团队

尧图内容编辑团队

本文由尧图网络内容编辑团队执笔。团队由资深项目经理、前端工程师与设计师组成,所有内容均来自亲手交付的真实项目,先讲清问题、再给出可落地的解法。尧图深耕北京网站建设十年,服务过京华建材集团、智造科技等各行业客户,把一线经验沉淀为可复用的行业观察。

  • 十年建站经验,覆盖建材、制造、服务、文创等
  • 项目经理把关选题与事实准确性
  • 工程师与设计师联合撰写专业细节
  • 统一编辑规范,保证文风与排版一致
  • 每月复盘转化数据,迭代选题方向

延伸阅读

相关资讯与近期热门内容

深度阅读推荐

建站决策前值得细读的三篇

网站改版的5个关键决策
2024-08-12

网站改版的5个关键决策

什么时候该改版、改到什么程度、如何避免流量掉光,京华建材集团改版复盘给出答案。

获取专属建站方案

看完文章,把您的行业与预算告诉我们,免费获取一份量身定制的官网建设方案与报价。

立即免费咨询