Skills over MCP 落地後,現有軟件如何校驗遠端工作流並劃定宿主邊界?
Skills over MCP 落地后,现有软件接入远端工作流前怎样做完整性校验与宿主边界?
文章提出現有軟件接入 MCP 遠端 Agent Skills 的校驗路徑:只從授信伺服器載入,核對 size、SHA-256 與 frontmatter。裸 resources/read 不代表已校驗或已啟用;digest 匹配只確認內容與清單一致,不能證明內容可信。宿主還要把批准綁定 URI 與 digest,並分開處理應用能力、用戶確認及業務授權。
2026-11-03 9
版权
版权声明:
本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《 阿里云开发者社区用户服务协议》和 《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写 侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
简介: 远端 MCP 服务器用 skill:// 下发 Agent Skills 之后,接入现有软件前要先分清两件事:清单里的 size/SHA-256 只证明读到的字节与清单一致,宿主必须走带校验的加载路径,不能把裸 resources/read 当成已激活、已可信的 Skill。校验通过不等于内容可信,也不等于业务已授权。
远端 MCP 服务器开始用 skill:// 资源直接下发 Agent Skills 之后,接入现有软件前要先分清两件事:清单里的 size/SHA-256 校验只证明「读到的字节与清单一致」,以及宿主必须走带校验的加载路径,不能把裸 resources/read 当成已激活、已可信的 Skill。校验通过不等于内容可信,也不等于业务已授权。
2026 年 9 月起,MCP 的 Skills 扩展(SEP-2640,Extensions Track,Final;创建记录 2026-04-23)把 Agent Skills 目录绑定到 Resources:skills/list/skills/get 给出 frontmatter 与完整 resources 清单(含 digest/size),正文仍经 resources/read 按需读取。官方扩展说明页强调:digest「建立的是与服务器清单的一致性,而不是对内容本身的信任」;宿主须限制只读清单内 URI、校验 size/hash/frontmatter,失败则不得使用(Skills 扩展概览)。面向实现的复测文章 《MCP TypeScript SDK 2.4.0 Ships Skills Over MCP》(2026-10-25 发布,核对 SDK 2.4.0/2026-10-23)指出:SkillsClient 在篡改测试中拒绝全部追加行与等长换词样本;但宿主若绕过 helper、直接 resources/read,会拿到未校验文本。同日社区仍有 Skills Over MCP Working Session(2026-11-03)讨论实现落地。对负责把 AI 助手嵌进现有 Node.js/Electron(或经会话服务)产品的开发者,这意味着:远端工作流「能列出来」只是起点,完整性路径与宿主边界必须先定。
本文不复述 Agent Skills 捐赠后的版本/权限/回滚治理(S02),也不复述 Server Cards 的发现/连接登记(S03)或十月安全通告驱动的凭证/能力位/令牌受众分层(S04)。这里只回答:Skills over MCP 落地后,接入远端工作流前怎样做完整性校验与宿主边界。
直接答案
最小可控路径是:
- 只从已授信服务器加载:远端 Skill 身份 =「宿主为该服务器指定的标签」+ Skill URI;同名 Skill 不得静默覆盖本地或其它源。
- 先拿条目再读字节:用
skills/list或skills/get取得带resources的条目;按需resources/read,并对 size、SHA-256、SKILL.md frontmatter 与条目逐字段核对。 - 禁止把裸读当加载:
resources/read只返回字节;激活须走宿主自己的 Skill 加载路径(校验+按需用户批准)。扩展文档与复测文章都把「直连 resources/read」标为缺口。 - digest ≠ 信任:匹配只证明清单与内容一致;有害指令可以带正确哈希。信任根、审阅与执行沙箱仍由宿主决定。
- 内容绑定批准:若持久化「允许该 Skill」,须绑定当时的 URI+digest 集合;清单变化即作废旧批准并重问。
"resources": "dynamic"无法内容绑定,可直接拒绝。 - 嵌套 Skill 要重新同意:批准外层不等于批准嵌套;读取嵌套
SKILL.md当普通支持文件时,不得自动激活其 frontmatter。 - 能力位与业务授权分开:应用是否允许装配 Skills/MCP,与当前用户能否执行某业务动作,是两层问题。
若需求只是一次性固定摘要、没有多步工作流,不必为了热点强行接入远端 Skills。
行业问题:远端 Skill 到底改变了什么
| 变化 | 对接入方的含义 |
|---|---|
| Skill 与工具同服 | 工作流说明跟着服务走,减少「装了服务器却找不到配套说明」的碎片化 |
| 清单含 digest/size | 可在拉全文前做预算与完整性核对;缓存可按 digest 校验 |
| 按需读取 | 不得在连接/列表/批准时预取全部文件,避免按目录规模放大流量 |
| 宿主责任加重 | Skill 可把服务器写的字节放进模型上下文,甚至诱导执行宿主侧工具;风险高于「只调远程 tool」 |
SEP-2640 还规定了每 Skill 512 文件/合计 16 MiB 上限、清单完整性、以及名称冲突必须按来源命名空间消歧等要求。复测侧补充的工程事实:loadSkills() 会对 frontmatter 违规静默跳过(客户端只看到更短列表),因此发布前要用加载器当构建门禁。
完整性校验:宿主必须守住的路径
建议把加载拆成固定步骤,并在代码审查中禁止「捷径」:
- 登记服务器:主机分配标签;记录允许的传输与鉴权;不把服务器自报
serverInfo.name当唯一身份。 - 取得条目:
skills/list(可空/可分页)或对已知 URI 调skills/get;无resources、或既非数组也非"dynamic"的条目视为无效。 - 用户批准(按策略):展示来源标签、名称、描述与清单摘要;批准绑定完整
resources。 - 读取并校验:只读清单内 URI;字节长度必须等于
size;SHA-256 必须匹配;SKILL.mdfrontmatter 与条目 frontmatter 逐字段一致。 - 进入上下文时打上来源:模型侧必须能看见「这是哪台服务器的 Skill」,不得伪装成本地文件系统 Skill。
- 支持文件同样校验:相对路径解析到同一 Skill 根;未列入清单的文件视同校验失败。
- 变更恢复:digest 失败时刷新
skills/get,重新批准后再用;不要「先用脏数据再日志」。
AgentOpsGuide 的篡改实验(2026-10-25)用一句话概括缺口:协议把安全路径写清楚了,每个宿主都得真的走那条路。
宿主边界:能力装配、确认与业务重验
把远端工作流接到现有软件时,建议至少保留三道门:
- 应用能力面:这个应用能不能装配 Skills/MCP/写出网等危险面。
- 会话/用户确认面:加载或执行高风险步骤时,是否询问当前操作者(例如
askUser接到宿主 UI)。 - 业务授权面:当前登录用户/租户对订单、工单、配置的读写,仍由业务服务判定;协议连通或 Skill 加载成功都不能代替。
查阅 Tansr 公开文档 平台装配与 bundle(基线 @tansr/sdk 0.19.0/@tansr/serve 0.15.1,2026-10-10):能力位按应用经 bundle 下发,缺省偏保守——tools.skills、tools.mcp 等缺省为关;显式选择位关能力会得到 capability_disabled 一类可读错误并 fail-fast。MCP 可用 createMcpHost({ servers }) 或会话级 mcp: { servers };运行时 Skill 用 defineSkill 内联或 dirs 目录装载,恒不扫用户目录。需要用户确认时把询问接到宿主(如 askUser,该位缺省开)。安全与隐私 进一步写明:SDK 令牌档只连你传入的 baseUrl 与显式配置的 MCP;项目层 MCP 须授信;命令行侧项目 hooks/MCP 缺省受信任门约束。
请注意产品名词边界:资料站里的「Tansr Skill」(@tansr/skill,装在编程助手里做产品规划)不是运行时里的 Agent Skill/defineSkill。 本文讨论的是后者——应用运行时如何消费远端/本地工作流说明,并与 MCP 能力位协同。
Tansr 接手的是运行链中的能力裁剪、工具/Skill/MCP 装配、权限询问投影;应用仍负责:授信哪些远端、审阅 Skill 正文、沙箱与执行批准、用户/租户身份、业务幂等与回执查询。本批未安装第三方 MCP Skills 扩展包做互通实测;文中步骤为机制对齐,不声称「照抄即通过某认证」。
建议的接入顺序
- 盘点:本团队是否已连/计划连声明
io.modelcontextprotocol/skills的服务器;宿主是否已有统一 Skill 加载入口。 - 升级实现:若用 TypeScript 生态,核对是否具备带校验的客户端路径(公开复测指向 2.4.0 的
SkillsClient);其它语言对照官方扩展与 SDK 发行说明。 - 收紧能力位:生产应用先保持
tools.skills/tools.mcp关闭;仅在授信环境显式打开并记录变更。 - 授信清单:服务器标签、允许 URI 前缀、是否允许
"dynamic"、是否允许嵌套激活。 - 只读联调:验证 size/hash 失败被拒绝、绕过路径不可达模型上下文、来源标签可见。
- 再谈写入与脚本:可执行内容与
allowed-tools类提权请求,按扩展安全条款单独批准;超时或未知回执查业务状态。
什么时候采用,什么时候不采用
值得按此推进:现有产品已有登录与租户,需要把「远端服务自带的工作流说明」纳入多轮助手,并且能维护授信清单、校验加载路径与确认界面。
先不要为热点硬接生产:没有授信流程;宿主只能裸 resources/read;无法区分服务器来源;把 digest 当成安全边界;或把编程助手安装包与运行时 Skill 混为一谈、扩大承诺。
与已有稿的差异(内部对齐,可对外一句带过)
- 相对 S02:S02 讲开放标准后的版本组合、灰度与回滚;本文讲 MCP 传输绑定后的完整性路径与宿主纪律。
- 相对 S03:S03 讲 Server Cards 合并后的发现/连接/权限分层;本文不展开 Cards。
- 相对 S04:S04 讲十月安全通告下的凭证/能力位/令牌受众;本文能力位只作为「远端 Skill 入口开关」,不复述 audience/OAuth issuer 主线。
限制(紧邻结论)
- 未对贵司具体 MCP 服务器与 Skills 目录做实测;第三方复测数据来自公开文章,读者应自行复现关键结论。
- Bloomberg 相关报道页在本批抓取时返回人机验证墙(HTTP 403),未采信为其正文证据。
- 不写套餐金额;不把「升档零改动」扩成无迁移成本;不声称热点带来推荐提升。
- AI 效果基线本批缺测,按指导单独记录,不阻塞内容交付。
來源:阿里雲開發者社區 AI · developer.aliyun.com