在 Amazon Bedrock AgentCore Gateway 上启用 MCP 2026-07-28

2026-07-29 25 预计阅读时间: 1 分钟
来源: aws.amazon.com AI 摘要 Original link

Disclaimer: This article is an AI-assisted summary. Read it together with the original source when precision matters. The summary may omit context, version differences, or edge cases and is not official documentation.

预计阅读时间:8 分钟

MCP 2026-07-28 是该协议发布以来规模最大的一次修订:协议转向无状态运行,引入受治理的扩展体系,并强化授权机制。Amazon Bedrock AgentCore Gateway 支持通过一次 UpdateGateway 调用切换到新版本,但真正的升级工作不应止于修改版本号,还需要检查客户端状态、扩展依赖和授权边界。

无状态改变了哪些工程假设

无状态意味着服务端不能再默认依赖先前请求留下的会话上下文。对网关后面的工具和服务来说,每次调用都应携带完成操作所需的信息,例如身份、租户、请求参数以及可验证的上下文引用。

这会直接影响三类实现:

  • 把用户身份或工作流阶段只保存在进程内存中的工具。
  • 假设同一连接上的后续请求天然属于同一会话的服务。
  • 依赖隐式初始化顺序,例如必须先调用 initialize,之后的工具调用才拥有业务上下文。

迁移时可以把业务状态放入外部存储,并通过明确的标识符引用。不要把所有历史数据塞进每次请求;更稳妥的做法是传递短期、不可猜测且受权限约束的状态引用。

下面是一个简化的无状态工具请求示例。字段仅用于说明迁移方式,实际结构应以所用 MCP SDK 和工具 schema 为准:

{
  "tool": "get_order_status",
  "arguments": {
    "order_id": "ord-12345",
    "tenant_id": "tenant-a"
  },
  "context_ref": "ctx_7f31c0",
  "request_id": "req-20260728-001"
}

服务收到请求后,应根据调用者身份重新验证其是否可以访问 tenant-a 和对应订单,而不是因为客户端持有 context_ref 就直接放行。

扩展有了治理边界

新规范加入了受治理的扩展体系。它解决的核心问题不是“能不能扩展”,而是扩展如何被命名、发现、协商和演进,避免客户端与服务端依赖未经声明的私有行为。

升级前应盘点现有 MCP 集成中的非标准字段、自定义请求头和特殊工具约定。可以为每个扩展记录以下信息:

  • 扩展名称、版本和所有者。
  • 客户端与服务端分别支持哪些能力。
  • 不支持扩展时的降级行为。
  • 扩展数据是否进入日志、审计记录或授权判断。

网关启用新版本并不代表下游组件会自动兼容。若某个客户端仍依赖旧版状态语义或未治理的私有扩展,应先做兼容测试,再逐批迁移流量。

用一次 UpdateGateway 切换版本

来源信息确认 AgentCore Gateway 可以通过一次 UpdateGateway 调用启用新版本,但没有给出完整参数结构。下面可以这样实践:先让本机 AWS CLI 根据已安装的服务模型生成参数骨架,再填写网关标识和 MCP 版本。这样可以避免照搬可能已经变化的字段名。

先确认当前 CLI 是否暴露该操作:

aws bedrock-agentcore-control update-gateway help
aws bedrock-agentcore-control update-gateway \
  --generate-cli-skeleton input > update-gateway.json

打开生成的 update-gateway.json,保留服务模型要求的必填字段,并在 MCP 协议配置中指定 2026-07-28。下面的文件是假设性示例,protocolConfiguration 内的准确字段应以生成的骨架为准:

{
  "gatewayIdentifier": "gw-REPLACE_ME",
  "protocolConfiguration": {
    "mcp": {
      "supportedVersions": [
        "2026-07-28"
      ]
    }
  }
}

在执行写操作前,可让 CLI 先做客户端参数校验:

aws bedrock-agentcore-control update-gateway \
  --cli-input-json file://update-gateway.json \
  --generate-cli-skeleton output

确认字段与当前区域、CLI 版本和 Gateway 配置匹配后,发出一次更新调用:

aws bedrock-agentcore-control update-gateway \
  --cli-input-json file://update-gateway.json

如果本机 CLI 的服务模型尚未包含相关字段,应先升级 AWS CLI 或所用 SDK。不要通过手工拼接未知参数绕过模型校验。

授权强化后要重新验证什么

授权机制加固后,最容易暴露的是“认证成功就拥有全部工具权限”的旧设计。网关、MCP 服务和实际业务 API 应形成连续的授权链,而不是只在入口检查一次令牌。

建议至少覆盖这些测试:

  • 有效身份只能看到并调用被授权的工具。
  • 同一工具对不同租户、资源和参数执行细粒度检查。
  • 过期、错误受众或权限不足的凭证被明确拒绝。
  • 状态引用不能被另一用户或租户重放。
  • 扩展能力不能绕过标准工具的授权策略。
  • 拒绝事件带有请求标识并进入审计日志,但不泄露令牌和敏感参数。

上线策略

版本切换只需要一次控制面调用,兼容性验证却应分阶段完成。先在测试 Gateway 上回放真实请求样本,随后让少量客户端接入新版本,并同时观察工具错误率、授权拒绝率、延迟和下游 API 异常。

正式切换前,应确认客户端不再依赖服务端隐式状态、自定义扩展已经登记并具备降级路径、授权测试覆盖跨租户和重放场景,同时准备明确的回退配置。这样才能把一次简单的 UpdateGateway 调用,变成一次可控的协议升级。


相关推荐