René's URL Explorer Experiment


Title: fix: clean up SSE session on client disconnect by Varun6578 · Pull Request #2200 · modelcontextprotocol/python-sdk · GitHub

Open Graph Title: fix: clean up SSE session on client disconnect by Varun6578 · Pull Request #2200 · modelcontextprotocol/python-sdk

X Title: fix: clean up SSE session on client disconnect by Varun6578 · Pull Request #2200 · modelcontextprotocol/python-sdk

Description: NoteEDIT from @maxisbey: Retargeting to Fixes #1227 — see #2200 (comment) for details. The fix is correct and useful, but #423 is a different bug (client-side EventSource auto-reconnect without re-initialize) already mitigated by #822 and #1478. The "server reload" claim below is inaccurate — a uvicorn restart gives a fresh empty dict; this leak only occurs within a single process lifetime. Summary Fixes #1227 After a client disconnects from the SSE endpoint, the session entry was never removed from _read_stream_writers. This caused stale sessions to accumulate, and after a server reload old session IDs could still be found in the dict (with closed streams), leading to confusing behavior. Changes src/mcp/server/sse.py: Added self._read_stream_writers.pop(session_id, None) in the disconnect handler (response_wrapper) to clean up the session entry when a client disconnects This is a one-line fix. The streams were already being closed on disconnect; this ensures the session dict entry is also removed so that subsequent POST requests to the old session ID correctly receive a 404 response.

Open Graph Description: NoteEDIT from @maxisbey: Retargeting to Fixes #1227 — see #2200 (comment) for details. The fix is correct and useful, but #423 is a different bug (client-side EventSource auto-reconnect without re-...

X Description: NoteEDIT from @maxisbey: Retargeting to Fixes #1227 — see #2200 (comment) for details. The fix is correct and useful, but #423 is a different bug (client-side EventSource auto-reconnect without re-...

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

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:0a112a84-8a55-7d72-7d58-bf7064a5172d
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-id8134:3E5F8B:12EA91A:1AF16C3:6A5F997C
html-safe-nonce1560e5d9874c79fa2723239122e6b32e958572b0ca4e873580c90c14bc7ddd37
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4MTM0OjNFNUY4QjoxMkVBOTFBOjFBRjE2QzM6NkE1Rjk5N0MiLCJ2aXNpdG9yX2lkIjoiODE1MDMwMDk1MTA5MjEwNzY0NCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmaccfa63e8d8fca7cf21ffe9c6b438a368cd74066d3bb110a8c7bb52aedcf64dfa8
hovercard-subject-tagpull_request:3343854254
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/2200/files
twitter:imagehttps://avatars.githubusercontent.com/u/34965159?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/34965159?s=400&v=4
og:image:altNoteEDIT from @maxisbey: Retargeting to Fixes #1227 — see #2200 (comment) for details. The fix is correct and useful, but #423 is a different bug (client-side EventSource auto-reconnect without re-...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None9353cc7b48460319d80daeeb399e4919b4abcfe6f78d37c7b457924d164a40b1
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
release755d210ae728fcf699d7ab1cdd9866592be6ad35
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/modelcontextprotocol/python-sdk/pull/2200/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fmodelcontextprotocol%2Fpython-sdk%2Fpull%2F2200%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
Code QualityEnforce quality at mergehttps://github.com/features/code-quality
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%2F2200%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/2200/files
Reloadhttps://github.com/modelcontextprotocol/python-sdk/pull/2200/files
Reloadhttps://github.com/modelcontextprotocol/python-sdk/pull/2200/files
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/2200/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.7k https://github.com/login?return_to=%2Fmodelcontextprotocol%2Fpython-sdk
Code https://github.com/modelcontextprotocol/python-sdk
Issues 265 https://github.com/modelcontextprotocol/python-sdk/issues
Pull requests 311 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
modelcontextprotocol:mainhttps://github.com/modelcontextprotocol/python-sdk/tree/main
Varun6578:fix/sse-session-cleanuphttps://github.com/Varun6578/python-sdk/tree/fix/sse-session-cleanup
Conversation 4 https://github.com/modelcontextprotocol/python-sdk/pull/2200
Commits 5 https://github.com/modelcontextprotocol/python-sdk/pull/2200/commits
Checks 27 https://github.com/modelcontextprotocol/python-sdk/pull/2200/checks
Files changed 2 https://github.com/modelcontextprotocol/python-sdk/pull/2200/files
fix: clean up SSE session on client disconnect https://github.com/modelcontextprotocol/python-sdk/pull/2200/files#top
Show all changes 5 commits https://github.com/modelcontextprotocol/python-sdk/pull/2200/files
1fce2fd fix: clean up SSE session on client disconnect Mar 2, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2200/commits/1fce2fdc6b83dc1de8bf6716752912303a2de69b
c152ca5 Add regression test for SSE session cleanup on disconnect Mar 2, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2200/commits/c152ca5d24f7a38c58b93e1740772b536bcfde40
3d28ad1 Fix coverage: simplify test by removing unnecessary retry loop Mar 2, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2200/commits/3d28ad1df59c32ad13af040aa4d2ddc3ead1d5c6
f0057a5 Update test docstring to reference correct issue (#1227) maxisbey Mar 4, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2200/commits/f0057a5468e702ac53ccc7e96141a63b4cc11689
25d75bb Use list.append for session_id capture to fix 3.11 coverage gap maxisbey Mar 4, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2200/commits/25d75bb35c6f0e2a4396a4243d56415a4b668910
Clear filters https://github.com/modelcontextprotocol/python-sdk/pull/2200/files
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/2200/files
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/2200/files
sse.py https://github.com/modelcontextprotocol/python-sdk/pull/2200/files#diff-db3d89720f05f9c8a375c9ce008a6b477be25dccabca86a7d422814c5ab3f12c
test_sse.py https://github.com/modelcontextprotocol/python-sdk/pull/2200/files#diff-a2934f5f6ec610dff6774352c41b8c697b539614667643d69fd67f6fc6d7765e
src/mcp/server/sse.pyhttps://github.com/modelcontextprotocol/python-sdk/pull/2200/files#diff-db3d89720f05f9c8a375c9ce008a6b477be25dccabca86a7d422814c5ab3f12c
View file https://github.com/Varun6578/python-sdk/blob/25d75bb35c6f0e2a4396a4243d56415a4b668910/src/mcp/server/sse.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/modelcontextprotocol/python-sdk/pull/2200/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/2200/files#diff-db3d89720f05f9c8a375c9ce008a6b477be25dccabca86a7d422814c5ab3f12c
https://github.com/modelcontextprotocol/python-sdk/pull/2200/files#diff-db3d89720f05f9c8a375c9ce008a6b477be25dccabca86a7d422814c5ab3f12c
tests/shared/test_sse.pyhttps://github.com/modelcontextprotocol/python-sdk/pull/2200/files#diff-a2934f5f6ec610dff6774352c41b8c697b539614667643d69fd67f6fc6d7765e
View file https://github.com/Varun6578/python-sdk/blob/25d75bb35c6f0e2a4396a4243d56415a4b668910/tests/shared/test_sse.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/modelcontextprotocol/python-sdk/pull/2200/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/2200/files#diff-a2934f5f6ec610dff6774352c41b8c697b539614667643d69fd67f6fc6d7765e
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.