
I tried enabling MCP 2026-07-28 in Amazon Bedrock AgentCore Gateway
This page has been translated by machine translation. View original
Introduction
On July 28, 2026, the new MCP specification 2026-07-28 was published. The initialize handshake and Mcp-Session-Id have been deprecated, and the design has become stateless, with each request declaring its protocol version and client information via _meta.
On the same day, AWS also published a blog post announcing that AgentCore Gateway now supports this 2026-07-28 specification.
I verified the new specification's responses using a newly created Gateway for testing.
Verification Details
Test Environment
- Gateway: Newly created with minimal configuration, authentication method set to
AWS_IAM - MCP Target: An MCP server implemented for testing (AWS Lambda Function URL)
Before and After Updating supportedVersions
When checking with get-gateway, the following two versions were listed before the update.
{ "mcp": { "supportedVersions": ["2025-03-26", "2025-11-25"] } }
After adding 2026-07-28, all three versions appeared side by side.
{ "mcp": { "supportedVersions": ["2025-03-26", "2025-11-25", "2026-07-28"] } }
Adding 2026-07-28 via UpdateGateway
UpdateGateway replaces supportedVersions with the specified values. Therefore, I enumerated the existing two versions as well and added 2026-07-28.
aws bedrock-agentcore-control update-gateway \
--gateway-identifier "<GATEWAY_ID>" \
--name "<GATEWAY_NAME>" \
--role-arn "<GATEWAY_ROLE_ARN>" \
--protocol-type MCP \
--protocol-configuration '{
"mcp": {
"supportedVersions": ["2025-03-26", "2025-11-25", "2026-07-28"]
}
}' \
--authorizer-type AWS_IAM
Running tools/list with 2026-07-28 Without a Session
To verify stateless invocation, I sent tools/list as the first request. I did not execute initialize and did not include Mcp-Session-Id.
For <GATEWAY_URL>, I specified the Gateway URL returned by get-gateway (ending in /mcp).
The Mcp-Method header is used to identify the method without parsing the JSON-RPC body. It is required in 2026-07-28. For tools/call, Mcp-Name indicating the tool name is also required, but it is not needed for tools/list.
Client information and capabilities are passed via _meta in each request.
POST <GATEWAY_URL>
Content-Type: application/json
MCP-Protocol-Version: 2026-07-28
Mcp-Method: tools/list
{
"jsonrpc": "2.0",
"id": "new-tools-list",
"method": "tools/list",
"params": {
"_meta": {
"io.modelcontextprotocol/protocolVersion": "2026-07-28",
"io.modelcontextprotocol/clientInfo": {
"name": "<CLIENT_NAME>",
"version": "<CLIENT_VERSION>"
},
"io.modelcontextprotocol/clientCapabilities": {}
}
}
}
The HTTP status was 200 and I was able to retrieve the tool list. The following is an excerpt from the response.
{
"result": {
"tools": [{ "name": "<TARGET_NAME>___<TOOL_NAME>", "inputSchema": { "type": "object" } }],
"resultType": "complete",
"ttlMs": 0,
"cacheScope": "private"
}
}
resultType indicates whether the response is complete; it becomes input_required when the server requests additional input. ttlMs and cacheScope are fields indicating the expiration time and scope when the client caches the list results.
Response from 2025-11-25 and Omitted Header After the Update
After adding the new version, I ran tools/call with 2025-11-25, and the HTTP status was 200 with isError set to false.
When I sent tools/list without the MCP-Protocol-Version header, it also returned 200 with the tool list. The response did not include resultType, ttlMs, or cacheScope, so it was not possible to determine which version was selected from the response alone. The AWS blog explains that requests omitting the header are treated as the default version 2025-03-26.
Response for Unsupported Versions
When I specified the unsupported version 2099-01-01, the HTTP status was 400 and error.code was -32022. The response was as follows.
{
"jsonrpc": "2.0",
"id": "unsupported-version",
"error": {
"code": -32022,
"message": "Unsupported protocol version: 2099-01-01",
"data": {
"requested": "2099-01-01",
"supported": ["2025-03-26", "2025-11-25", "2026-07-28"]
}
}
}
Summary
AgentCore Gateway allows old and new versions to coexist, enabling gradual migration of older clients to the new version. In fact, tools/call with 2025-11-25 continued to succeed even after adding the new version.
The official MCP blog explains that the stateless design allows MCP servers to scale on standard HTTP infrastructure. For workloads where fluctuating load has been a challenge, migrating to 2026-07-28 is a viable option. Enabling it requires only a single UpdateGateway call, so please give it a try.
Reference Links
- Amazon Bedrock AgentCore Developer Guide "List available tools in an AgentCore gateway"
- Amazon Bedrock AgentCore Control Plane API Reference "MCPGatewayConfiguration"

