Commit Graph

104 Commits

Author SHA1 Message Date
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 0da9092037 Point pre-release install pins at 2.0.0b1 (#3039)
CI / checks (push) Failing after 0s
CI / all-green (push) Has been cancelled
2026-07-01 00:14:52 +01:00
Max 410cc0db31 Add v2 feedback issue template (#3037) 2026-07-01 00:03:11 +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
Jerome cf110e3214 Fix 404 links in v1 README to renamed example files (#2822)
Co-authored-by: Max Isbey <224885523+maxisbey@users.noreply.github.com>
2026-06-12 15:05:20 +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 Isbey 1e0b5c0479 fix: revert README.md to v1 documentation (#2045)
Co-authored-by: Marcelo Trylesinski <marcelotryle@gmail.com>
2026-02-12 16:22:07 +00:00
Marcelo Trylesinski 1a8c14a5b8 refactor: replace mcp.types as types to from mcp import types (#1986) 2026-02-03 16:42:29 +00:00
Marcelo Trylesinski 4fc49c62bd feat: add ClientRequestContext type alias for client-side handlers (#1989) 2026-02-03 17:37:38 +01:00
Marcelo Trylesinski 21822053df Support different transports in Client (#1972) 2026-01-30 12:11:27 +00:00
Max Isbey 2137c8fbdb fix: revert README to v1.x documentation on main (#1971)
Co-authored-by: Marcelo Trylesinski <marcelotryle@gmail.com>
2026-01-29 20:03:01 +00:00
Marcelo Trylesinski 65c614e48e Rename FastMCP to MCPServer (#1951) 2026-01-25 14:45:52 +01:00
Marcelo Trylesinski f0ab53e194 Add meta to Client methods (#1923) 2026-01-22 14:50:39 +01:00
Felix Weinberger d41d0c0128 chore: add D212 lint rule to enforce Google-style docstrings (#1892) 2026-01-16 16:10:52 +00:00
Marcelo Trylesinski 8adb5bdce8 refactor: move transport-specific parameters from FastMCP constructor to run() (#1898)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-16 15:16:20 +00:00
Marcelo Trylesinski e94b386a13 refactor: use snake case instead of camel case in types (#1894) 2026-01-16 15:51:27 +01:00
Marcelo Trylesinski edf0950a6a Revert mount_path parameter from FastMCP (#1881) 2026-01-16 13:23:08 +00:00
Felix Weinberger cfb2909631 fix: change Resource URI fields from AnyUrl to str (#1863) 2026-01-16 09:58:57 +01:00
Max Isbey c251e728f4 Add v2 development warning to README (#1862) 2026-01-15 15:39:02 +00:00
Marcelo Trylesinski a3a4b8d11a Add streamable_http_client which accepts httpx.AsyncClient instead of httpx_client_factory (#1177)
Co-authored-by: Felix Weinberger <fweinberger@anthropic.com>
2025-12-10 16:39:00 +00:00
Tyler Mailman 72a34002aa fix: add lifespan context manager to StreamableHTTP mounting examples (#1669)
Co-authored-by: TheMailmans <tyler@example.com>
Co-authored-by: Marcelo Trylesinski <marcelotryle@gmail.com>
2025-12-03 22:08:21 +00:00
Felix Weinberger fa851d93a2 feat: backwards-compatible create_message overloads for SEP-1577 (#1713) 2025-12-02 13:17:45 +00:00
Max Isbey c92bb2f7ff SEP-1686: Tasks (#1645) 2025-11-28 18:51:58 +00:00
Chris Coutinho 02b7889929 Implement SEP-1036: URL mode elicitation for secure out-of-band interactions (#1580)
Co-authored-by: Felix Weinberger <3823880+felixweinberger@users.noreply.github.com>
Co-authored-by: Felix Weinberger <fweinberger@anthropic.com>
2025-11-25 11:00:21 +00:00
Olivier Chafik 71c475588f Implement SEP-1577 - Sampling With Tools (#1594)
Co-authored-by: Felix Weinberger <fweinberger@anthropic.com>
Co-authored-by: Claude <noreply@anthropic.com>
2025-11-22 23:58:14 -05:00
adam jones fcffa14b5b docs: Update examples to use stateless HTTP with JSON responses (#1499)
Main branch checks / checks (push) Failing after 0s
2025-11-20 15:06:37 +00:00
Max Isbey 7ac40af302 fix: Update spec links to new modelcontextprotocol.io location (#1491) 2025-10-28 18:13:40 +00:00
Brandon Shar 1200ba0082 Allow CallToolResult to be returned directly to support _meta field for OpenAI Apps (#1459)
Co-authored-by: Max Isbey <224885523+maxisbey@users.noreply.github.com>
2025-10-21 18:52:08 +00:00
Felix Weinberger de89457683 fix: send params as empty object for list methods without cursor (#1453) 2025-10-14 11:11:38 +01:00
Felix Weinberger 7d335efd82 Update README to link to Python SDK documentation (#1430) 2025-10-06 14:50:17 +01:00
Peter Alexander 71889d7387 Implementation of SEP 973 - Additional metadata + icons support (#1357)
Main branch checks / checks (push) Failing after 1s
2025-09-24 20:29:04 +01:00
Tapan Chugh b85e7bd1a9 feat: Add SDK support for SEP-1034 default values in elicitation schemas (#1337)
Co-authored-by: Tapan Chugh <tapanc@cs.washington.edu>
Co-authored-by: Felix Weinberger <3823880+felixweinberger@users.noreply.github.com>
2025-09-24 16:33:45 +01:00
Max Isbey 4fb975c6dc feat: add paginated list decorators for prompts, resources, and tools (#1286)
Co-authored-by: Claude <noreply@anthropic.com>
2025-09-23 14:58:06 +01:00
Reid Geyer 346e794d59 docs: Update README to include link to API docs for #1329 (#1330) 2025-09-01 22:13:48 +01:00
jess 1644b822b3 changes structured temperature to not deadly (#1328) 2025-08-31 23:09:49 +00:00
Jerome 09e3a05e13 feat: Add CORS configuration for browser-based MCP clients (#1059)
Main branch checks / checks (push) Failing after 1s
Co-authored-by: Marcelo Trylesinski <marcelotryle@gmail.com>
Co-authored-by: Felix Weinberger <fweinberger@anthropic.com>
2025-08-21 14:34:45 +01:00
Felix Weinberger ff02c596a4 docs: clarify streamable_http_path configuration when mounting servers (#1172) 2025-08-21 14:15:37 +01:00
Marcelo Trylesinski c7671e470c Add pyright strict mode on the whole project (#1254) 2025-08-11 18:56:37 +01:00
Omer Korner d4759288d0 Improve README around the Context object (#1203) 2025-08-05 15:06:57 +01:00
Inna Harper 41184ba6c8 README - replace code snippets with examples -- auth examples (#1164) 2025-07-17 18:36:20 +01:00
Dagang Wei dd792977dd Docs: Update CallToolResult parsing in README (#812)
Co-authored-by: Felix Weinberger <fweinberger@anthropic.com>
2025-07-17 12:48:19 +01:00
Inna Harper e975d0550b README - replace code snippets with examples - streamable http (#1155) 2025-07-16 21:45:40 +01:00
Inna Harper 0b4ce00be2 README - replace code snippets with examples - add lowlevel to snippets (#1150) 2025-07-16 15:26:16 +01:00
Inna Harper 6566c08446 fix markdown error in README in main (#1147) 2025-07-15 13:23:37 +01:00
Pamela Fox 0130f5b12b Add streamable HTTP starlette example to Python SDK docs (#1111) 2025-07-15 11:39:59 +01:00
Inna Harper a10fec7fa6 README - replace code snippets with examples - direct execution and display utilities (#1137) 2025-07-14 15:54:36 +01:00
Inna Harper 9bf5160eea README - replace code snippets with examples (#1136) 2025-07-14 13:57:47 +01:00
John T ee54acbfa3 The lifespan_context object here is not a dictionary like the other e… (#1002)
Main branch checks / checks (push) Failing after 1s
Co-authored-by: ihrpr <inna@anthropic.com>
2025-07-10 11:55:34 +01:00
Stanley Law 6d092af6fd chore: add markdownlint on pre-commit hook and lint md files (#996)
Co-authored-by: Marcelo Trylesinski <marcelotryle@gmail.com>
2025-07-10 09:43:49 +01:00
shaun smith 08d364d005 Update text to make clear Elicitation is not directly associated with… (#1062) 2025-07-07 22:10:21 +01:00