René's URL Explorer Experiment


Title: Isolate the stdio server's stdin and stdout from handler subprocesses by maxisbey · Pull Request #3117 · modelcontextprotocol/python-sdk · GitHub

Open Graph Title: Isolate the stdio server's stdin and stdout from handler subprocesses by maxisbey · Pull Request #3117 · modelcontextprotocol/python-sdk

X Title: Isolate the stdio server's stdin and stdout from handler subprocesses by maxisbey · Pull Request #3117 · modelcontextprotocol/python-sdk

Description: stdio_server() now serves the protocol from private duplicates of stdin and stdout and repoints the standard descriptors away from the wire while it runs, restoring both on exit: fd 0 (and the Windows standard input handle) reads the null device, and fd 1 (and the standard output handle) writes to stderr. Subprocesses spawned by tool code therefore inherit the diversions instead of the protocol pipes, and a stray print() lands in the client's log instead of corrupting the stream. Fixes #671. Motivation and Context stdin. The #671 hang is CPython gh-78961: Windows serializes operations on a synchronous pipe, a stdio server always has a blocking read pending on stdin, and a Python child that inherits that pipe freezes inside interpreter startup, before its first line of user code, until the pending read completes. That happens exactly when the next JSON-RPC message arrives, which is why hung tool calls "complete" once the client times out or sends another request. Skipping redirection entirely doesn't avoid it: Windows hands a console child the parent's standard handles even with bInheritHandles=FALSE, so a plain subprocess.run([...]) hangs too. With fd 0 on the null device while serving, there is no shared pipe to block on. It also fixes the cross-platform variant: a child that reads its inherited stdin was consuming protocol bytes on any platform. stdout. The same inheritance corrupts the other direction: a child writing to its inherited stdout (or a stray print() in handler code) writes straight into the JSON-RPC stream (the classic client-side symptom is Unexpected token ... is not valid JSON, e.g. #409). With fd 1 diverted to stderr while serving, that output shows up in the client's logs instead; every stdio client surveyed (this SDK, TypeScript, C#, Inspector, Claude Desktop, VS Code, Zed, ...) captures or passes through server stderr. This closes the documented transport:stdio:stream-purity divergence, and matches where go-sdk is heading for its v2 (modelcontextprotocol/go-sdk#572). Why the descriptor level. Children inherit descriptors, not Python objects, so no sys.stdout-level redirection can protect the wire from subprocesses. Node fixed its version of this inside libuv (uv_disable_stdio_inheritance()); Go's runtime hands children the null device for unset streams; Python gives a library neither, so the transport rearranges the table itself, using the same dup/dup2/restore mechanism as pytest's capfd. The claim is a small state machine with one safe failure direction. A registry maps each standard descriptor to at most one owning transport; a second concurrent stdio_server() raises RuntimeError rather than contending for the wire. The wire duplicate is allocated where it cannot land in the standard range (F_DUPFD_CLOEXEC above fd 2 on POSIX) and recorded before the descriptor is ever moved; release restores with a single dup2 and deregisters only on success. Every failure, modeled or not, therefore lands on the safe side: the claim is retained and later transports are refused, never handed a diverted descriptor. Failures to duplicate or divert degrade to serving the streams in place exactly as v1. The design was hardened through three adversarial verification rounds (about fifty attack scenarios, several confirmed and fixed, the rest refuted); the full state machine, invariants, and accepted residues are in the design write-up comment on this PR. Who is affected. A survey of real public MCP servers found no code that works today and would break: of 16 servers whose tools spawn children, 11 are exposed to the hang/theft today (none redirect stdin) and are fixed by this change, 5 fully redirect and are unaffected, 0 break. print() in stdio serving code is widespread and corrupts the wire today (e.g. PrefectHQ/fastmcp#3278, #1010); it now lands in the client's log. Real input()-in-a-tool under stdio does not exist in the wild (it never worked; it now fails fast with EOF instead of hanging). Accordingly there is no migration entry: no user has anything to do. The workaround documentation #3079 added is removed: v2 no longer exhibits the hang (stdin=subprocess.DEVNULL still works fine where users already pass it). How Has This Been Tested? Reproduced #671 on windows-latest runners against current main with an instrumented harness: the child's first line executes only when the next protocol message lands, on Python 3.10 through 3.14. With this change, the same unmodified repro returns in ~0.5 s. fd-level tests pin the descriptor-table contract: the wire moves to private descriptors, fd 0 reads EOF, fd 1 diverts to stderr (asserted by reading a planted stderr pipe), frames stay pure on the planted wire pipes, both descriptors restore on exit; plus the in-place path for incomplete descriptor tables, failure injection for the best-effort fallback and restore paths, and the concurrent-claim refusal. End-to-end regression tests spawn a real server whose tool spawns a real child: the Windows stdin-hang shapes (piped and bare) and a cross-platform noisy child whose junk line must arrive in the server's stderr, never the wire. Each verified to fail on unpatched main (POSIX and Windows runners) and pass with this change. Live interop against other SDKs: a TypeScript SDK (1.29.0) client driving this server through hostile traffic (noisy child, direct print(), post-pollution calls: all clean, all noise in the host-visible stderr), a Go SDK client doing the same, and this SDK's client against a TypeScript server. Shell-level probes: piped python server.py sessions with a pre-run banner print (drains to stderr, wire clean), post-run prints (stdout restored), python -u, and launches with stderr closed or merged. Full suite + 100% coverage gate, pyright, ruff, and the strict docs build pass on ubuntu and windows runners. Breaking Changes None requiring action. During a stdio session, handler code that read sys.stdin now sees EOF instead of racing the transport for protocol bytes, and print()/sys.stdout writes reach stderr instead of the wire; both were broken behaviors before, not working ones. Injected-stream usage (stdio_server(stdin=..., stdout=...)) and environments where the sys streams aren't the real descriptors are served exactly as before. Types of changes Bug fix (non-breaking change which fixes an issue) 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 Known residuals, deliberately at v1 parity: output flushed to stdout before the transport enters still precedes the first frame, and a process launched with stderr merged into stdout (2>&1) keeps its already-broken merged behavior. No surveyed host launches servers that way. AI disclosure AI assistance was used to investigate, implement, and validate this change; I reviewed the result and take responsibility for it. AI Disclaimer

Open Graph Description: stdio_server() now serves the protocol from private duplicates of stdin and stdout and repoints the standard descriptors away from the wire while it runs, restoring both on exit: fd 0 (and the Wind...

X Description: stdio_server() now serves the protocol from private duplicates of stdin and stdout and repoints the standard descriptors away from the wire while it runs, restoring both on exit: fd 0 (and the Wind...

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

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:103142fa-b48c-714d-d12f-779d47a5d011
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-idABC6:2017E4:2BDA635:3D25B05:6A633D99
html-safe-nonceb7f526fe7bef599846671c806870b20882cebbdce20aae7147c20d3bd1828b16
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBQkM2OjIwMTdFNDoyQkRBNjM1OjNEMjVCMDU6NkE2MzNEOTkiLCJ2aXNpdG9yX2lkIjoiNDA3ODg5MTE3MzkxMDEwMTQwMSIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9
visitor-hmac70606e7d78c8cb7badff1cd64c7c6ada4f1ed7d66c54754f85fffd4558e5b385
hovercard-subject-tagpull_request:4071400397
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/3117/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:altstdio_server() now serves the protocol from private duplicates of stdin and stdout and repoints the standard descriptors away from the wire while it runs, restoring both on exit: fd 0 (and the Wind...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
None59e55daad7174ca59d63c6974d58276ccb5477442e550bebb3c035e1bef11c94
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
release990295d92a4cc7b63fbbd83a046217cd7d77d49c
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/modelcontextprotocol/python-sdk/pull/3117/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fmodelcontextprotocol%2Fpython-sdk%2Fpull%2F3117%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%2F3117%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/3117/files
Reloadhttps://github.com/modelcontextprotocol/python-sdk/pull/3117/files
Reloadhttps://github.com/modelcontextprotocol/python-sdk/pull/3117/files
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/3117/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 270 https://github.com/modelcontextprotocol/python-sdk/issues
Pull requests 319 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
stdio-stdin-isolationhttps://github.com/modelcontextprotocol/python-sdk/tree/stdio-stdin-isolation
Conversation 76 https://github.com/modelcontextprotocol/python-sdk/pull/3117
Commits 17 https://github.com/modelcontextprotocol/python-sdk/pull/3117/commits
Checks 42 https://github.com/modelcontextprotocol/python-sdk/pull/3117/checks
Files changed https://github.com/modelcontextprotocol/python-sdk/pull/3117/files
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/3117/files
Isolate the stdio server's stdin and stdout from handler subprocesses https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#top
Show all changes 17 commits https://github.com/modelcontextprotocol/python-sdk/pull/3117/files
42ef19a Isolate the stdio server's stdin from handler subprocesses maxisbey Jul 16, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/3117/commits/42ef19a5936c6ef97c8b6bccc5882a9d85219331
f74f608 Isolate the stdio server's stdout from handler code and subprocesses maxisbey Jul 16, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/3117/commits/f74f6084df1f11d3d8b723beb96e53718820bf2b
52d9409 Refuse abnormal processes instead of repairing them in stdio isolation maxisbey Jul 20, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/3117/commits/52d940913ce2235a2933375952ad3171b9b443f1
ac17129 Replace dashes with plain punctuation in prose added by this branch maxisbey Jul 20, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/3117/commits/ac17129fec1b7a709e76fb413a37c1e600b84584
664b540 Hold the stream claim for in-place fallbacks too maxisbey Jul 21, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/3117/commits/664b540125c1060cd7c3aad8c0de6c4baf02ca15
7374202 Add migration note for code that watches fd 0 directly maxisbey Jul 21, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/3117/commits/7374202616d4781b23d511f864f2826293e30caa
722ff77 Scope the fd 0 watchdog migration example to POSIX maxisbey Jul 21, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/3117/commits/722ff77e976fa78503c5c85deaa1df7cd8935781
8c46858 Keep a still-diverted fd claimed when its restore fails maxisbey Jul 21, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/3117/commits/8c468581d241aaa9718e35d2951e8964ca567771
8ed5083 Roll forward when a failed claim cannot be rolled back maxisbey Jul 21, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/3117/commits/8ed5083d67eccecdf6a7e64cbb66d9a2bcf3ab24
41b9faa Reshape the stream claim into an explicit state machine maxisbey Jul 21, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/3117/commits/41b9faaf9b96800e1441c1b29d8392189f995a64
45eed51 Exclude POSIX-only fcntl lines from the Windows coverage gate maxisbey Jul 21, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/3117/commits/45eed51c36bcf14c789a3c2ebf07ca503b3a042e
3e5fa68 Open the errlog capture as UTF-8 in the noisy-child test maxisbey Jul 21, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/3117/commits/3e5fa689f9c65858a0e491512673bda950ec7ca0
cbac04d Never close a buffer the transport does not own maxisbey Jul 22, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/3117/commits/cbac04deab9d400a8f77094286878ff6e7d49f71
a33d31c Correct the watchdog poll mask note and use the public get_osfhandle maxisbey Jul 22, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/3117/commits/a33d31cfcf2fd76e83b8c93ba40641f2647ccb33
84f033d Scope the stderr-closed isolation test to POSIX maxisbey Jul 23, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/3117/commits/84f033d98e3f3ea1d6e529a5421fddb34279f0d2
cc9016c Scope the stray-output docs to flushed writes maxisbey Jul 23, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/3117/commits/cc9016c774c14d07982e68da1530521e9028c53c
2adb27f Re-point fd at the wire when a divert dup2 fails maxisbey Jul 23, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/3117/commits/2adb27f342793ce7646ab458346e84cd5502ab7f
Clear filters https://github.com/modelcontextprotocol/python-sdk/pull/3117/files
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/3117/files
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/3117/files
real-host.md https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-90ff4f62d06148c6161e7d895a94231c72bef34a597fb760d9bc9cfb4a6b2533
logging.md https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-9209a2f75c1d9c44320395e521e37388f124c16b44d02398d3c02b5b89822895
migration.md https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
index.md https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-b5f9cb40572b4dce535829f4f2698ea7149ff9d2d8c7bc61e1084f1c611d8210
troubleshooting.md https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-373ebedf1806538a48b09135d964fe714cd54bd8c385e2ef97383324b759e82d
utilities.py https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-0adc630bbecb11fd2fe8fc302a21e9afe0ebb9c3ae019a95d9bf84817cf73f61
stdio.py https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-19a44750677a645222700b9984d14682f626518ae045cf909c4daf665cb3264e
_requirements.py https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-c12ce54cbf13a11daa3f93343e5df8c89ca2b25d0f20f00b5408a2402a223228
test_stdio.py https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-e87dd7470dc7d367b9901aacfcc577a54864d05e8e50b4b9a25c6d1bfc543fb5
test_stdio.py https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-3e62be39a5c1d8b8dfe922d017c0fae7b023fa1ffac872a0e046f13ef8ca899a
test_lifecycle.py https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-dfe48f06b0fabf3d8171942bed96fe7a26a5557f860b742b9bd5cb4bb9d006b5
test_windows.py https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-314c849a12297cace60d12dc9f5983e06fac171fdb2a7ed454a389c4e08aebb1
docs/get-started/real-host.mdhttps://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-90ff4f62d06148c6161e7d895a94231c72bef34a597fb760d9bc9cfb4a6b2533
View file https://github.com/modelcontextprotocol/python-sdk/blob/2adb27f342793ce7646ab458346e84cd5502ab7f/docs/get-started/real-host.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/modelcontextprotocol/python-sdk/pull/3117/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-90ff4f62d06148c6161e7d895a94231c72bef34a597fb760d9bc9cfb4a6b2533
https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-90ff4f62d06148c6161e7d895a94231c72bef34a597fb760d9bc9cfb4a6b2533
docs/handlers/logging.mdhttps://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-9209a2f75c1d9c44320395e521e37388f124c16b44d02398d3c02b5b89822895
View file https://github.com/modelcontextprotocol/python-sdk/blob/2adb27f342793ce7646ab458346e84cd5502ab7f/docs/handlers/logging.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/modelcontextprotocol/python-sdk/pull/3117/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-9209a2f75c1d9c44320395e521e37388f124c16b44d02398d3c02b5b89822895
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/3117/files
https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-9209a2f75c1d9c44320395e521e37388f124c16b44d02398d3c02b5b89822895
https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-9209a2f75c1d9c44320395e521e37388f124c16b44d02398d3c02b5b89822895
docs/migration.mdhttps://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
View file https://github.com/modelcontextprotocol/python-sdk/blob/2adb27f342793ce7646ab458346e84cd5502ab7f/docs/migration.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/modelcontextprotocol/python-sdk/pull/3117/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/3117/files
https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
docs/run/index.mdhttps://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-b5f9cb40572b4dce535829f4f2698ea7149ff9d2d8c7bc61e1084f1c611d8210
View file https://github.com/modelcontextprotocol/python-sdk/blob/2adb27f342793ce7646ab458346e84cd5502ab7f/docs/run/index.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/modelcontextprotocol/python-sdk/pull/3117/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-b5f9cb40572b4dce535829f4f2698ea7149ff9d2d8c7bc61e1084f1c611d8210
https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-b5f9cb40572b4dce535829f4f2698ea7149ff9d2d8c7bc61e1084f1c611d8210
docs/troubleshooting.mdhttps://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-373ebedf1806538a48b09135d964fe714cd54bd8c385e2ef97383324b759e82d
View file https://github.com/modelcontextprotocol/python-sdk/blob/2adb27f342793ce7646ab458346e84cd5502ab7f/docs/troubleshooting.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/modelcontextprotocol/python-sdk/pull/3117/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-373ebedf1806538a48b09135d964fe714cd54bd8c385e2ef97383324b759e82d
https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-373ebedf1806538a48b09135d964fe714cd54bd8c385e2ef97383324b759e82d
src/mcp/os/win32/utilities.pyhttps://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-0adc630bbecb11fd2fe8fc302a21e9afe0ebb9c3ae019a95d9bf84817cf73f61
View file https://github.com/modelcontextprotocol/python-sdk/blob/2adb27f342793ce7646ab458346e84cd5502ab7f/src/mcp/os/win32/utilities.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/modelcontextprotocol/python-sdk/pull/3117/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-0adc630bbecb11fd2fe8fc302a21e9afe0ebb9c3ae019a95d9bf84817cf73f61
https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-0adc630bbecb11fd2fe8fc302a21e9afe0ebb9c3ae019a95d9bf84817cf73f61
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/3117/files
https://github.com/modelcontextprotocol/python-sdk/pull/3117/files#diff-0adc630bbecb11fd2fe8fc302a21e9afe0ebb9c3ae019a95d9bf84817cf73f61
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/3117/files
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/3117/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.