
人工智能AI Agent工具调用【免费下载链接】specificationSpecification and documentation for the Model Context Protocol项目地址https://gitcode.com/gh_mirrors/specification2/specification点击查看免费下载本指南深入解析 Model Context ProtocolMCP规范仓库中的 SEP-2577 提案——将 Roots、Sampling 与 Logging 三个核心协议特性标记为弃用的完整方案。你将理解这三个特性为何被选中、弃用期间 wire 层行为为何保持不变、schema 与文档层面的具体落地方式、能力协商与迁移规则以及最终移除后的向后兼容与安全影响并能在自己的客户端/服务端实现中据此规划迁移路径。SEP-2577 概览一次宣告而非拆除的协议瘦身SEP-2577Status:FinalStandards Track由 kurtisvg 提出针对三个核心协议特性发起弃用deprecationRootsroots/list请求与notifications/roots/list_changed通知Samplingsampling/createMessage请求以及任务扩展Tasks中的采样子能力ClientCapabilities.tasks.requests.samplingLogginglogging/setLevel请求与notifications/message通知。弃用起始于包含本 SEP 的规范版本SEP 制定时预期为 2026 年 6 月在仓库实际落地中schema 标注为 protocol version2026-07-28。这些特性在该版本发布后一年内发布的所有规范版本中继续完全可用从而为整个生态提供了一段较长的迁移窗口之后才被彻底移除。关键点在于弃用期间 wire 层行为完全不变——不删除任何类型、不改变能力协商、不破坏任何现有实现。弃用在这里是一种生态信号请停止在新功能上依赖这些特性并为其最终移除做好规划。为什么是这三个特性低采用率、语义模糊与替代方案MCP 规范追求最小化与聚焦。低采用率、与既有替代方案重叠、或实现负担与价值不成比例的特性都进入候选移除名单。SEP-2577 的动机最早在一次核心贡献者会议上提出并在 讨论 #2536 中展开原文以链接形式引用此处不展开外部内容。三个特性分别满足以下判据Roots信息性指导实际价值有限Roots 提供信息性指导告知服务端应操作哪些目录或文件但在实践中采用率低实现 roots 的客户端很少依赖它的服务端更少语义模糊规范将 roots 定义为信息性的——服务端并非必须遵守这进一步削弱了它的实用性替代方案重叠工作目录上下文完全可以通过工具参数、资源 URI、服务端配置或环境变量提供且这些方式都更加显式。Sampling概念强大实现复杂Sampling 允许服务端通过客户端请求 LLM 补全completion虽然概念上强大但长期面临采用困境实现复杂正确的 sampling 实现需要人在环审批human-in-the-loop、模型选择逻辑、安全考量以及自 SEP-1577 起工具循环支持。这种复杂度直接导致了客户端采用率低采用率低尽管该特性自 2024 年 11 月规范起就已存在但采用它的客户端寥寥无几直接替代方案需要 LLM 能力的服务端可以直接集成 LLM 提供方 API从而完全掌控模型选择、参数与流式输出。Logging与成熟基础设施重叠Logging 让服务端通过协议向客户端发送结构化日志消息但基础设施重叠标准日志机制stdio 传输下的 stderr、结构化可观测性领域的 OpenTelemetry已经成熟、被广泛采用比应用协议通道更适合做日志价值与复杂度不成比例为核心规范新增日志消息类型、严重级别和logging/setLevel请求会扩大所有客户端与服务端的实现面。规范变更总览三种层面的落地SEP-2577 的规范变更分三步在 schema 中为被弃用特性添加deprecated注解在特性文档页顶部添加弃用警告弃用期间不做任何 wire 层协议变更。Schema 变更只加注解不删类型在schema/draft/schema.ts中为下列条目添加deprecatedJSDoc 注解不删除任何类型、接口或联合成员。被弃用的能力CapabilitiesCapability位置ClientCapabilities.roots列出 roots 的客户端能力ClientCapabilities.sampling用于 LLM sampling 的客户端能力ClientCapabilities.tasks.requests.sampling任务增强的采样子能力ServerCapabilities.logging发送日志消息的服务端能力被弃用的类型 —— Roots类型描述Root表示一个根目录或文件ListRootsRequest服务端发往客户端的roots/list请求ListRootsResult包含 roots 数组的结果ListRootsResultResponseJSON-RPC 响应包装RootsListChangedNotificationroots 变化时的客户端通知被弃用的类型 —— Sampling类型描述CreateMessageRequestParamssampling/createMessage的参数CreateMessageRequest服务端发往客户端的采样请求CreateMessageResult采样请求的结果CreateMessageResultResponseJSON-RPC 响应包装SamplingMessage采样对话中的一条消息SamplingMessageContentBlock采样消息的内容块联合ToolChoice采样期间控制模型工具选择ToolUseContent采样消息中的工具使用内容块ToolResultContent采样消息中的工具结果内容块ModelPreferences服务端对模型选择的偏好ModelHint模型选择提示被弃用的类型 —— Logging类型描述LoggingLevelsyslog 严重级别枚举SetLevelRequestParamslogging/setLevel的参数SetLevelRequest客户端发往服务端的设置级别请求SetLevelResultResponseJSON-RPC 响应包装LoggingMessageNotificationParams日志消息通知的参数LoggingMessageNotification服务端发往客户端的日志消息注解格式标准 JSDocdeprecated标签每个被弃用条目都应收到带简短说明的 JSDocdeprecated标签/** * Present if the client supports listing roots. * * deprecated Deprecated as of this specification version. Will be included * in all versions released within one year, then may be removed. */ roots?: { listChanged?: boolean; };联合类型弃用期间必须保持原样以下联合类型引用了被弃用类型但弃用期间禁止修改它们将在被弃用类型真正移除时一并更新ClientNotification包含RootsListChangedNotificationClientResult包含CreateMessageResult、ListRootsResultServerRequest包含CreateMessageRequest、ListRootsRequestServerNotification包含LoggingMessageNotification文档变更在特性页顶部添加警告块在每个特性文档页标题之后添加弃用警告块。SEP 给出了三个目标文件与标准文案docs/specification/draft/client/roots.mdxWarning **Deprecated**: The Roots feature is deprecated as of this specification version. It will remain fully functional in all specification versions released within one year of the YYYY-MM-DD release. Each of those versions will continue to support it for one year after its own release. /Warningdocs/specification/draft/client/sampling.mdx同样的Warning块仅将特性名替换为 Sampling。docs/specification/draft/server/utilities/logging.mdx同样的Warning块仅将特性名替换为 Logging。仓库中的实际落地源码级验证本提案并非停留在纸面仓库中已有完整落地证据可直接对照验证Schema 注解已就位在 schema/draft/schema.ts 中大量条目已带有统一的弃用注解。例如ClientCapabilities.rootsschema/draft/schema.ts#L722-L732标注Deprecated as of protocol version 2026-07-28 (SEP-2577). Remains in the specification for at least twelve months; see the deprecated features registry.ClientCapabilities.samplingschema/draft/schema.ts#L733-L759同一文案且保留了context与tools两个子字段的声明ServerCapabilities.loggingschema/draft/schema.ts#L798-L808同一文案类型层面LoggingLevelschema/draft/schema.ts#L2075-L2083、CreateMessageRequestschema/draft/schema.ts#L2185-L2188、CreateMessageResultschema/draft/schema.ts#L2210-L2228、SamplingMessageschema/draft/schema.ts#L2245-L2249、ToolChoiceschema/draft/schema.ts#L2163-L2171、ToolUseContentschema/draft/schema.ts#L2406-L2431、ToolResultContentschema/draft/schema.ts#L2445-L2484、ModelPreferencesschema/draft/schema.ts#L2508-L2552、ModelHintschema/draft/schema.ts#L2566-L2579、ListRootsRequestschema/draft/schema.ts#L2718-L2723、ListRootsResultschema/draft/schema.ts#L2742-L2744、Rootschema/draft/schema.ts#L2758-L2775等均带deprecated标注且类型定义完整保留没有任何删除痕迹。值得注意的一个演进细节draft schema 中已看不到logging/setLevelRPC 类型老版本如schema/2025-11-25/schema.ts中仍有SetLevelRequest。在 2026-07-28 及 draft 版本中日志级别的控制已演进为请求_meta中的io.modelcontextprotocol/logLevel元字段见 schema/draft/schema.ts#L100-L110该字段同样标注了deprecated。也就是说SEP-2577 弃用的logging/setLevel机制本身在其生命周期内已先被请求级logLevel字段取代现在整个日志通道都被标记为弃用。文档警告与弃用登记表已就位docs/specification/draft/client/roots.mdx 与 docs/specification/draft/client/sampling.mdx 的顶部均已出现 Deprecated: The Roots/Sampling feature is deprecated as of protocol version ... 警告块与 SEP 规划的文档变更一致docs/specification/draft/deprecated.mdx 建立了Deprecated Features登记表按规范弃用状态管理特性生命周期并指向 社区特性生命周期文档 的过渡条款。能力协商弃用期间的行为规则弃用期间能力协商完全不变但对新旧实现有不同的期望支持被弃用特性的客户端与服务端SHOULD 继续声明对应能力遇到被弃用能力的实现MUST 仍能正确处理实现SHOULD在协商到被弃用能力时发出警告例如写入日志或开发者工具提示新实现 SHOULD NOT新增对被弃用特性的支持除非为了与既有对端保持向后兼容。时间线从弃用到移除SEP-2577 给出明确的时间线弃用在下一个规范版本SEP 制定时计划 2026 年 6 月仓库实际标注为 2026-07-28实施后续版本继续包含该版本发布后一年内发布的所有规范版本MUST继续以弃用状态包含这些特性逐版本支持每个包含这些特性的版本将按另行提案的逐版本一年支持策略在其自身发布后继续支持一年移除在该版本发布一年后发布的规范版本MAY彻底移除这些特性。这一滚动式的一年窗口设计其前提是 SEP 中假设的另一项规范版本发布后支持一年的政策落地为生态提供了足够长的缓冲期。为什么弃用而不是立即移除或迁移到扩展SEP 的 Rationale 部分回答了三个关键取舍为什么弃用而非迁往扩展机制这些特性已在大量客户端与服务端中实现。扩展机制SEP-2133规定除非提供了扩展否则实现必须表现得如同扩展不存在。把这种逻辑改造进现有 SDK——尤其是跨多个协议版本——复杂且易错。弃用后移除的路径破坏性更小实现方在过渡期可以原样继续使用待特性移除时直接停止即可为什么弃用而非立即移除虽然采用率低但这些特性仍有人在使用。立即移除会给用户、客户端/服务端所有者以及 SDK 构建者带来不必要的动荡。弃用窗口让生态按自己的节奏迁移为什么偏偏是这三个它们是在核心贡献者会议上被识别为采用率与复杂度之比最弱的特性。三者都有协议之外的可行替代方案且都不是定义 MCP 的核心资源/工具/提示交互模型所必需的。向后兼容性弃用期间不存在任何向后兼容问题所有被弃用特性继续以完全相同的方式工作不引入任何 wire 层变更。在移除之后即该版本发布一年后发布的规范版本协商到仍包含这些特性的旧协议版本的实现仍可通过该版本的 schema 访问它们协商到已移除这些特性的新协议版本的实现将无法再访问它们。安全影响净正向弃用这三个特性对安全有净正向影响Sampling是三者中安全敏感度最高的它允许服务端通过客户端请求 LLM 补全为提示注入prompt injection和数据外泄data exfiltration创造了攻击面移除它可降低此类风险Roots会向服务端暴露客户端文件系统的信息移除它降低了服务端利用 roots 信息尝试目录遍历或越界访问文件的风险Logging的安全影响最小但移除它简化了协议攻击面。弃用本身不会引入任何新的安全问题。对实现者的实操建议综合 SEP 正文与仓库现状如果你是客户端或服务端开发者当前阶段应存量实现继续声明并正确处理roots、sampling、logging能力MUST但在协商到它们时在自己的日志/工具中输出弃用警告SHOULD新实现除非必须兼容既有对端否则不要再新增对这三个特性的支持SHOULD NOT用工具参数、资源 URI、服务端配置或环境变量替代 roots 的工作目录语义用直接集成 LLM 提供方 API 替代 sampling用 stderr / OpenTelemetry 替代协议内日志通道SDK 与工具链维护者留意 schema/draft/schema.ts 中的deprecated注解与 docs/specification/draft/deprecated.mdx 登记表在类型生成、文档与 lint 工具中同步标注这些特性迁移规划利用一年窗口的滚动支持期按自己的节奏完成迁移无需急于一次性切换。SEP-2577 的参考实现一节明确说明本 SEP 不需要参考实现——它只是把既有功能标记为弃用不引入任何新的协议行为。这一点与仓库中仅注解、不删类型的落地方式完全吻合。赞分享人工智能AI Agent工具调用【免费下载链接】specificationSpecification and documentation for the Model Context Protocol项目地址https://gitcode.com/gh_mirrors/specification2/specification点击查看免费下载相关推荐MCP Python SDK 弃用功能完全指南2026-07-28 规范下 roots、sampling、logging 与 ping 的迁移路径MCP Python SDK 弃用功能完全指南2026 07 28 规范下 roots、sampling、logging 与 ping 的迁移路径 本文围绕人工智能MCP 服务MCP ClientsMCP Python SDK 弃用特性迁移指南2026-07-28 规范下 roots、sampling、logging、ping、progress 的完整替代方案MCP Python SDK 弃用特性迁移指南2026 07 28 规范下 roots、sampling、logging、ping、progress 的完整替人工智能MCP 服务MCP ClientsPython MCP SDK 废弃特性全解2026-07-28 规范下的 roots、sampling、logging、ping 与 progress 迁移指南Python MCP SDK 废弃特性全解2026 07 28 规范下的 roots、sampling、logging、ping 与 progress 迁移指人工智能MCP 服务MCP Clients上一篇5个实用技巧使用Atlas管理大规模数据库分片架构下一篇版本约束调试技巧gh_mirrors/ve/version问题定位指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考