René's URL Explorer Experiment


Title: Server-side 2026-07-28 stateless support: classifier, driver split, server/discover by maxisbey · Pull Request #2928 · modelcontextprotocol/python-sdk · GitHub

Open Graph Title: Server-side 2026-07-28 stateless support: classifier, driver split, server/discover by maxisbey · Pull Request #2928 · modelcontextprotocol/python-sdk

X Title: Server-side 2026-07-28 stateless support: classifier, driver split, server/discover by maxisbey · Pull Request #2928 · modelcontextprotocol/python-sdk

Description: Implements server-side support for the 2026-07-28 stateless streamable-HTTP path, removing server-stateless from the conformance expected-failures baseline (25/25 checks pass). Part of #2891. Touches #2892, #2893, #2895, #2896. Motivation and Context The 2026-07-28 protocol revision drops the initialize handshake on streamable HTTP: each POST is self-describing (protocol version, client info, client capabilities ride in params._meta) and the server responds with a single JSON-RPC reply. Getting there cleanly meant separating "what handles a request" from "what owns the connection lifecycle" — the existing code threaded a stateless: bool flag through several layers and re-derived per-connection facts in multiple places. What changed Kernel/driver split. ServerRunner is now a pure handler kernel (server, connection, lifespan_state → on_request/on_notify). Three free-function drivers compose it with a transport: serve_one (single exchange), serve_connection (caller-supplied dispatcher), serve_loop (stream-pair convenience; what Server.run() and the stateful HTTP path now call). Connection owns per-peer state. Two factories — from_envelope for the per-request stateless path, for_loop for handshake-driven connections. protocol_version: str is non-Optional and factory-populated; the previous or "2025-11-25" fallbacks and the 17-line resolver are gone. _NoChannelOutbound makes "no back-channel" a property of the held object, not a mode flag — stateless: bool is removed from ServerRunner, ServerSession, and Server.run(). Inbound classifier. shared/inbound.py is a pure validation ladder (envelope shape → header/body match → version supported) returning a typed verdict; ERROR_CODE_HTTP_STATUS is the single code→status table the HTTP entry reads. Modern HTTP entry. _streamable_http_modern.handle_modern_request is the per-POST path: parse → classify → Connection.from_envelope → serve_one → status-mapped response. The session manager routes by header: known initialize-handshake versions go to the legacy transport; everything else (including unrecognised versions) goes to the modern entry where the classifier validates. Lifespan owned once. StreamableHTTPSessionManager.run() enters app.lifespan once at startup for both stateful and stateless modes; the stateful path now drives via serve_loop with that state instead of re-entering per session. server/discover. Auto-derived from registered handlers; a 2025 client gets METHOD_NOT_FOUND from the method/version map, not from a version check in the handler body. @mcp.tool() exception handling. MCPError (and subclasses) raised from a tool body now propagates as a top-level JSON-RPC error instead of being wrapped as isError: true content — generalising the existing special-case for UrlElicitationRequiredError. Client. The streamable-HTTP client now parses JSON-RPC error bodies on 4xx responses (so the typed error reaches the caller instead of a generic HTTP exception). How Has This Been Tested? server-stateless conformance scenario: 25/25 at the pinned harness, removed from both expected-failures baselines ./scripts/test: 100% branch coverage, strict-no-cover clean tests/shared/test_inbound.py covers the classifier exhaustively; tests/interaction/transports/test_hosting_http_modern.py pins the wire contract end to end Runtime-driven: modern + legacy paths exercised via the in-process ASGI fixture (405 verb mismatch, parse/invalid-request split, header mismatch, unsupported version, handler exception, exit-stack cleanup raise/hang) Breaking Changes All documented in docs/migration.md: Server.run() no longer takes stateless: bool StatelessModeNotSupported removed → callers catch NoBackChannelError Streamable HTTP lifespan is entered once at manager startup (was per-session/per-request) ServerSession constructor signature changed (now (request_outbound, connection)) MCPError raised from @mcp.tool() now surfaces as a protocol error (was isError: true) Types of changes New feature (non-breaking change which adds functionality) Breaking change (fix or feature that would cause existing functionality to change) Documentation update Checklist I have read the MCP Documentation My code follows the repository's style guidelines New and existing tests pass locally I have added appropriate error handling I have added or updated documentation as needed Additional context Method-existence is intentionally not a classifier rung — kernel dispatch owns that decision so custom-registered methods route and the answer lives in one place. The modern entry takes the spec's "cannot accept" branch for notification POSTs (400 + INVALID_REQUEST); the core protocol defines no client→server notifications over HTTP at this revision (cancellation is SSE-stream close). AI Disclaimer

