René's URL Explorer Experiment


Title: Split protocol types into a standalone `mcp-types` package by Kludex · Pull Request #2973 · modelcontextprotocol/python-sdk · GitHub

Open Graph Title: Split protocol types into a standalone `mcp-types` package by Kludex · Pull Request #2973 · modelcontextprotocol/python-sdk

X Title: Split protocol types into a standalone `mcp-types` package by Kludex · Pull Request #2973 · modelcontextprotocol/python-sdk

Description: What Extract the protocol wire types from src/mcp/types/ into a separate distribution, mcp-types (imported as mcp_types), wired into the existing uv workspace as a member under src/mcp-types/ (same nesting as httpx2/httpcore2). mcp-types depends only on pydantic + typing-extensions, so tooling and lightweight clients can (de)serialize MCP traffic without pulling in httpx, starlette, uvicorn, and the rest of the server/transport stack. Key changes src/mcp/types/ → src/mcp-types/mcp_types/ (_types, jsonrpc, _wire_base, methods, v2025_11_25/, v2026_07_28/), moved with git mv so history is preserved. src/mcp/shared/version.py → src/mcp-types/mcp_types/version.py. It is a pure leaf with no mcp dependencies, which is what lets mcp_types depend on nothing in mcp (methods.py needs KNOWN_PROTOCOL_VERSIONS). mcp.types and mcp.shared.version are removed (no shim). All importers are rewritten to mcp_types / mcp_types.version. mcp.__init__ still re-exports the type names from mcp_types, so from mcp import Tool is unchanged. Workspace/build wiring: [tool.uv.workspace] member, [tool.uv.sources], mcp dependency, pyright include, ruff per-file-ignore, coverage source + [tool.coverage.paths] mapping, and scripts/gen_surface_types.py output path + --base-class. Breaking change from mcp.types import X and from mcp.shared.version import X no longer work; use from mcp_types import X / from mcp_types.version import X. The top-level from mcp import X re-exports are unchanged. Documented in docs/migration.md. Verification 2714 tests pass; pyright reports 0 errors; ruff/format clean. 100.00% coverage, strict-no-cover clean. mcp-types builds standalone (wheel includes py.typed and all modules). scripts/gen_surface_types.py --check regenerates the v* validators identically from the new path. AI Disclaimer This PR was developed with the assistance of either Claude or Codex. I've reviewed and verified the changes.

