Title: ci(conformance): add 2026-07-28 carried-forward leg + bump harness to 0.2.0-alpha.4 by maxisbey · Pull Request #2911 · modelcontextprotocol/python-sdk · GitHub
Open Graph Title: ci(conformance): add 2026-07-28 carried-forward leg + bump harness to 0.2.0-alpha.4 by maxisbey · Pull Request #2911 · modelcontextprotocol/python-sdk
X Title: ci(conformance): add 2026-07-28 carried-forward leg + bump harness to 0.2.0-alpha.4 by maxisbey · Pull Request #2911 · modelcontextprotocol/python-sdk
Description: Adds a --spec-version 2026-07-28 carried-forward leg to the conformance workflow (one extra step in each of the existing server/client jobs) with its own baseline file, and bumps the harness pin to 0.2.0-alpha.4. No new jobs, no second everything-server, no second client — same fixtures, same run-server.sh. Motivation and Context The existing --suite draft step only runs scenarios introduced in 2026-07-28. It doesn't re-run the 2025-era scenarios (tools-list, prompts-get-*, resources-*, …) at the 2026 wire, so a regression where a previously-working feature breaks under the stateless protocol wouldn't be caught. --suite all --spec-version 2026-07-28 runs every applicable scenario at the 2026 wire and is the same shape typescript-sdk is adopting on its v2-2026-07-28 branch. The 2026 leg needs its own expected-failures.2026-07-28.yml because baseline entries are keyed by scenario name only: a scenario that passes at its default version in the 2025 legs but fails when forced to 2026 (almost all of them today, since main has no stateless path) can't share a file with the 2025 legs — the passing leg would flag the entry stale. This lands the CI infra ahead of the stateless implementation work so those PRs can rebase onto it and burn the 2026 baseline down per milestone, instead of each one re-deriving the workflow shape. How Has This Been Tested? Ran all five workflow steps locally against a build of @modelcontextprotocol/conformance@0.2.0-alpha.4 (built from the v0.2.0-alpha.4 release commit 7a620cb): Leg Result server --suite active --expected-failures expected-failures.yml exit 0, 42/42 server --suite draft --expected-failures expected-failures.yml exit 0, 17 expected failures server --suite all --spec-version 2026-07-28 --expected-failures expected-failures.2026-07-28.yml exit 0, 38 expected failures client --suite all --expected-failures expected-failures.yml exit 0, 16 expected failures client --suite all --spec-version 2026-07-28 --expected-failures expected-failures.2026-07-28.yml exit 0, 27 expected failures The alpha.3 → alpha.4 bump required no entry changes to the existing expected-failures.yml (only the version string in the header comment). Breaking Changes None — CI-only. 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 client.py now reads MCP_CONFORMANCE_PROTOCOL_VERSION (always set by the harness; defaults to its LATEST_SPEC_VERSION when --spec-version is omitted) into a module-level PROTOCOL_VERSION and logs it. No handler branches on it yet — the 2026 client leg is fully baselined until the stateless client path lands and adds the branch it actually needs. run-server.sh already forwards "$@" to npx … server, so it needed no change for --spec-version. The conformance composite action (action.yml) doesn't expose a spec-version input; we invoke via npx so that doesn't affect us, but it's worth a follow-up upstream. AI Disclaimer
Open Graph Description: Adds a --spec-version 2026-07-28 carried-forward leg to the conformance workflow (one extra step in each of the existing server/client jobs) with its own baseline file, and bumps the harness pin to...
X Description: Adds a --spec-version 2026-07-28 carried-forward leg to the conformance workflow (one extra step in each of the existing server/client jobs) with its own baseline file, and bumps the harness pin to...
Opengraph URL: https://github.com/modelcontextprotocol/python-sdk/pull/2911
X: @github
Domain: github.com
| route-pattern | /:user_id/:repository/pull/:id/files(.:format) |
| route-controller | pull_requests |
| route-action | files |
| fetch-nonce | v2:88abc2b8-f009-f371-1a9b-2d93abb7a97f |
| current-catalog-service-hash | ae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b |
| request-id | AC56:198713:D80C28:121F68D:6A5A9184 |
| html-safe-nonce | d0775bbf915f76b6807e2aaedec72830ed4df4188d9600738facc71b4f244e6d |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJBQzU2OjE5ODcxMzpEODBDMjg6MTIxRjY4RDo2QTVBOTE4NCIsInZpc2l0b3JfaWQiOiIxNTczNTMxMDM4MTIyNjc2NjEyIiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | ddd86af2f9d60b372f45ebe17a56c90ade00fbc04cb32ddfa841a0ede3d27a1f |
| hovercard-subject-tag | pull_request:3898929703 |
| github-keyboard-shortcuts | repository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/modelcontextprotocol/python-sdk/pull/2911/files |
| twitter:image | https://avatars.githubusercontent.com/u/224885523?s=400&v=4 |
| twitter:card | summary_large_image |
| og:image | https://avatars.githubusercontent.com/u/224885523?s=400&v=4 |
| og:image:alt | Adds a --spec-version 2026-07-28 carried-forward leg to the conformance workflow (one extra step in each of the existing server/client jobs) with its own baseline file, and bumps the harness pin to... |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | 9989a1a1d89aa5a38a19e5d0c7ee88a8ffde84acde90048990492aae52f235db |
| turbo-cache-control | no-preview |
| diff-view | unified |
| go-import | github.com/modelcontextprotocol/python-sdk git https://github.com/modelcontextprotocol/python-sdk.git |
| octolytics-dimension-user_id | 182288589 |
| octolytics-dimension-user_login | modelcontextprotocol |
| octolytics-dimension-repository_id | 862584018 |
| octolytics-dimension-repository_nwo | modelcontextprotocol/python-sdk |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 862584018 |
| octolytics-dimension-repository_network_root_nwo | modelcontextprotocol/python-sdk |
| turbo-body-classes | logged-out env-production page-responsive full-width |
| disable-turbo | true |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | ba6769fbf719c56dbf7bed650ce454dafc5b1528 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width