Open Graph Description: Implements server-side support for the 2026-07-28 stateless streamable-HTTP path, removing server-stateless from the conformance expected-failures baseline (25/25 checks pass). Part of #2891. Touch...

X Description: Implements server-side support for the 2026-07-28 stateless streamable-HTTP path, removing server-stateless from the conformance expected-failures baseline (25/25 checks pass). Part of #2891. Touch...

Opengraph URL: https://github.com/modelcontextprotocol/python-sdk/pull/2928

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:90456ee0-ac98-d7ca-43ea-67231c92e7bf
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idAA10:39455D:F43420:1498CFB:6A5B6F11
html-safe-noncec145c9271239da335023f1fd12787ec7e800ba9436d7c0eb7299697bbd83f6ca
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBQTEwOjM5NDU1RDpGNDM0MjA6MTQ5OENGQjo2QTVCNkYxMSIsInZpc2l0b3JfaWQiOiI1NDMxNzc1ODkzMjc3ODYzNjk3IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0=
visitor-hmac4c8f14dc3accb1efbe0ebc4890b397aaebffec956851de9835718ff977ad1faf
hovercard-subject-tagpull_request:3904232348
github-keyboard-shortcutsrepository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot
google-site-verificationApib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I
octolytics-urlhttps://collector.github.com/github/collect
analytics-location///pull_requests/show/files
fb:app_id1401488693436528
apple-itunes-appapp-id=1477376905, app-argument=https://github.com/modelcontextprotocol/python-sdk/pull/2928/files
twitter:imagehttps://avatars.githubusercontent.com/u/224885523?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/224885523?s=400&v=4
og:image:altImplements server-side support for the 2026-07-28 stateless streamable-HTTP path, removing server-stateless from the conformance expected-failures baseline (25/25 checks pass). Part of #2891. Touch...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None5290d7e14309ad1e76106a9c4237bd1041517e83ea182c8ab756752cb0c6940b
turbo-cache-controlno-preview
diff-viewunified
go-importgithub.com/modelcontextprotocol/python-sdk git https://github.com/modelcontextprotocol/python-sdk.git
octolytics-dimension-user_id182288589
octolytics-dimension-user_loginmodelcontextprotocol
octolytics-dimension-repository_id862584018
octolytics-dimension-repository_nwomodelcontextprotocol/python-sdk
octolytics-dimension-repository_publictrue
octolytics-dimension-repository_is_forkfalse
octolytics-dimension-repository_network_root_id862584018
octolytics-dimension-repository_network_root_nwomodelcontextprotocol/python-sdk
turbo-body-classeslogged-out env-production page-responsive full-width
disable-turbotrue
browser-stats-urlhttps://api.github.com/_private/browser/stats
browser-errors-urlhttps://api.github.com/_private/browser/errors
release9c975978430e9ad293956f2bbdaf153b1bd84a99
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/modelcontextprotocol/python-sdk/pull/2928/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fmodelcontextprotocol%2Fpython-sdk%2Fpull%2F2928%2Ffiles
GitHub CopilotWrite better code with AIhttps://github.com/features/copilot
GitHub Copilot appDirect agents from issue to mergehttps://github.com/features/ai/github-app
MCP RegistryNewIntegrate external toolshttps://github.com/mcp
ActionsAutomate any workflowhttps://github.com/features/actions
CodespacesInstant dev environmentshttps://github.com/features/codespaces
IssuesPlan and track workhttps://github.com/features/issues
Code ReviewManage code changeshttps://github.com/features/code-review
GitHub Advanced SecurityFind and fix vulnerabilitieshttps://github.com/security/advanced-security
Code securitySecure your code as you buildhttps://github.com/security/advanced-security/code-security
Secret protectionStop leaks before they starthttps://github.com/security/advanced-security/secret-protection
Why GitHubhttps://github.com/why-github
Documentationhttps://docs.github.com
Bloghttps://github.blog
Changeloghttps://github.blog/changelog
Marketplacehttps://github.com/marketplace
View all featureshttps://github.com/features
Enterpriseshttps://github.com/enterprise
Small and medium teamshttps://github.com/team
Startupshttps://github.com/enterprise/startups
Nonprofitshttps://github.com/solutions/industry/nonprofits
App Modernizationhttps://github.com/solutions/use-case/app-modernization
DevSecOpshttps://github.com/solutions/use-case/devsecops
DevOpshttps://github.com/solutions/use-case/devops
CI/CDhttps://github.com/solutions/use-case/ci-cd
View all use caseshttps://github.com/solutions/use-case
Healthcarehttps://github.com/solutions/industry/healthcare
Financial serviceshttps://github.com/solutions/industry/financial-services
Manufacturinghttps://github.com/solutions/industry/manufacturing
Governmenthttps://github.com/solutions/industry/government
View all industrieshttps://github.com/solutions/industry
View all solutionshttps://github.com/solutions
AIhttps://github.com/resources/articles?topic=ai
Software Developmenthttps://github.com/resources/articles?topic=software-development
DevOpshttps://github.com/resources/articles?topic=devops
Securityhttps://github.com/resources/articles?topic=security
View all topicshttps://github.com/resources/articles
Customer storieshttps://github.com/customer-stories
Events & webinarshttps://github.com/resources/events
Ebooks & reportshttps://github.com/resources/whitepapers
Business insightshttps://github.com/solutions/executive-insights
GitHub Skillshttps://skills.github.com
Documentationhttps://docs.github.com
Customer supporthttps://support.github.com
Community forumhttps://github.com/orgs/community/discussions
Trust centerhttps://github.com/trust-center
Partnershttps://github.com/partners
View all resourceshttps://github.com/resources
GitHub SponsorsFund open source developershttps://github.com/open-source/sponsors
Security Labhttps://securitylab.github.com
Maintainer Communityhttps://maintainers.github.com
Acceleratorhttps://github.com/open-source/accelerator
GitHub Starshttps://stars.github.com
Archive Programhttps://archiveprogram.github.com
Topicshttps://github.com/topics
Trendinghttps://github.com/trending
Collectionshttps://github.com/collections
Enterprise platformAI-powered developer platformhttps://github.com/enterprise
GitHub Advanced SecurityEnterprise-grade security featureshttps://github.com/security/advanced-security
Copilot for BusinessEnterprise-grade AI featureshttps://github.com/features/copilot/copilot-business
Premium SupportEnterprise-grade 24/7 supporthttps://github.com/enterprise/premium-support
Pricinghttps://github.com/pricing
Search syntax tipshttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
documentationhttps://docs.github.com/search-github/github-code-search/understanding-github-code-search-syntax
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fmodelcontextprotocol%2Fpython-sdk%2Fpull%2F2928%2Ffiles
Sign up https://github.com/signup?ref_cta=Sign+up&ref_loc=header+logged+out&ref_page=%2F%3Cuser-name%3E%2F%3Crepo-name%3E%2Fpull_requests%2Fshow%2Ffiles&source=header-repo&source_repo=modelcontextprotocol%2Fpython-sdk
Reloadhttps://github.com/modelcontextprotocol/python-sdk/pull/2928/files
Reloadhttps://github.com/modelcontextprotocol/python-sdk/pull/2928/files
Reloadhttps://github.com/modelcontextprotocol/python-sdk/pull/2928/files
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/2928/files
modelcontextprotocol https://github.com/modelcontextprotocol
python-sdkhttps://github.com/modelcontextprotocol/python-sdk
Notifications https://github.com/login?return_to=%2Fmodelcontextprotocol%2Fpython-sdk
Fork 3.7k https://github.com/login?return_to=%2Fmodelcontextprotocol%2Fpython-sdk
Star 23.6k https://github.com/login?return_to=%2Fmodelcontextprotocol%2Fpython-sdk
Code https://github.com/modelcontextprotocol/python-sdk
Issues 259 https://github.com/modelcontextprotocol/python-sdk/issues
Pull requests 304 https://github.com/modelcontextprotocol/python-sdk/pulls
Actions https://github.com/modelcontextprotocol/python-sdk/actions
Projects https://github.com/modelcontextprotocol/python-sdk/projects
Models https://github.com/modelcontextprotocol/python-sdk/models
Security and quality 6 https://github.com/modelcontextprotocol/python-sdk/security
Insights https://github.com/modelcontextprotocol/python-sdk/pulse
Code https://github.com/modelcontextprotocol/python-sdk
Issues https://github.com/modelcontextprotocol/python-sdk/issues
Pull requests https://github.com/modelcontextprotocol/python-sdk/pulls
Actions https://github.com/modelcontextprotocol/python-sdk/actions
Projects https://github.com/modelcontextprotocol/python-sdk/projects
Models https://github.com/modelcontextprotocol/python-sdk/models
Security and quality https://github.com/modelcontextprotocol/python-sdk/security
Insights https://github.com/modelcontextprotocol/python-sdk/pulse
Sign up for GitHub https://github.com/signup?return_to=%2Fmodelcontextprotocol%2Fpython-sdk%2Fissues%2Fnew%2Fchoose
terms of servicehttps://docs.github.com/terms
privacy statementhttps://docs.github.com/privacy
Sign inhttps://github.com/login?return_to=%2Fmodelcontextprotocol%2Fpython-sdk%2Fissues%2Fnew%2Fchoose
maxisbeyhttps://github.com/maxisbey
mainhttps://github.com/modelcontextprotocol/python-sdk/tree/main
s2-server-stateless-greenhttps://github.com/modelcontextprotocol/python-sdk/tree/s2-server-stateless-green
Conversation 5 https://github.com/modelcontextprotocol/python-sdk/pull/2928
Commits 16 https://github.com/modelcontextprotocol/python-sdk/pull/2928/commits
Checks 33 https://github.com/modelcontextprotocol/python-sdk/pull/2928/checks
Files changed https://github.com/modelcontextprotocol/python-sdk/pull/2928/files
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/2928/files
Server-side 2026-07-28 stateless support: classifier, driver split, server/discover https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#top
Show all changes 16 commits https://github.com/modelcontextprotocol/python-sdk/pull/2928/files
3c2a822 S2 wave 0: conformance pin, classifier, discover handler, helpers, fi… maxisbey Jun 20, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2928/commits/3c2a822ddeee952dd39b6e568eb9ede520bb2bc7
ff6610a S2 waves 1-3: driver-split kernel + two-channel ServerSession + class… maxisbey Jun 20, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2928/commits/ff6610a83ff3e279d63f5024bf5177086e43e659
703cde1 S2 wave 4: modern entry rewrite, Server.run wrapper, test migrations maxisbey Jun 20, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2928/commits/703cde13fe4af65ffd08441b29383e7595bed5f2
1c3e8fc Client streamable-http: parse JSON-RPC errors from non-2xx response b… maxisbey Jun 20, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2928/commits/1c3e8fcca2c81a39dd113f6fe3c2dfee0ca03686
bbe0e8d Testing-standards fixes: hollow-proof, provenance docstrings, constan… maxisbey Jun 20, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2928/commits/bbe0e8d87170b9748af0047099111c313a476737
764650e Absorb #2926 (SEP-2577 deprecations); fix client 4xx id-correlation maxisbey Jun 20, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2928/commits/764650e62bdfd0cdda4b1282e24f1bf1fe7c266d
9470abf D8: move method-existence from classifier rung-4 to kernel dispatch maxisbey Jun 20, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2928/commits/9470abf9eba33ac996b19cc991f8955bd9d4d69a
7231664 Re-raise MCPError from @mcp.tool() handlers as a top-level JSON-RPC e… maxisbey Jun 20, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2928/commits/723166408694773f23ec51995223ec75624982ab
416c9d9 T3: interaction-suite additions for modern stateless entry maxisbey Jun 20, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2928/commits/416c9d9807733611e32c178eda413bec0bae01a0
e0f8ab9 T5: coverage backfill for S2-added branches maxisbey Jun 20, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2928/commits/e0f8ab9339b21e14f81990543b6b306573af2b19
4a79c32 Wave 5b polish + update tests for MCPError re-raise consequences maxisbey Jun 20, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2928/commits/4a79c32de24893e1bd25bc81ae48af23cfd7a847
078af46 Route unrecognised protocol-version headers to the modern entry; swap… maxisbey Jun 20, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2928/commits/078af460e5766a8e6084d5dfe1fb72a917b400c9
bf0dd7f Delete legacy transport's protocol-version validation (now owned by m… maxisbey Jun 20, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2928/commits/bf0dd7f8c24f6c98e574c07b4cc31ba596c87a38
2313cde C3: remove server-stateless from conformance baselines; C2: TODO-anch… maxisbey Jun 20, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2928/commits/2313cde068a8e49957177ba9541f9621a0b22f2b
d3b0977 Address review: serve_loop helper, bare 405, INVALID_REQUEST split, m… maxisbey Jun 20, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2928/commits/d3b097777c46b8236993cac5d065e90638a051fa
efa9c85 Address by-construction review: ServerSession reads standalone channe… maxisbey Jun 20, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2928/commits/efa9c8598f47df311f259600c3f298552e496a58
Clear filters https://github.com/modelcontextprotocol/python-sdk/pull/2928/files
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/2928/files
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/2928/files
expected-failures.2026-07-28.yml https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-a8ea36ef04436cd253292c3fbbe06e88795d93362fba66a5919cc6793c5f2aef
expected-failures.yml https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-9554cfe66b53ce3771454545473fbd08be68a3c6ecdd0f837273a3e41e6b67d7
migration.md https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
server.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-941c156700d335386d0fe33c0d46429e483b49dbcdc451f0e9b8cef9343cb056
streamable_http.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-e8c18a3067a9b157c5c39a947f53d395afeb00e7026dad2d5a279011da943b5e
_streamable_http_modern.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-c5e06136c127a1503b8eab18375355c38ceb7e71b5a1c04b36ebf2fbc3d9067d
connection.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-849ab2b2ff6c99a29f2b9dcdc9edc4139ffa7d091cdf45f05fbfc7cb998b03d1
server.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-b21bf5e21c058ccfddb404c209f2d4288e4f32b121111ffc9d466638631d13e4
base.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-b53a543261a9bc27476087bcb5fcf6e0d7e9d1b5b3df09e312f22b22ccffe761
runner.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-7a9c3e13faa5730f5a8a60062e9d200513c0baeada63e3cc24b37fe68e086e90
session.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-9a603a2587011a188aa76ca19a32fcd343a253516325fbcfb4f7bfb6a814634c
streamable_http.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-0119e4c1bbf2fde7ba89b9c9f5bc472ccc2332f84e96e47cf9e45cebef801da3
streamable_http_manager.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-1071ee05567116cb77322c376307b9071c6212871068ccf41911fc337ed473af
exceptions.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-78c8edd9357c34d072f24eac006407d819a6743472714abaf9a3c915d9be9d8a
inbound.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-aff932577e28e8bde4cd526480a1514700ef52c1b37cb993f27c297813efa86f
jsonrpc_dispatcher.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-3d8fb73fa8b126691302c15bb63bbc44a3a0e9338a17f14b3b4ea1d97bb10c2c
test_list_roots_callback.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-90b39d804728390ef9eab471f7f9877b35f83c44d63b99a1ea9653f6d5e11ee9
test_notification_response.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-8c7bb1142c1c9cb43b4d2e7bf265054daca89ba175deec8b690f00464c00c182
test_sampling_callback.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-2644de1d5107de80cb62cb010cb87b5858288fdd961806d4abdbc822f1d30540
_requirements.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-c12ce54cbf13a11daa3f93343e5df8c89ca2b25d0f20f00b5408a2402a223228
test_hosting_http.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-25c736951e89c76e3f06e5f6b36924f2fecb911b5bd98e4c74bf8249e8480fac
test_hosting_http_modern.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-122f8dfa74b6aa90e3cea5c8da3a5bf7829d8ea82e66caf2ab88c0e107858914
test_streamable_http.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-e1892a1b798bbf5427ad12171841966db1086dcbbbd3f6c12b4bcd76405530c7
test_server_discover.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-cdb3e450722a7944ee7a5075aea13da268ef672be1571d60c3c8af0829f21f36
test_base.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-48b6e30e08db8e94e4b71e86c8159b98e5626c10bf980975d9c492d76228ca36
test_connection.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-c85f47c7fa25e0dccd832e8de25b14888b28b4c4d65ca623c7fbffa5ed112d68
test_lowlevel_exception_handling.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-48c9f55d2b53bd2fbac81a8eb6ac25b0137eca64b92a195ed177851580687917
test_runner.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-51ad0fc280fc0fb1ed6039b7c5a26a6fafba8d8ffc8533cfa89cb9df18ea3f10
test_server_context.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-4903326ba7c3c7efdab16734810bfeae0b485942b7155c82e6ca8df7a8d5d11a
test_session.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-ed22c8fef52dc8c1d840dc0825bc375c48b67dcc2b468bab084aded3af06fdcf
test_stateless_mode.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-9a5f67580e8993a1074a9b3a4ce460932af7f64bfac3c0ed94b56c842ef99101
test_streamable_http_manager.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-ee0bac8ccf39135f1347002539cc4af38ee7e89b85595884e94fb4ab304a111d
test_streamable_http_modern.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-1e3c8aa3513b03c2ac6b7534d2b3a45dcbf59ef32f158028e9cc2fff0760893f
test_inbound.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-dc61ed941aed9d8fc148f5bb36ee60a1a12c9a308fa5cd5dcbaabcbf9de6c934
test_streamable_http.py https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-57d1f3c64af36960aa61b1d77387fb6201b90fbc2f3d606bf2761315ce618cc5
.github/actions/conformance/expected-failures.2026-07-28.ymlhttps://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-a8ea36ef04436cd253292c3fbbe06e88795d93362fba66a5919cc6793c5f2aef
View file https://github.com/modelcontextprotocol/python-sdk/blob/efa9c8598f47df311f259600c3f298552e496a58/.github/actions/conformance/expected-failures.2026-07-28.yml
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/modelcontextprotocol/python-sdk/pull/2928/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-a8ea36ef04436cd253292c3fbbe06e88795d93362fba66a5919cc6793c5f2aef
https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-a8ea36ef04436cd253292c3fbbe06e88795d93362fba66a5919cc6793c5f2aef
.github/actions/conformance/expected-failures.ymlhttps://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-9554cfe66b53ce3771454545473fbd08be68a3c6ecdd0f837273a3e41e6b67d7
View file https://github.com/modelcontextprotocol/python-sdk/blob/efa9c8598f47df311f259600c3f298552e496a58/.github/actions/conformance/expected-failures.yml
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/modelcontextprotocol/python-sdk/pull/2928/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-9554cfe66b53ce3771454545473fbd08be68a3c6ecdd0f837273a3e41e6b67d7
https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-9554cfe66b53ce3771454545473fbd08be68a3c6ecdd0f837273a3e41e6b67d7
docs/migration.mdhttps://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
View file https://github.com/modelcontextprotocol/python-sdk/blob/efa9c8598f47df311f259600c3f298552e496a58/docs/migration.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/modelcontextprotocol/python-sdk/pull/2928/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
examples/servers/everything-server/mcp_everything_server/server.pyhttps://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-941c156700d335386d0fe33c0d46429e483b49dbcdc451f0e9b8cef9343cb056
View file https://github.com/modelcontextprotocol/python-sdk/blob/efa9c8598f47df311f259600c3f298552e496a58/examples/servers/everything-server/mcp_everything_server/server.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/modelcontextprotocol/python-sdk/pull/2928/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-941c156700d335386d0fe33c0d46429e483b49dbcdc451f0e9b8cef9343cb056
https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-941c156700d335386d0fe33c0d46429e483b49dbcdc451f0e9b8cef9343cb056
https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-941c156700d335386d0fe33c0d46429e483b49dbcdc451f0e9b8cef9343cb056
https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-941c156700d335386d0fe33c0d46429e483b49dbcdc451f0e9b8cef9343cb056
https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-941c156700d335386d0fe33c0d46429e483b49dbcdc451f0e9b8cef9343cb056
src/mcp/client/streamable_http.pyhttps://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-e8c18a3067a9b157c5c39a947f53d395afeb00e7026dad2d5a279011da943b5e
View file https://github.com/modelcontextprotocol/python-sdk/blob/efa9c8598f47df311f259600c3f298552e496a58/src/mcp/client/streamable_http.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/modelcontextprotocol/python-sdk/pull/2928/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-e8c18a3067a9b157c5c39a947f53d395afeb00e7026dad2d5a279011da943b5e
https://github.com/modelcontextprotocol/python-sdk/pull/2928/files#diff-e8c18a3067a9b157c5c39a947f53d395afeb00e7026dad2d5a279011da943b5e
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/2928/files
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/2928/files
https://github.com
Termshttps://docs.github.com/site-policy/github-terms/github-terms-of-service
Privacyhttps://docs.github.com/site-policy/privacy-policies/github-privacy-statement
Securityhttps://github.com/security
Statushttps://www.githubstatus.com/
Communityhttps://github.community/
Docshttps://docs.github.com/
Contacthttps://support.github.com?tags=dotcom-footer

Viewport: width=device-width


URLs of crawlers that visited me.