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
{{ message }}
Repository navigation
Commit e15d722
Browse filesBrowse the repository at this point in the historyBrowse files
One superset type set in mcp.types plus per-version packages that define
only what changed against the previous version and re-export the rest;
serialization validates dumps through the negotiated version's models.
Copy file name to clipboardExpand all lines: docs/migration.md
+16-3Lines changed: 16 additions & 3 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1166,11 +1166,18 @@ In practice, replace direct `ServerSession` use with `Server.run(read_stream, wr
1166
1166
1167
1167
`BaseSession` is still used by `ClientSession`, which never relied on these members. `RequestResponder.respond()` is unchanged.
1168
1168
1169
-
### Experimental Tasks support removed
1169
+
### Experimental Tasks support removed (types restored, types-only)
1170
1170
1171
-
Tasks (SEP-1686) have been removed from the MCP specification and are no longer part of this SDK. The `mcp.client.experimental`, `mcp.server.experimental`, `mcp.shared.experimental`, and `mcp.server.lowlevel.experimental` modules have been removed, along with all `Task*` types, the `tasks` capability fields, `Tool.execution`, and the `experimental` properties on `ClientSession`, `ServerSession`, `Server`, and `ServerRequestContext`.
1171
+
Tasks (SEP-1686) runtime support has been removed from this SDK. The `mcp.client.experimental`, `mcp.server.experimental`, `mcp.shared.experimental`, and `mcp.server.lowlevel.experimental` modules are gone, along with the `experimental` properties on `ClientSession`, `ServerSession`, `Server`, and `ServerRequestContext`.
1172
1172
1173
-
Tasks are expected to return as a separate MCP extension in a future release.
1173
+
The 2025-11-25 protocol *types* are back in `mcp.types` so that 2025-11-25 task payloads can still be modeled: the `Task*` types, the `tasks` capability subtrees, `Tool.execution`, and the `task` field on the four task-augmentable params classes. They are types-only definitions:
1174
+
1175
+
- Attributes are snake_case (`task_id`, `created_at`), aliased to the camelCase wire names.
1176
+
- Timestamps are plain `str` values, not `datetime`.
1177
+
-`GetTaskPayloadResult` follows the default extra-field policy (`ignore`), so it retains only `_meta`; validate a tasks/result payload into the original request's result type instead.
1178
+
- None of the task methods is a member of the request/notification unions, and `add_request_handler` does not dispatch them.
1179
+
1180
+
Tasks runtime support is expected to return as a separate MCP extension in a future release.
1174
1181
1175
1182
## Deprecations
1176
1183
@@ -1214,6 +1221,12 @@ If you relied on extra fields round-tripping through MCP types, move that data i
1214
1221
1215
1222
## New Features
1216
1223
1224
+
### Newer protocol fields are modeled and retained
1225
+
1226
+
`mcp.types` now models the 2025-11-25 and 2026-07-28 protocol fields and types (for example `resultType`, `ttlMs`/`cacheScope` on the cacheable results, and `inputResponses`/`requestState` on retried requests). Inbound payloads carrying these keys used to lose them to the unknown-field policy on re-dump; they now parse into typed fields and survive a user-level round-trip. All of the new fields are optional with `None` defaults, so dumps of values that do not set them are unchanged.
1227
+
1228
+
`CallToolResult.structured_content` and `ToolResultContent.structured_content` now accept any JSON value, where previous releases required an object: 2026-07-28 allows scalar and array structured content. Parsing is strictly more lenient, and emitted bytes for object values are unchanged.
1229
+
1217
1230
### `streamable_http_app()` available on lowlevel Server
1218
1231
1219
1232
The `streamable_http_app()` method is now available directly on the lowlevel `Server` class, not just `MCPServer`. This allows using the streamable HTTP transport without the MCPServer wrapper.
0 commit comments