Releases: modelcontextprotocol/python-sdk
v1.25.0
Branching Update
Starting with this release, the repository has adopted a new branching strategy for v2 development:
main— v2 development (breaking changes)v1.x— v1 maintenance (security and critical bug fixes only, with very rare feature additions ported frommain)
Users who need to stay on v1.x should pin to mcp>=1.25,<2.
The current plan is to work through v2 and have it released some time in Q1. This also relies on the next upcoming spec release which will heavily change how the transport layer works, which in turn will guide a lot of how we architect v2.
What's Changed
- Fix for Url Elicitation issue 1768 by @gopitk in #1780
- ci: add v1.x branch to main-checks workflow by @maxisbey in #1802
New Contributors
Full Changelog: v1.24.0...v1.25.0
v1.24.0
What's Changed
- feat: client-side support for SEP-1577 sampling with tools by @jlowin in #1722
- Fix JSON-RPC error response ID matching by @crondinini-ant in #1720
- Add
streamable_http_clientwhich acceptshttpx.AsyncClientinstead ofhttpx_client_factoryby @Kludex in #1177 - fix: use correct python command name in test_stdio.py by @WOnder93 in #1782
New Contributors
Full Changelog: v1.23.3...v1.24.0
v1.23.3
What's Changed
- refactor(auth): remove unused _register_client method by @maxisbey in #1748
- feat: add workflow to comment on PRs when released by @felixweinberger in #1750
- fix: allow MIME type parameters in resource validation (RFC 2045) by @antonpk1 in #1755
- Skip empty SSE data to avoid parsing errors by @injusticescorpio in #1753
- chore: remove release-comment workflow by @maxisbey in #1758
New Contributors
- @antonpk1 made their first contribution in #1755
- @injusticescorpio made their first contribution in #1753
Full Changelog: v1.23.2...v1.23.3
v1.23.2
What's Changed
- fix: add lifespan context manager to StreamableHTTP mounting examples by @TheMailmans in #1669
- fix: handle ClosedResourceError in StreamableHTTP message router by @Edison-A-N in #1384
- fix: skip priming events and close_sse_stream for old protocol versions by @felixweinberger in #1719
New Contributors
- @TheMailmans made their first contribution in #1669
- @Edison-A-N made their first contribution in #1384
Full Changelog: v1.23.1...v1.23.2
v1.23.1
What's Changed
- chore: update LATEST_PROTOCOL_VERSION to 2025-11-25 by @felixweinberger in #1715
Full Changelog: v1.23.0...v1.23.1
v1.23.0
Summary
This release brings us up to speed with the latest MCP spec 2025-11-25. Take a look at the latest spec as well as the release blog post.
What's Changed
- Add tests for JSON Schema 2020-12 field preservation (SEP-1613) by @felixweinberger in #1649
- Add client_secret_basic authentication support by @jonshea in #1334
- Implement SEP-1577 - Sampling With Tools by @ochafik in #1594
- SEP-1330: Elicitation Enum Schema Improvements and Standards Compliance by @chughtapan in #1246
- [auth][conformance] add conformance auth client by @pcarleton in #1640
- Implement SEP-986: Tool name validation by @felixweinberger in #1655
- fix: url for spec by @felixweinberger in #1659
- feat: implement SEP-991 URL-based client ID (CIMD) support by @pcarleton in #1652
- Update doc string on custom_route by @pcarleton in #1660
- Implement SEP-1036: URL mode elicitation for secure out-of-band interactions by @cbcoutinho in #1580
- Skip empty SSE data to avoid parsing errors by @felixweinberger in #1670
- SEP-1686: Tasks by @maxisbey in #1645
- Add on_session_created callback option by @crondinini-ant in #1710
- Add SSE polling support (SEP-1699) by @felixweinberger in #1654
- Support client_credentials flow with JWT and Basic auth by @pcarleton in #1663
- feat: backwards-compatible create_message overloads for SEP-1577 by @felixweinberger in #1713
- Auto-enable DNS rebinding protection for localhost servers by @pcarleton (d3a1841)
New Contributors
Full Changelog: v1.22.0...v1.23.0
v1.22.0
What's Changed
- feat: Pass through and expose additional parameters in
ClientSessionGroup.call_tooland.connect_to_serverby @inaku-Gyan in #1576 - chore: Lazy import
jsonschemalibrary by @wuliang229 in #1596 - docs: Update examples to use stateless HTTP with JSON responses by @domdomegg in #1499
New Contributors
- @wuliang229 made their first contribution in #1596
Full Changelog: v1.21.1...v1.22.0
v1.21.2
Hotfix Release
This is a hotfix release to address a critical bug in OAuth scope handling that caused failures on 401 responses.
Related:
What's Changed
- fix get_client_metadata_scopes on 401 by @abliznyuk in #1631
New Contributors
- @abliznyuk made their first contribution in #1631
Full Changelog: v1.21.1...v1.21.2
v1.21.1
What's Changed
- Add everything-server for comprehensive MCP conformance testing by @felixweinberger in #1587
- Get baseline 100% clean coverage by @maxisbey in #1553
- Add end-of-file-fixer pre-commit hook by @maxisbey in #1610
- Add coverage baseline commit to git-blame-ignore by @maxisbey in #1613
- Add SEP-1034 conformance test support to everything-server by @felixweinberger in #1604
- refactor: extract OAuth helper functions and simplify provider state by @maxisbey in #1586
- Add client_id_metadata_document_supported to OAuthMetadata by @maxisbey in #1603
- Fix OAuth discovery fallback and URL ordering by @maxisbey in #1624
- Refactor
func_metadata()implementation by @Viicos in #1496 - Fix CI highest resolution test to actually test highest versions by @maxisbey in #1609
New Contributors
Full Changelog: v1.21.0...v1.21.1
v1.21.0
What's Changed
- docs: use article "an" before "MCP" instead of "a" by @koic in #1558
- Update Starlette to 0.49.1 in uv.lock by @ColeMurray in #1559
- Fix typo in
ClientSessionGroupdoc string by @inaku-Gyan in #1572 - Implement SEP-985: OAuth Protected Resource Metadata discovery fallback by @cbcoutinho in #1548
- Add --frozen flag to uv run commands in Claude config by @maxisbey in #1583
- Add get_server_capabilities() to ClientSession by @crondinini-ant in #1588
New Contributors
- @koic made their first contribution in #1558
- @ColeMurray made their first contribution in #1559
- @inaku-Gyan made their first contribution in #1572
- @cbcoutinho made their first contribution in #1548
- @crondinini-ant made their first contribution in #1588
Full Changelog: v1.20.0...v1.21.0