Max Isbey
8900f2527c
Add mcp-codemod, an automated v1 to v2 migration tool
...
A new `mcp-codemod` workspace package (`uvx mcp-codemod v1-to-v2 ./src`)
that rewrites every v1 -> v2 change whose meaning is unambiguous from the
file alone, and inserts a `# mcp-codemod:` comment above every site it
recognized but would not guess at. Built on libCST.
Names are resolved through each file's imports, never matched as text, so
an aliased import or an unrelated symbol that shares a name with an SDK
one is never touched. The camelCase to snake_case rename is restricted to
the field names v1's `mcp.types` actually declared. Anything whose correct
rewrite depends on information that is not in the file -- the lowlevel
decorator to `on_*` relocation, the transport keywords on the `MCPServer`
constructor -- is left exactly as written and marked instead, so the
remaining work is one grep. Re-running on the output is a no-op.
The mapping tables are pinned against the installed v2 package by ratchet
tests so they cannot silently drift: every rename target must resolve,
every removed API must be provably absent, and no flagged constructor
keyword may survive on `MCPServer.__init__`. Measured against the example
files that exist on both `v1.x` and `main` (whose diff is the hand-written
migration), the codemod fully reproduces 13 of the 51 with a real
migration diff, improves 35 more, and makes none worse.
Also adds an "Automated migration" section to docs/migration.md, a mention
of the tool in README.v2.md, and the package to the publish workflow's
build step (the PyPI project and its trusted publisher must exist before a
release is tagged with this in it).
2026-07-01 12:08:22 +00:00
Max
410cc0db31
Add v2 feedback issue template ( #3037 )
2026-07-01 00:03:11 +01:00
Max
ca10dade2c
Serve subscriptions/listen with a pluggable event bus (SEP-2575) ( #3035 )
2026-06-30 23:01:04 +01:00
Max
48ef569f7e
Validate Mcp-Param-* headers server-side on the 2026-07-28 HTTP path (SEP-2243) ( #3033 )
2026-06-30 21:39:32 +01:00
Den Delimarsky
985652491a
Add Cloudflare Pages docs preview with /preview-docs slash command ( #3028 )
2026-06-30 16:47:21 +01:00
Max
0b200ef03b
Surface skipped conformance scenarios as baselined known failures ( #3030 )
2026-06-30 13:07:05 +01:00
Max
8d0f928e40
Pass InputRequiredResult through the MCPServer prompt and resource pipelines ( #3020 )
2026-06-29 16:50:58 +01:00
Max
f2e63c979a
Promote the v2 README to README.md ahead of the first v2 beta ( #3014 )
2026-06-29 12:01:54 +01:00
Max
fe9723853d
Wire SEP-990 enterprise-managed-authorization conformance fixture ( #3007 )
2026-06-29 10:42:37 +01:00
Max
067f90578c
Add SSE response mode to the 2026 streamable-HTTP server entry ( #3001 )
2026-06-26 19:09:08 +02:00
Max
08b62308d4
Client auto-resolves InputRequiredResult via existing callbacks (SEP-2322) ( #2998 )
2026-06-26 17:35:23 +02:00
Max
3caa445c6c
Pin conformance harness by commit SHA (ed314a73) instead of PR number ( #3000 )
2026-06-26 17:01:42 +02:00
Marcelo Trylesinski
5b2713d40c
Mirror x-mcp-header tool arguments into Mcp-Param-* request headers (SEP-2243) ( #2990 )
2026-06-26 14:36:56 +02:00
Max
3a8da8c0c3
Fix docs/release follow-ups from the mcp-types package split ( #2977 )
2026-06-26 13:16:09 +02:00
Max
411a6d3980
Rebuild the docs around tested examples; shrink README.v2.md to a pitch ( #2978 )
2026-06-26 12:49:19 +02:00
Max
4caa41f6d5
Add story-style examples suite (27 stories + harness + CI) ( #2957 )
2026-06-26 12:02:27 +02:00
Marcelo Trylesinski
e9cd1692b0
Remove comment-on-release workflow ( #2985 )
2026-06-26 09:00:51 +00:00
Max
587340279e
Conformance burn-down: server-side InputRequiredResult, Mcp-Method/Name validation, x-mcp-header filter (14 scenarios → green) ( #2974 )
CI / checks (push) Failing after 0s
CI / all-green (push) Has been cancelled
2026-06-26 09:51:59 +02:00
Marcelo Trylesinski
0ee7f1b293
Split protocol types into a standalone mcp-types package ( #2973 )
2026-06-25 19:18:38 +02:00
Max
f226d00d0a
Client-side 2026-07-28 support: .discover()/.adopt() + Client(mode=); request-metadata green ( #2950 )
2026-06-25 16:09:23 +02:00
Max
5e013d9c54
OAuth client: harden SEP-2352/SEP-2350 edge cases; fix conformance comment ( #2936 )
2026-06-22 14:45:20 +01:00
Max
2397319a68
Server-side 2026-07-28 stateless support: classifier, driver split, server/discover ( #2928 )
2026-06-21 19:34:17 +01:00
Marcelo Trylesinski
44724284b3
Bind client credentials to their authorization server (SEP-2352) ( #2933 )
2026-06-20 18:47:22 +01:00
Marcelo Trylesinski
5734acf18e
Pass json-schema-ref-no-deref conformance scenario (SEP-2106) ( #2924 )
2026-06-20 18:23:58 +02:00
Marcelo Trylesinski
cf41441e44
Send application_type during Dynamic Client Registration (SEP-837) ( #2930 )
2026-06-20 18:19:12 +02:00
Max
f5fe42f5a4
ci(conformance): bump harness to 0.2.0-alpha.5 preview ( #2927 )
2026-06-20 16:54:50 +01:00
Marcelo Trylesinski
48cf4950dc
Validate the iss authorization-response parameter (RFC 9207 / SEP-2468) ( #2921 )
2026-06-20 17:54:18 +02:00
Marcelo Trylesinski
f253682393
Return -32602 for resource not found (SEP-2164) ( #2920 )
2026-06-20 16:55:23 +02:00
Marcelo Trylesinski
0fa03ec69f
Add uv ecosystem to dependabot and drop weekly lockfile workflow ( #2919 )
2026-06-20 15:13:17 +01:00
Max
84bf9bde05
First end-to-end 2026-07-28 stateless tools/call (experimental entry + ClientSession pin) ( #2917 )
2026-06-20 14:55:59 +01:00
Max
510832aa45
Re-vendor 2026-07-28 schema and absorb spec #2907 error-code renumber ( #2912 )
2026-06-19 15:46:15 +01:00
Max
9e6d00318c
ci(conformance): add 2026-07-28 carried-forward leg + bump harness to 0.2.0-alpha.4 ( #2911 )
2026-06-19 14:48:21 +01:00
Max
65be5a7147
Protocol types for 2026-07-28: superset monolith, committed per-version packages, and wire-method maps ( #2849 )
2026-06-16 17:40:14 +01:00
dependabot[bot]
2693fb95ae
chore(deps): bump the github-actions group across 1 directory with 9 updates ( #2636 )
...
Signed-off-by: dependabot[bot] <support@github.com >
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com >
Co-authored-by: Marcelo Trylesinski <marcelotryle@gmail.com >
2026-06-16 09:45:21 +01:00
Max
255650dcd1
ci(conformance): run server --suite draft and baseline the 2026-07-28 scenarios ( #2878 )
2026-06-15 16:45:29 +01:00
Max
a3689ab493
ci(conformance): pin harness to 0.2.0-alpha.3 with expected-failures baseline ( #2877 )
2026-06-15 15:40:42 +01:00
Max
1e21814ed5
Update the v2 status banner and pin spawned environments to the running SDK version ( #2834 )
CI / checks (push) Failing after 0s
CI / all-green (push) Has been cancelled
2026-06-11 09:41:19 +01:00
Max
e196857bc9
Prepare release machinery for v2 pre-releases ( #2831 )
2026-06-11 09:03:27 +01:00
Max
5d826490b6
[v2] Dispatcher/ServerRunner receive-path swap — replaces BaseSession ( #2710 )
2026-06-09 12:58:47 +01:00
Marcelo Trylesinski
e8e6484278
ci: add zizmor for GitHub Actions security analysis ( #2648 )
2026-05-20 17:06:57 +02:00
Max
f4753440da
ci: deploy docs to py.sdk.modelcontextprotocol.io via Pages artifact (v1 at /, v2 at /v2/) ( #2634 )
2026-05-18 15:28:13 +01:00
Max Isbey
fb2276b95f
ci: remove claude-code-review workflow ( #2359 )
2026-03-27 14:02:41 +00:00
Felix Weinberger
7ba4fb881d
ci: skip claude.yml when comment is '@claude review' ( #2337 )
2026-03-24 20:36:36 +00:00
Max Isbey
7ba41dcfae
fix: make local coverage runs reliable ( #2236 )
2026-03-06 17:24:18 +00:00
Max Isbey
62575edabd
ci: sign weekly lockfile commits as github-actions[bot] ( #2148 )
2026-02-26 15:36:46 +00:00
Jonathan Hefner
0fe16dd5fd
fix: silence mkdocs social plugin warnings in strict mode ( #2109 )
2026-02-19 23:12:51 +01:00
Max Isbey
43d709c976
ci: pin all GitHub Actions to commit SHAs ( #2088 )
2026-02-18 19:42:00 +00:00
Max Isbey
29a14ab9e5
fix: skip readme-v1-frozen in CI and add diff-based README.md check ( #2048 )
2026-02-13 10:30:30 +00:00
Felix Weinberger
239d682b6f
fix: pass conformance auth scenarios, add RFC 8707 resource validation ( #2010 )
2026-02-09 11:41:03 +00:00
Marcelo Trylesinski
4598ad9361
ci: disable conformance tests ( #2007 )
2026-02-07 14:12:19 +01:00