Open Graph Description: What Extract the protocol wire types from src/mcp/types/ into a separate distribution, mcp-types (imported as mcp_types), wired into the existing uv workspace as a member under src/mcp-types/ (same...

X Description: What Extract the protocol wire types from src/mcp/types/ into a separate distribution, mcp-types (imported as mcp_types), wired into the existing uv workspace as a member under src/mcp-types/ (same...

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

X: @github

direct link

Domain: github.com

route-pattern/:user_id/:repository/pull/:id/files(.:format)
route-controllerpull_requests
route-actionfiles
fetch-noncev2:5f832f87-62f9-c188-60e4-3854bb0b2948
current-catalog-service-hashae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b
request-id8142:33F480:2D27B3:3E84AB:6A59C7DC
html-safe-noncea4d89b2a0343a99ceece6e0e68cbc7e1cc70dc86103a7db16efa977e6df91be5
visitor-payloadeyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiI4MTQyOjMzRjQ4MDoyRDI3QjM6M0U4NEFCOjZBNTlDN0RDIiwidmlzaXRvcl9pZCI6IjUzNDc2Mjk1MzM5NjQ2NTA0NjAiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ==
visitor-hmacdf3466516b6d119b07bc132b9934a5e7bec151cf03faea415330c75e8f30139e
hovercard-subject-tagpull_request:3936352668
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/2973/files
twitter:imagehttps://avatars.githubusercontent.com/u/7353520?s=400&v=4
twitter:cardsummary_large_image
og:imagehttps://avatars.githubusercontent.com/u/7353520?s=400&v=4
og:image:altWhat Extract the protocol wire types from src/mcp/types/ into a separate distribution, mcp-types (imported as mcp_types), wired into the existing uv workspace as a member under src/mcp-types/ (same...
og:site_nameGitHub
og:typeobject
hostnamegithub.com
expected-hostnamegithub.com
Noneba3976babb66479b1c943a8edc0777d96157da48fadc0161f9ddb219deee8353
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
releaseab680789ae4a316cdaf0d5a292a1760140931cc4
ui-targetfull
theme-color#1e2327
color-schemelight dark

Links:

Skip to contenthttps://github.com/modelcontextprotocol/python-sdk/pull/2973/files#start-of-content
https://github.com/
Sign in https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fmodelcontextprotocol%2Fpython-sdk%2Fpull%2F2973%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%2F2973%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/2973/files
Reloadhttps://github.com/modelcontextprotocol/python-sdk/pull/2973/files
Reloadhttps://github.com/modelcontextprotocol/python-sdk/pull/2973/files
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/2973/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 255 https://github.com/modelcontextprotocol/python-sdk/issues
Pull requests 303 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
Kludexhttps://github.com/Kludex
mainhttps://github.com/modelcontextprotocol/python-sdk/tree/main
worktree-eager-growing-unicornhttps://github.com/modelcontextprotocol/python-sdk/tree/worktree-eager-growing-unicorn
Conversation 22 https://github.com/modelcontextprotocol/python-sdk/pull/2973
Commits 8 https://github.com/modelcontextprotocol/python-sdk/pull/2973/commits
Checks 44 https://github.com/modelcontextprotocol/python-sdk/pull/2973/checks
Files changed https://github.com/modelcontextprotocol/python-sdk/pull/2973/files
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/2973/files
Split protocol types into a standalone mcp-types package https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#top
Show all changes 8 commits https://github.com/modelcontextprotocol/python-sdk/pull/2973/files
8bb37b3 Split protocol types into a standalone `mcp-types` package Kludex Jun 25, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2973/commits/8bb37b35a5dc46f57c6876d193257c5dafa95418
331423b Rewrite conformance client import to mcp_types Kludex Jun 25, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2973/commits/331423b67d27aa3c01a48215e22c1d84279a1425
e10061d Move mcp-types under src/ to match the httpx2 workspace layout Kludex Jun 25, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2973/commits/e10061d945bf165cf205f0ac9ff1a34d118851b2
93822ef Build mcp-types alongside mcp in the publish workflow Kludex Jun 25, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2973/commits/93822efe384ac1d29f31cb8dec9a9ae5707606eb
d1ef950 Pin mcp-types to the exact mcp version via uv-dynamic-versioning Kludex Jun 25, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2973/commits/d1ef9508bc2d8eb6c4831287989db9bd5103f044
feac453 Merge remote-tracking branch 'origin/main' into worktree-eager-growin… Kludex Jun 25, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2973/commits/feac453912559b74f2c47a7418365d8b0651ffcc
2981ca7 Include LICENSE in mcp-types sdist; drop redundant coverage path map Kludex Jun 25, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2973/commits/2981ca76d532bdf65877b190c466be67aade2e9b
a6a3b86 Address review: fix mcp-types README deps and v1 migration examples Kludex Jun 25, 2026 https://github.com/modelcontextprotocol/python-sdk/pull/2973/commits/a6a3b862bf33adddde0856c29a6aedb2648ca691
Clear filters https://github.com/modelcontextprotocol/python-sdk/pull/2973/files
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/2973/files
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/2973/files
client.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-823c6bf6584b99e84ad74327720949300eb016f0efd6497c143dbd56307b058f
publish-pypi.yml https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-d4585bdbbb00b46a400628c271f195eb312333d18474299152a0b75fb1a7ec4b
README.v2.md https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
migration.md https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
testing.md https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-c22885d97fa21ad974a3f5f982d92b6f45edc251fd34bc14223492ebd7391245
direct_call_tool_result_return.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-d015ad95be63944a2c91ff5d37622d9736c3464aeae7ed453f78b2340a6078f8
server.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-941c156700d335386d0fe33c0d46429e483b49dbcdc451f0e9b8cef9343cb056
server.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-8013baeccecb4c3cf7794c3eb26b5cea0d14dcf59a0b4c6d6727ae6818d9803e
server.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-1f605513db4b9bd876b8efa73827b7a9e9499ce8314a2fb60cd9d22f1719f2e9
README.md https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-2d23195db4cd51b93ee9214748a9cd4756b562d2050fe63a7f12098431e98d9e
server.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-6717dbff945c705e47c46049bfbd1843c215660eaf0abe7b13e60b4a4dd1cd69
server.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-cf9c7eb8c1e2d4f07777fb94e6a7ac7c6e6edbed04fc283789690b7e4ce99df4
event_store.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-58fec2ea43f021feec3639d6af5b9e5e1a096bce3b00810d6a4633af9dce3844
server.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-6f8bfa77e7dd219d4340997e7e165170e698dd73e1a872ad790fafa4147d7f3b
server.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-ba52c682d4e3fbfa81efb481c7df117341f6502fcf7b99f0722448f0ffbfb9bd
event_store.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-84ed62b0996ccebc88186535cc8ab32f66217d5d146af08a817a890101e9f3e1
server.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-1823a7d82b6ce367869806e4a6aa80834b6ec580b25d496d4db90b3b173a71b0
__main__.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-963f97d0a3a00cc1a034a47183d2d2609f329a8067df04d11a222564f458ca7f
completion_client.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-7d789f515b3e174ef010cecca239f6f54ac574979ab47192bc921660d4eb62dd
pagination_client.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-0f2c92e1e1adbc11651269a5c447fd019f663d190ff75df2bdd27e689833b52c
parsing_tool_results.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-520c78f64a85518989ee96cf9a9490ea37701807323083eea8e35e9002da33b3
stdio_client.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-80e22c31535d5b73813e1fc99d0e379ef7629c923133d659c30c2f267e87e29e
url_elicitation_client.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-04b06d8eb497353a46aa5f2aedf63ba8b3d911d00aef6537f028b7eac54e1463
completion.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-78ac4573ea250c05096b293b9ec81c066ebe990219a135af1934faf01b32951b
direct_call_tool_result.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-d5e350de2c25785c7df46688bc0dbc746170f5c7dcc89539662c9c1dcbb9b3ba
elicitation.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-4d98e4be7708073ecac2bb2dfa16c78ac06b16805fcc170800646502037e3f35
basic.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-1861975ff3b1a2d4130ed88e0881219376e0d895546c9016c2e8852d2103e6ef
direct_call_tool_result.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-bc04fb9cbbf268950a6bb06ba417e24e1e3099257eb8fa752f839b593c321163
lifespan.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-49300a7e38d34581bc85b6afb20eae4354460401ce0b233284f725f17697d3bc
structured_output.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-1c0e49f04d68d3b86b237841614a62fed643d3eeab25e71ca0ff3750596c57d3
pagination_example.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-3d3ac67908c1eed0a381620d451f3822046673854a83d89cb29dfbccf12c5083
sampling.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-0ed01975ac1ead5aed841d4582928859cbd8b70ba8a1f1ac12923982be52f4e1
pyproject.toml https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-50c86b7ed8ac2cf95bd48334961bf0530cdc77b5a56f852c5c61b89d735fd711
gen_surface_types.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-cd04c09bf6e8b3d3b71bc3b1a378c9bccf96bc2ad0989e54229eaaebe0d3115c
README.md https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-44bc3f374efc76433d3f12a0db38081d79378280f5c448790b80fde117478158
__init__.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-2bdd6166b4bd777f94504605636ea78e8873063e4bdd5d62010792a9b3e5eabd
_types.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-bd19c5ddeaca61e4fcc9ce321fbe2b44ee9a9c7e1ac6bcd4a4b2c03f8925564a
_wire_base.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-f55aae0f7471f9b439ae16c8a165cef6c5c1f690e3563976f8d23b13b8c70bab
jsonrpc.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-c3ef8b80787dbf3d5c84083bfc0887ea2d93248aefa781e2cca1f33e762bbfc6
methods.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-9615d89fea618e65e534293f2091991212496a72b86b8fb9bb470cea615cc47c
py.typed https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-e9f0e868002f23eb434ca73a8b615856de70882f512c28ee7f64750b36b8ad2e
__init__.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-26c8df9b51727a79ebfe8f95c65ccb7b497f6dc0b31cfbef43e7812a320d520d
__init__.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-36e9b913b90beea9301706a2a989cf18a521ec5b7510455e84e6978f0b13d93a
version.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-6f7cd01e06b898fc6d0ca32b15feb05a0e1c33b8923d6d4ccb41e2ba5ed75690
pyproject.toml https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-30ba5443d8720efcabe65a44541c133d24fb66db17674d738709c24915bf14d8
__init__.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-208c9cff9cd42bad47f1042db6861d931673ca78db6de12bd4d8f65885f8f126
__main__.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-acedd8b44e9fb1a288cc95191fc773e99af0b75edaa11c78295dad3147cb7eea
_probe.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-59dc4b81d661c03b7619227f60a2d202e7b8bc873cf4a14e7dbd1fdfcd03b501
oauth2.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-b7aaf2062da175cea9a532176d6eb78b659eaadb757cc48929f0bafccfdb8d98
utils.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-1aed3def34492fb7eafa6e7aee6e9cc9973171b28c9574dc5c5b288a09878996
client.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-34e945ebc2fea8a427b8d0c45ccd28eb4e4cceb33c82048bd7998e6bb2f754f3
session.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-634d1abcb8bda1a784f31e3431a10124e387f487dd243a54244515b4972aa0ee
session_group.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-cbe797d477654047e3091f5e3c0a1046d9197e34ed55d884c7d957ef4e61d775
sse.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-41ed2e8548ae223801c0a37a6b50ce913e24f0e660bbbc2ddd91686820c86336
stdio.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-a906fce75e115cde24e79b8cdac6442af7845748f57ec0e997ff81f089408186
streamable_http.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-e8c18a3067a9b157c5c39a947f53d395afeb00e7026dad2d5a279011da943b5e
_otel.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-9909152207c1d28a75b1658c3085b600d6c817f12b639f99d24d7ee029f03e9c
_streamable_http_modern.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-c5e06136c127a1503b8eab18375355c38ceb7e71b5a1c04b36ebf2fbc3d9067d
connection.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-849ab2b2ff6c99a29f2b9dcdc9edc4139ffa7d091cdf45f05fbfc7cb998b03d1
context.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-8e4a295d330079f8982fad5b62fa85a036a4714836389442df76880b5801e706
elicitation.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-c4db625b035748b41b473c918e7d296aa97e84921be651e4a165beaf95b83b29
server.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-b21bf5e21c058ccfddb404c209f2d4288e4f32b121111ffc9d466638631d13e4
__init__.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-1212dd4293d9fb8b9118c5b2f2afed4b9d4f227de7717f269aa0d64a251ce6e0
context.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-b8a980ea2822cbd7a2f938f77b794ef9df6724acb5d637fdf87c0ad2bfe2db1a
base.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-5df96c06127fae8e6f84e304e9bce59568220d3364e7493ea839527627ac4571
base.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-edde289e4d6498817977af7e741a0c766caa28bb0a1ab8924317c1949ef4f6ad
resource_manager.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-3638946fe0f98df2b1f99f9237907bc1344596ddd20cdfbb297d3ae874894cfd
templates.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-44c89eefb9a0f376f6c3004ad4a44828e0403a96114fe008c0dd7a708abde7cc
types.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-1e54d881b5d815eba8abbe33154fa58a08e77537be0d9f48e167e48f2ecb44bf
server.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-51d6996c0b80b8a5c42e7071451cb9ed3c91b398facebe99b94aad911059190e
base.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-b53a543261a9bc27476087bcb5fcf6e0d7e9d1b5b3df09e312f22b22ccffe761
tool_manager.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-ce540f985aabae39cc3a70e8943cb43a5c45e9ce6705c306b747c3483bec7034
func_metadata.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-5584d2273ac6a270822fe54fb95a27e03d6895afd1216e8bd71d1850e8f09676
types.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-248c404093c50319dac4517572e6ddb126900cf83afc0173d78f635010a7ff22
models.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-2293234ce05ada36d8353c4019c4389fda8987e0d08e22324d7d296324faa723
runner.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-7a9c3e13faa5730f5a8a60062e9d200513c0baeada63e3cc24b37fe68e086e90
session.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-9a603a2587011a188aa76ca19a32fcd343a253516325fbcfb4f7bfb6a814634c
sse.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-db3d89720f05f9c8a375c9ce008a6b477be25dccabca86a7d422814c5ab3f12c
stdio.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-19a44750677a645222700b9984d14682f626518ae045cf909c4daf665cb3264e
streamable_http.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-0119e4c1bbf2fde7ba89b9c9f5bc472ccc2332f84e96e47cf9e45cebef801da3
streamable_http_manager.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-1071ee05567116cb77322c376307b9071c6212871068ccf41911fc337ed473af
validation.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-714ef52aedaa95c74f63b6e583fda076fd14ae060477542d61198a0235288a85
context.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-39333468a87a8b7df9e7916239f97203647716e5465b846328ec277e179c7ceb
direct_dispatcher.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-6566b073a8d9286a5b17e0bb02d6e12e822eaedf2236c0d637dcd57992268076
dispatcher.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-13274512d72e2a34a599019a9226619b150fca24130936cee3dc7d5122934673
exceptions.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-78c8edd9357c34d072f24eac006407d819a6743472714abaf9a3c915d9be9d8a
inbound.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-aff932577e28e8bde4cd526480a1514700ef52c1b37cb993f27c297813efa86f
jsonrpc_dispatcher.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-3d8fb73fa8b126691302c15bb63bbc44a3a0e9338a17f14b3b4ea1d97bb10c2c
message.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-e87607af2a5ca4eeaf91e471c711340e954899e1504ebb1fcc981afe4639bc70
metadata_utils.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-d54c8ea5e383d96d6336622814c1d72a1429c5ba8a1dd5159136fa5346e4ce55
peer.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-7516fc8e5003b3509266f53789ae4f7873bf19b8ecda78e5ce81ecac9401bf74
session.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-aaa1596dd4db91f5cd7f743c8afbe58596daf01a2ecec4a0024768f7409fb1dc
conftest.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-d66be9fe425fabad4b8eeaa4dd90b911ac45443d2575d828a29fc74be7ea2f34
test_client.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-f91d7d1bfecb41d80a4cc73133b82560b7284a2af2d6630c49b983ca9366ea13
test_http_unicode.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-1abfe619fb6ecef0087c7e77c14530625aee85ec1dc1db958de2f341769c21c9
test_list_methods_cursor.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-abcde01e384b945f178e7410d8adbea613035debbc8b23a1ea3b742eb3dcb282
test_list_roots_callback.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-90b39d804728390ef9eab471f7f9877b35f83c44d63b99a1ea9653f6d5e11ee9
test_logging_callback.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-e2c00711f742606cdec4058b3f6121def7c09f5d3e74d16e2a6ba26bba1c91f5
test_notification_response.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-8c7bb1142c1c9cb43b4d2e7bf265054daca89ba175deec8b690f00464c00c182
test_output_schema_validation.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-dc75f269f6db41a54ac1f7e6c770c679e7c44ebc8f9b87a8d14a037c28754f64
test_probe.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-088586c579bbead2ed30c7da4a7c5523c167863b134102eb2ced4d3b67c7d86a
test_sampling_callback.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-2644de1d5107de80cb62cb010cb87b5858288fdd961806d4abdbc822f1d30540
test_session.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-623490a9c2dd576cc59e89f8d51f64acfffdeaad940e0bd4a0a51a50bc30d92d
test_session_concurrency.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-dcd16b274ced024cd0d253cd86a1a4c8042327b1b0f150227e73811bdc22c844
test_session_group.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-5278bd22bb86f5828e6bd1d889dd74bd0cd7302c9d1eb56c01075b5fe193a232
test_stdio.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-49f66b09e4d89b29b440c955c429fe948dbcc3bbb08fffb504cf40be24382352
test_streamable_http.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-09ecebf3cb1cb198a43bd3159ecf388a4dfdc38f93c9812b671f40fc2c83ec29
test_memory.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-6ae3f0a1371508074d5761d7a67a876ffe72c027c2fd0c3352f009ad902da950
README.md https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-112d0208d481546644215b9de655e51c63d09dcb845cca6ca95d030ad007d443
_connect.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-6ed9301844e916542b4f858e556d9e255de8891db09e51b737f5dd1238c50b9d
_helpers.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-c8a8ff425b6a85c43aec1841627f4dfe5fbd10e11ae63c63443e999a000a0ca2
_modern_vocab.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-5db7243dd206ab35bb34a493eca0ec90387d94156184ba8fb630d8b45fef918a
_requirements.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-c12ce54cbf13a11daa3f93343e5df8c89ca2b25d0f20f00b5408a2402a223228
test_authorize_token.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-e2f26e5f968d65f2a18a0a2f1b07786581e66b85ba40b1e0626ac19ee4cf6dd4
test_bearer.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-39fa737f86bf4beb1870f6befa727071547fb7bd57257244223688eb618bd79f
test_discovery.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-469d07df0d8e675ae3e626c2293e9fdc39917db8ca8e1f04ca02c17339c6e6f6
test_flow.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-2a572c9bff06790dc0655966553e6d8cc41877f4dacaf5f561bb04bf0f91ad61
test_lifecycle.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-d756478b61108e8553f87789d8a37a2cf6eac3760a38eeb6caf10d51256d8839
test_cancellation.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-bbb272049658e36f86bd66e16deef2e8ac8f7f90bb4bd89aa0f025bf1db48fee
test_client_connect.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-3a887d54ca83d9ef12ffdb0b58a494e9a7c44167381cb3efb59c3176ea663e42
test_completion.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-bf0c284b273d3bb39c7ad04eeecc944fe65dcad178203eaa686d4d295803f5b2
test_elicitation.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-5585defd557eb80768153a7b77139020888710d033099a70f574721eea73cb53
test_flows.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-c8703562e141bdb981bfa8f5a0e3dd92a9a881b7f60d5bde5c269e53e5f74331
test_initialize.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-019874eb5b0b14b2e3447be2be76b480e12f77f71af8e1be534bec187e0e0852
test_list_changed.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-2fe538363e99667f2664bc8e0b69ed5761cd08a704ecc29674e775ab4732910b
test_logging.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-3192d40691eceb9afd35995b61b0eecab1ac2deab780167455817137665073dd
test_meta.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-98c7d293f2ebacbecead35b31a9bb0901d21e0e7baf3ac515b8fa8b415f4c6fc
test_pagination.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-913a6d6fb52d636429259085c589c6865b0857e58202d34fac1339bf450285f6
test_ping.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-15c2ed4498804ea5d1dfa7d35b59f22cc2f3e470fb38bda72a657d9cb68e893d
test_progress.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-adbb27a971d4f833b1e7bcadb8054ba7fda245e02e6e49b0aacbeaec620e205a
test_prompts.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-b5d6f2f0674e73ad377cfbfef36ba08265ff9ccc8d35148e892719c81eefd9dc
test_resources.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-b72ae88a1de4fa5bbd3e571601e51bc56f008819d8a9438ad9c4fc7abae56ecd
test_roots.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-4144b5ee9d2cd8d3ce9ca82fabcf7788b5c2bed02b835807f861f88a833abd9f
test_sampling.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-757030244444450a1c8f60bd70b1a2634aef9a4d37b46e362b86791c4def0428
test_timeouts.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-72f06b25a7e212f804121ef810f403578c4acd67b76b86ccda04618012a9930d
test_tools.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-c825e7b9ec5b747a4818b1917da57cc2145f982ac24237ed26449b9fff54ecfc
test_wire.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-163576971f36a4e8babc1808a586ab93dc81945e27aad2f238bd5b77fa441ac5
test_completion.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-b2a3c3e100d7439f4c5b30460f7f9cac4198c738e1345f86c129ad99b0388182
test_context.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-b5f7f25d66f0bed98387a6b630791fe45686eca3ae623b16d89da8a4d01b471e
test_prompts.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-9f0279943407f29b6afd521af337610582342d94bb2414550df04a7dd71aa259
test_resources.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-eaf82db32f7fd12ba4d3faa42251c691688a7653b108b7bee7653d2194b4550c
test_tools.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-599e5205a6a4a66559a3269a8bf513559691096890d5a84eaa977c46315cefd3
test_coverage.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-b60708448fb1fbd8bdc0fa50e9ae954833dcfdc17e67bb0ff9d544492b554c64
_event_store.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-e85438ac5a966440e483ab12caa004f91dc1ed6978883f9e54f917adaf77df86
_stdio_server.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-5a1e6fc4a93d8fdccc3f13bb1528e2e2b0104ea702d0ad45b11e57d731fae3b7
test_client_transport_http.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-adf5fa9c30305bc38e4d3bbf40b5d2a78c31d08471735f586b79c54e6c19813a
test_flows.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-49574413d58082b5b0d094a266103f9e61f3dac0f7bf3bdfacd1b2ad5a07a4c7
test_hosting_http.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-25c736951e89c76e3f06e5f6b36924f2fecb911b5bd98e4c74bf8249e8480fac
test_hosting_http_modern.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-122f8dfa74b6aa90e3cea5c8da3a5bf7829d8ea82e66caf2ab88c0e107858914
test_hosting_resume.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-85f9daa9bed5aaa4f0692a68b218329bd1d04c2bc0d72d270799730e3e7dfa22
test_hosting_session.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-23fb947502e0b134e093023f213e2e4e1a427996777d05da35dfe39499ad0741
test_legacy_wire.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-a4ea4ba5015e2bfa093bdc62b0bfb44f841d094f84ca23dca89eb81390d9c395
test_sse.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-b6e24975d18a40d61bf597c4517ff67abf1495842a7e1231c8e351e918d76bc8
test_stdio.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-e87dd7470dc7d367b9901aacfcc577a54864d05e8e50b4b9a25c6d1bfc543fb5
test_streamable_http.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-e1892a1b798bbf5427ad12171841966db1086dcbbbd3f6c12b4bcd76405530c7
test_1338_icons_and_metadata.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-53de3e67121aeb00ce6dbb30d46347b2186ef76867852be5bc6e90eb7eb23afc
test_141_resource_templates.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-045ed4cd08494a48b9629af457dcfd79eba43786c41e5178b64f38508d48e77f
test_152_resource_mime_type.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-d46a33f06c2ab296192ab76304cf0779b1a6caa43c7331a7027bb7cdd64da786
test_1574_resource_uri_validation.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-a8d9131fcbd49a2092f0ceeecbc328bcdc0e6d034f7305455ca7cacfb21ba0b4
test_192_request_id.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-544adf255ae3b6d59c63912723666f0e5cd700e1c1a1cc5009a74133332cd83e
test_342_base64_encoding.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-581cb7a6857ee8dfa59a17d334b0d7a6334bb111278a309afcdc3193b504b9da
test_552_windows_hang.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-75f0c3f56e683e126a1427b31c4c5c2745e19a517433a65dbda20eff519564f4
test_88_random_error.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-4e8132257776907428bdfd1d3671faed7b41a6347402e65f630f3a27a290edf5
test_server_discover.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-cdb3e450722a7944ee7a5075aea13da268ef672be1571d60c3c8af0829f21f36
test_server_listing.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-ff8ff493dbbee64e38f2bfc6c7ef81bb6902e9a956cbdd683c793d8338e20959
test_server_pagination.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-4e3b7b0ab2a4ac48fbb4cd6bae25c679bbbce16a71935471dae7f3a231018037
test_base.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-6ccb3f45c2025086b1ca3e761516276354e6cb47cb6f7322b884a8798e2b8c93
test_manager.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-56ef81c26fc0496c4ef1960022efb9de2a42e32ae97138833a8a590c4c332bd4
test_resource_template.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-1984957e9d1e3a3e525ce9a3707676cae0b81fd98ba0866abf8ce087e1c443b6
test_resources.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-9302faa5c101db8b0613f4dc392e67c546c6afcadd6363fe0ed2339692908b4a
test_elicitation.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-6cf9570e46bbc0eb2485392dfaa05780418f6295efc86d9f79bf047584880d54
test_func_metadata.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-441229bc4427c8d5e50cc305a07b43d42f2a292682cf4b0161e59b4f4685e9b8
test_integration.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-06853ee92cf7e60bc876d235eb6b3a0ec88c2719e5af44e0a46fb6b71c9ab3e2
test_server.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-c191383f010475fc22bf69d35f14f16d7e45098b05a1a0f03ad66d6c151d1f34
test_title.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-6c5353cc9f22206e5e538a60d2cb711d77c3c31fa2f0e8e888a7dd5ddf6b1c41
test_tool_manager.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-52a191f1e98e90ef36bd37740822f5c22a5d3ac583e52cda061b175b97fa1196
test_url_elicitation.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-c35abe7dd7e0015dc6b664d3c8c70f67445f06594578915db32ab0d594df50cb
test_url_elicitation_error_throw.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-bcf1dfe847d3bd25126e50fc6b7657cffd82d108800ea2f9a114dc53d5f21894
test_base.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-48b6e30e08db8e94e4b71e86c8159b98e5626c10bf980975d9c492d76228ca36
test_cancel_handling.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-c1f187f0c3cd17c4a86593f3fd13298817256f3be47c48065168959055ad0753
test_completion_with_context.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-7b9f06a84b3dc75676e1efff318066a211e3e0210ba14abd37626d431c400d43
test_connection.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-c85f47c7fa25e0dccd832e8de25b14888b28b4c4d65ca623c7fbffa5ed112d68
test_lifespan.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-1698ae8330ce4b282795333fd5e113b02a2a9923d4d9af2c58c8ea582dffe7c2
test_lowlevel_tool_annotations.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-d6a45a1ed1f4ebc14198da5fe66dab121d6fa342c6bda5a0d4d53b8696a84d75
test_otel.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-1eedeb92b5566383bacfc312766d739dbb7b9d071a9fa15ae65e2878b7d11b6f
test_read_resource.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-9d574f5a886cc1592bc72679d96913aa6bd82643d5285a116f8e5720d15e3b20
test_runner.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-51ad0fc280fc0fb1ed6039b7c5a26a6fafba8d8ffc8533cfa89cb9df18ea3f10
test_session.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-ed22c8fef52dc8c1d840dc0825bc375c48b67dcc2b468bab084aded3af06fdcf
test_sse_security.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-c4352f0bf263a51087a1f9dbd97e778a2fa4bf3fc0eced12e4bb84af262b7d8e
test_stateless_mode.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-9a5f67580e8993a1074a9b3a4ce460932af7f64bfac3c0ed94b56c842ef99101
test_stdio.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-3e62be39a5c1d8b8dfe922d017c0fae7b023fa1ffac872a0e046f13ef8ca899a
test_streamable_http_manager.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-ee0bac8ccf39135f1347002539cc4af38ee7e89b85595884e94fb4ab304a111d
test_streamable_http_modern.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-1e3c8aa3513b03c2ac6b7534d2b3a45dcbf59ef32f158028e9cc2fff0760893f
test_streamable_http_router.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-19d95b11a9e1249b7955143f91e9e2f482f5b09493dc88875c57b3ee08d58c08
test_validation.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-16566f05565314a7cce4b37e797a23f27f9db8c6026767f9b95d0e658de26588
test_dispatcher.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-490cfcfdfdaf03f631a5cc632ec5a47dee6aa063d13518834a7a1f1bb8493f3f
test_exceptions.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-421ba858fcd641365a9ddde0a2395e9db1e987a6552f5daf317fe6457e9925a7
test_inbound.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-dc61ed941aed9d8fc148f5bb36ee60a1a12c9a308fa5cd5dcbaabcbf9de6c934
test_jsonrpc_dispatcher.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-ce6a750fbce4c4bfa60b1845cdd92c08be0c2ed1fdcecdcb2a2efa24170efabd
test_otel.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-84f003b56f0cb53b4aa8d9c9b77caceba5fdebd6874448f02410dffb0815cbaa
test_peer.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-4a0f459cebe082a1548305dfc7e0392930c36ef29665ca62e9ba87051931d22b
test_sse.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-a2934f5f6ec610dff6774352c41b8c697b539614667643d69fd67f6fc6d7765e
test_streamable_http.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-57d1f3c64af36960aa61b1d77387fb6201b90fbc2f3d606bf2761315ce618cc5
test_version.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-d1aedee216e160300cab29a3c74113f7ecbabdf4f85af4920bd2a7dd1008fb13
test_examples.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-0741a50beca4b08d354933485499f735f9b5493841e8f3af0e89b16ae1e04af4
test_types.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-bd467a363c9f155a2e6a7716aeca0c351089135a53d09a66138cea4f16506ebd
test_windows.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-314c849a12297cace60d12dc9f5983e06fac171fdb2a7ed454a389c4e08aebb1
test_methods.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-784326fe173098cf01a6bf0e23d0d873d706a3e7183ca4cc7044bf7d1f25fc2d
test_parity.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-7ef69241093b7c6cbbdd5143f8ec60b0bf319c83970bf81f3d99c1ee37b6cff9
test_wire_frames.py https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-0228e2dde74590f01ce982796a371fc607b30a7ea5bf6f01bccf06c93d70cbdc
uv.lock https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-84321598744d84dbee2318e634c74c9aae39a1c253f1c4bd17ebf9ef2f807b11
.github/actions/conformance/client.pyhttps://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-823c6bf6584b99e84ad74327720949300eb016f0efd6497c143dbd56307b058f
View file https://github.com/modelcontextprotocol/python-sdk/blob/a6a3b862bf33adddde0856c29a6aedb2648ca691/.github/actions/conformance/client.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/modelcontextprotocol/python-sdk/pull/2973/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-823c6bf6584b99e84ad74327720949300eb016f0efd6497c143dbd56307b058f
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-823c6bf6584b99e84ad74327720949300eb016f0efd6497c143dbd56307b058f
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-823c6bf6584b99e84ad74327720949300eb016f0efd6497c143dbd56307b058f
.github/workflows/publish-pypi.ymlhttps://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-d4585bdbbb00b46a400628c271f195eb312333d18474299152a0b75fb1a7ec4b
View file https://github.com/modelcontextprotocol/python-sdk/blob/a6a3b862bf33adddde0856c29a6aedb2648ca691/.github/workflows/publish-pypi.yml
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/modelcontextprotocol/python-sdk/pull/2973/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-d4585bdbbb00b46a400628c271f195eb312333d18474299152a0b75fb1a7ec4b
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-d4585bdbbb00b46a400628c271f195eb312333d18474299152a0b75fb1a7ec4b
README.v2.mdhttps://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
View file https://github.com/modelcontextprotocol/python-sdk/blob/a6a3b862bf33adddde0856c29a6aedb2648ca691/README.v2.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/modelcontextprotocol/python-sdk/pull/2973/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-08a4c6619676fe12972d812470e6bfada7b31d3d2fe6e2cf8cf8a88c79e78503
docs/migration.mdhttps://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
View file https://github.com/modelcontextprotocol/python-sdk/blob/a6a3b862bf33adddde0856c29a6aedb2648ca691/docs/migration.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/modelcontextprotocol/python-sdk/pull/2973/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-758ba107a728fccfdf0d098b2c06ded59127dd53ea287d630f72fb51040bc72d
docs/testing.mdhttps://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-c22885d97fa21ad974a3f5f982d92b6f45edc251fd34bc14223492ebd7391245
View file https://github.com/modelcontextprotocol/python-sdk/blob/a6a3b862bf33adddde0856c29a6aedb2648ca691/docs/testing.md
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/modelcontextprotocol/python-sdk/pull/2973/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-c22885d97fa21ad974a3f5f982d92b6f45edc251fd34bc14223492ebd7391245
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-c22885d97fa21ad974a3f5f982d92b6f45edc251fd34bc14223492ebd7391245
examples/mcpserver/direct_call_tool_result_return.pyhttps://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-d015ad95be63944a2c91ff5d37622d9736c3464aeae7ed453f78b2340a6078f8
View file https://github.com/modelcontextprotocol/python-sdk/blob/a6a3b862bf33adddde0856c29a6aedb2648ca691/examples/mcpserver/direct_call_tool_result_return.py
Open in desktop https://desktop.github.com
https://github.co/hiddenchars
https://github.com/modelcontextprotocol/python-sdk/pull/2973/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-d015ad95be63944a2c91ff5d37622d9736c3464aeae7ed453f78b2340a6078f8
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-d015ad95be63944a2c91ff5d37622d9736c3464aeae7ed453f78b2340a6078f8
examples/servers/everything-server/mcp_everything_server/server.pyhttps://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-941c156700d335386d0fe33c0d46429e483b49dbcdc451f0e9b8cef9343cb056
View file https://github.com/modelcontextprotocol/python-sdk/blob/a6a3b862bf33adddde0856c29a6aedb2648ca691/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/2973/{{ revealButtonHref }}
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-941c156700d335386d0fe33c0d46429e483b49dbcdc451f0e9b8cef9343cb056
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-941c156700d335386d0fe33c0d46429e483b49dbcdc451f0e9b8cef9343cb056
https://github.com/modelcontextprotocol/python-sdk/pull/2973/files#diff-941c156700d335386d0fe33c0d46429e483b49dbcdc451f0e9b8cef9343cb056
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/2973/files
Please reload this pagehttps://github.com/modelcontextprotocol/python-sdk/pull/2973/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.