MCP 协议合约
了解实现模型上下文协议 (MCP) 的要求,以便代理可以调用工具和代理服务器。
有关示例代码,请参阅在 AgentCore 运行时部署 MCP 服务器。
协议实施要求
您的 MCP 服务器必须实现以下特定的协议要求:
-
运 Streamable-http 输:需要运输。默认情况下,为了与的会话管理和负载平衡兼容 AWS,请使用无状态模式 (
stateless_http=True)。 -
会话管理:平台会自动添加
Mcp-Session-Id标头以进行会话隔离。在无状态模式下,服务器必须支持无状态操作,以免拒绝平台生成的Mcp-Session-Id标头。
提示
Amazon Bedrock AgentCore 还支持有状态的 MCP 服务器 (stateless_http=False),这些服务器支持引发(多回合用户交互)和采样(内容)等功能。LLM-generated 当您的 MCP 服务器需要在同一个工具调用中跨多个请求维护会话上下文时,需要状态模式。有关更多信息和示例,请参阅有状态 MCP 服务器功能。
MCP 会话管理和 microVM 粘性
模型上下文协议 (MCP) 使用标Mcp-Session-Id头来管理会话状态和路由请求。有关 MCP 规范,请参阅 MCP 可流式传输 HTTP 传输
microVM 粘性:Amazon Bedrock AgentCore 使用Mcp-Session-Id标头将请求路由到同一 microVM 实例。客户端必须捕获响应中Mcp-Session-Id返回的内容,并将其包含在所有后续请求中,以确保会话亲和性。如果没有一致的会话 ID,则每个请求都可能被路由到新的 microVM,这可能会因为冷启动而导致额外的延迟。
无状态 MCP (stateless_http=True):
-
平台生成,
Mcp-Session-Id并将其包含在对您的 MCP 服务器的请求中。 -
您的 MCP 服务器必须接受平台提供的会话 ID(请勿拒绝)。
-
平台在响应中
Mcp-Session-Id向客户端返回相同的内容。 -
客户端必须在所有后续的 microVM 关联请求中包含此会话 ID。
有状态 MCP ()stateless_http=False:
-
客户端发送不带
Mcp-Session-Id标头的初始化请求。 -
平台在响应
Mcp-Session-Id中返回。 -
客户端必须将其包含
Mcp-Session-Id在所有后续的会话状态和 microVM 关联请求中。
有关有状态 MCP 会话管理的更多详细信息,请参阅 MCP 会话
注意
在这两种模式下,Amazon Bedrock AgentCore 总是会向客户返回Mcp-Session-Id标题。请务必捕获并重复使用此标头以获得最佳性能。
容器要求
您的 MCP 服务器必须部署为符合以下规范的容器化应用程序:
-
主机:
0.0.0.0 -
端口:
8000-用于 MCP 服务器通信的标准端口(与 HTTP 协议不同) -
平台:ARM64 容器-需要与 AWS 亚马逊 Bedrock AgentCore 运行时环境兼容
路径要求
/mcp-POST
目的
接收 MCP RPC 消息并通过代理的工具功能进行处理,使用标准 MCP RPC 消息完成 InvokeAgentRuntimeAPI 有效负载的传递
响应格式
JSON-RPC 基于 request/response 格式,同时支持application/json和text/event-stream作为响应内容类型
使用案例
该/mcp端点有几个关键用途:
-
工具调用和管理
-
代理能力发现
-
资源访问和操纵
-
Multi-step 代理工作流程
OAuth 身份验证响应
OAuth-configured 代理遵守 RFC 6749 (OAuth 2.0
401 未经授权
当授权标头缺失或为空时返回。
响应包括 WWW-Authenticate 标题:
WWW-Authenticate: Bearer resource_metadata="https://bedrock-agentcore.{region}.amazonaws.com/runtimes/{ESCAPED_ARN}/invocations/.well-known/oauth-protected-resource?qualifier={QUALIFIER}"
注意
SigV4-configured 代理返回 HTTP 403 并ACCESS_DENIED显示错误,并且不包含WWW-Authenticate标头。