AGENT PULSESJCPal Special EditionAI Industry Evidence & Trends
Sep 28, 2026 · @modelcontextprotocol/core

@modelcontextprotocol/core@2.2.0

What Happened

MCP TypeScript SDK 发布 @modelcontextprotocol/core@2.2.0。该版本将不带 expectedIssuer 构造 ClientCredentialsProvider、PrivateKeyJwtProvider、StaticPrivateKeyJwtProvider 或 CrossAppAccessProvider 的调用签名标记为 @deprecated,构造时会输出一次 console.warn,行为其余不变。fetchToken() 在发送任何请求前,若 provider 的客户端信息绑定到与调用时不同的授权服务器,会抛出 AuthorizationServerMismatchError。OAuthTokensSchema 与 OAuthClientInformationSchema 接受可选的 issuer 标记,auth() 在每次保存时覆盖该标记。

EVENT STORY

Development

  1. First Report@modelcontextprotocol/core@2.2.0MCP TypeScript SDK Releases
  2. Current AssessmentMCP 生态正从「能连上工具」走向「多租户、多授权服务器下的凭据治理」,OAuth 绑定校验被下沉到 SDK 核心层,意味着协议实现方开始为跨应用访问这类企业场景补齐安全边界。判断:这会抬高第三方 MCP 客户端与服务端的合规实现门槛,但降低集成方各自造校验逻辑的重复成本。可验证下一信号:其他语言 SDK 是否跟进同样的 issuer 字段与错误类型。Agent Pulse · analysis
What Changed

MCP TypeScript SDK 的 core 包发布 2.2.0,改动集中在 OAuth 凭据与授权服务器绑定关系上:构造四类 provider 时若不传 expectedIssuer 会触发一次 console.warn 并被标记为 @deprecated,但行为不变;fetchToken() 在发现 provider 的客户端信息绑定到不同授权服务器时,会在发出请求前直接抛出 AuthorizationServerMismatchError;OAuthTokensSchema 与 OAuthClientInformationSchema 新增可选 issuer 字段,auth() 每次保存都会覆盖它。整体属于弃用提示加前置校验的兼容性小版本。

How the Capability Boundary Shifted

这是把「凭据属于哪个授权服务器」从隐式约定变成显式字段的迁移动作:issuer 进入 schema 并由 auth() 每次保存覆盖,说明存储层被当作可信来源,而 fetchToken() 的前置抛错把错误从远端失败提前到本地校验。对已有多授权服务器部署,升级后需确认 provider 构造处传入 expectedIssuer,否则只会看到一次 warn 而非硬失败,容易漏改。可验证下一信号:后续版本是否把该参数从 deprecated 变为必填或直接移除旧签名。

Why It Matters

MCP 生态正从「能连上工具」走向「多租户、多授权服务器下的凭据治理」,OAuth 绑定校验被下沉到 SDK 核心层,意味着协议实现方开始为跨应用访问这类企业场景补齐安全边界。判断:这会抬高第三方 MCP 客户端与服务端的合规实现门槛,但降低集成方各自造校验逻辑的重复成本。可验证下一信号:其他语言 SDK 是否跟进同样的 issuer 字段与错误类型。

Who It Affects

对使用 MCP 连接企业身份体系的一方,升级后可减少凭据被错误授权服务器接受的风险,并让配置问题在调用前暴露,降低排障成本。但迁移需要逐个检查 provider 构造点,短期有改造成本。可验证下一信号:官方文档或迁移指南是否给出 expectedIssuer 的填写示例。

What to Watch Next

若 issuer 校验在生态内被普遍采纳,跨授权服务器的凭据误用将从运行时故障转为可预期的显式错误,配置错误更早暴露。观察点:该 deprecated 签名在后续小版本中是否被移除,以及其他 MCP SDK 是否引入同名错误类型。