You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Thread an `extensions` argument through the low-level `Server.get_capabilities`
and `create_initialization_options` (mirroring `experimental`), backed by a
`Server.extensions` attribute so the streamable-HTTP `server/discover` path
advertises it too. Add an `extensions` branch to `Connection.check_capability`
(presence-of-identifier, since settings are negotiated per-extension) and let a
client advertise its own support via `Client(extensions=...)` /
`ClientSession(extensions=...)`, mirrored into `ClientCapabilities.extensions`.
Copy file name to clipboardExpand all lines: docs/migration.md
+32Lines changed: 32 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -407,6 +407,38 @@ On `ClientSession`, `call_tool` / `get_prompt` / `read_resource` still return th
407
407
408
408
For protocol 2026-07-28 over Streamable HTTP, a tool's input-schema property may carry an `x-mcp-header` annotation. When a tool the client has listed is called, each annotated argument is mirrored into an `Mcp-Param-<name>` request header (string verbatim, integer as decimal, boolean as `true`/`false`, base64-sentinel-wrapped when not header-safe; `null`/absent arguments are omitted). The argument is also left in the request body. `list_tools` caches a tool's annotations, so list a tool before calling it to enable mirroring; a tool the client never listed emits no `Mcp-Param-*` headers. Other transports ignore the annotation.
409
409
410
+
### Server extensions API (SEP-2133)
411
+
412
+
`MCPServer` now accepts opt-in extensions that bundle MCP behaviour behind a
413
+
reverse-DNS identifier and advertise it under `ServerCapabilities.extensions`
414
+
(the 2026-07-28 capability map). An extension subclasses `mcp.server.mcpserver.Extension`
415
+
and overrides only the contribution methods it needs: `tools()`/`resources()`/`methods()`
416
+
(additive) and `intercept_tool_call()` (wraps `tools/call`). Pass instances at
417
+
construction, or register later with `add_extension`:
0 commit comments