@modelcontextprotocol/client@2.2.0
MCP TypeScript SDK 发布 @modelcontextprotocol/client@2.2.0。该版本将不带 expectedIssuer 构造 ClientCredentialsProvider、PrivateKeyJwtProvider、StaticPrivateKeyJwtProvider 或 CrossAppAccessProvider 的用法标记为 @deprecated,构造时打印一次 console.warn,行为不变;fetchToken() 在 provider 的客户端信息绑定到不同授权服务器时,会在发送任何请求前抛出 AuthorizationServerMismatchError。OAuthTokensSchema 与 OAuthClientInformationSchema 接受可选 issuer 标记,auth() 每次保存时覆盖该标记。补丁修复了在已关闭连接上发送通知时产生的未处理 promise rejection(Cloudflare Workers 上表现为 unhandledrejection),以及一处类型检查问题。
Development
- First Report@modelcontextprotocol/client@2.2.0MCP TypeScript SDK Releases
- Current AssessmentMCP 客户端把授权服务器绑定纳入 SDK 层校验,说明 Agent 工具生态的互操作正从「能连上」转向「连对身份」。判断:当 MCP 被用于企业内多授权服务器场景时,凭据与 issuer 的错配是常见故障源,SDK 提前拦截可降低集成调试成本。可验证下一信号:其他语言 SDK 是否跟进相同参数与错误语义。Agent Pulse · analysis
MCP TypeScript SDK 的 client 包发布 2.2.0。变更集中在 OAuth 授权服务器绑定:构造 ClientCredentialsProvider、PrivateKeyJwtProvider、StaticPrivateKeyJwtProvider、CrossAppAccessProvider 时若不传 expectedIssuer 会被标记为 @deprecated 并打印一次 console.warn,但行为不变;fetchToken() 在 provider 的客户端信息绑定到不同授权服务器时,会在发送请求前抛出 AuthorizationServerMismatchError。OAuthTokensSchema 与 OAuthClientInformationSchema 新增可选 issuer 标记,auth() 在每次保存时覆盖它。补丁部分修复了在已关闭连接上发送通知时除返回 rejection 外还产生短暂未处理 rejection 的问题,以及一处类型检查问题。
这是把 OAuth 授权服务器身份从隐式约定变成显式参数的一步:expectedIssuer 与 issuer 标记让凭据与授权服务器的绑定可被校验,fetchToken() 在发请求前抛 AuthorizationServerMismatchError,属于 fail-fast 而非事后报错。判断:对多租户或跨环境复用同一 provider 配置的集成,这类校验会提前暴露配置错配。可验证下一信号:后续版本是否把 expectedIssuer 变为必填,或把该错误纳入文档化的错误类型列表。
MCP 客户端把授权服务器绑定纳入 SDK 层校验,说明 Agent 工具生态的互操作正从「能连上」转向「连对身份」。判断:当 MCP 被用于企业内多授权服务器场景时,凭据与 issuer 的错配是常见故障源,SDK 提前拦截可降低集成调试成本。可验证下一信号:其他语言 SDK 是否跟进相同参数与错误语义。
对使用 MCP 客户端接入企业 OAuth 的团队,升级到 2.2.0 可在配置错配时于发请求前得到明确错误,减少线上排查时间;代价是需为 provider 构造补上 expectedIssuer 并处理弃用警告。可验证下一信号:升级后是否出现 AuthorizationServerMismatchError 并据此修正配置。
若该模式被其他 MCP SDK 采纳,expectedIssuer 可能从弃用警告走向必填,授权服务器身份校验会成为客户端默认行为。可验证下一信号:后续 release note 中是否出现 expectedIssuer 必填或相关迁移指南。