Releases: jlowin/fastmcp
v2.5.1: Route Awakening (Part 2)
2.5.0: Route Awakening
This release introduces completely new tools for generating and customizing MCP servers from OpenAPI specs and FastAPI apps, including popular requests like mechanisms for determining what routes map to what MCP components; renaming routes; and customizing the generated MCP components.
What's Changed
New Features 🎉
- Add FastMCP 1.0 server support for in-memory Client / Testing by @jlowin in #539
- Minor addition: add transport to stdio server in mcpconfig, with default by @jlowin in #555
- Raise an error if a Client is created with no servers in config by @jlowin in #554
- Expose model preferences in
Context.sample
for flexible model selection. by @davenpi in #542 - Ensure custom routes are respected by @jlowin in #558
- Add client method to send cancellation notifications by @davenpi in #563
- Enhance route map logic for include/exclude OpenAPI routes by @jlowin in #564
- Add tag-based route maps by @jlowin in #565
- Add advanced control of openAPI route creation by @jlowin in #566
- Make error masking configurable by @jlowin in #550
- Ensure client headers are passed through to remote servers by @jlowin in #575
- Use lowercase name for headers when comparing by @jlowin in #576
- Permit more flexible name generation for OpenAPI servers by @jlowin in #578
- Ensure that tools/templates/prompts are compatible with callable objects by @jlowin in #579
Docs 📚
- Add version badge for prefix formats by @jlowin in #537
- Add versioning note to docs by @jlowin in #551
- Bump 2.3.6 references to 2.4.0 by @jlowin in #567
Full Changelog: v2.4.0...v2.5.0
v2.4.0: Config and Conquer
Note: this release includes a backwards-incompatible change to how resources are prefixed when mounted in composed servers. However, it is only backwards-incompatible if users were running tests or manually loading resources by prefixed key; LLMs should not have any issue discovering the new route. See https://gofastmcp.com/servers/composition#resource-prefix-formats for more.
What's Changed
New Features 🎉
- Allow * Methods and all routes as tools shortcuts by @jlowin in #520
- Improved support for config dicts by @jlowin in #522
- Support creating clients from MCP config dicts, including multi-server clients by @jlowin in #527
- Make resource prefix format configurable by @jlowin in #534
Fixes 🐞
Breaking Changes 🛫
Docs 📚
Other Changes 🦾
- Ensure openapi path params are handled properly by @jlowin in #519
- better error when missing lifespan by @zzstoatzz in #521
Full Changelog: v2.3.5...v2.4.0
v2.3.5: Making Progress
What's Changed
New Features 🎉
- support messages in progress notifications by @rickygenhealth in #471
- feat: Add middleware option in server.run by @Maxi91f in #475
- Add lifespan property to app by @jlowin in #483
- Update
fastmcp run
to work with remote servers by @jlowin in #491 - Add FastMCP.as_proxy() by @jlowin in #490
- Infer sse transport from urls containing /sse by @jlowin in #512
- Add progress handler to client by @jlowin in #513
- Store the initialize result on the client by @jlowin in #509
Fixes 🐞
Docs 📚
- Update transport docs by @jlowin in #458
- update proxy docs + example by @zzstoatzz in #460
- doc(asgi): Change custom route example to PlainTextResponse by @mcw0933 in #477
- Store FastMCP instance on app.state.fastmcp_server by @jlowin in #489
- Improve AGENTS.md overview by @jlowin in #492
- Update release numbers for anticipated version by @jlowin in #516
Other Changes 🦾
- run tests on all PRs by @jlowin in #468
- add null check by @zzstoatzz in #473
- strict typing for
server.py
by @zzstoatzz in #476 - Doc(quickstart): Fix import statements by @mai-nakagawa in #479
- Add labeler by @jlowin in #484
- Fix flaky timeout test by increasing timeout (#474) by @davenpi in #486
- Skipping
test_permission_error
if runner is root. by @ZiadAmerr in #502 - allow passing full uvicorn config by @zzstoatzz in #504
- Skip timeout tests on windows by @jlowin in #514
New Contributors
- @rickygenhealth made their first contribution in #471
- @Maxi91f made their first contribution in #475
- @mcw0933 made their first contribution in #477
- @mai-nakagawa made their first contribution in #479
- @ZiadAmerr made their first contribution in #502
Full Changelog: v2.3.4...v2.3.5
v2.3.4: Error Today, Gone Tomorrow
What's Changed
New Features 🎉
- logging stack trace for easier debugging by @jbkoh in #413
- add missing StreamableHttpTransport in client exports by @yihuang in #408
- Improve error handling for tools and resources by @jlowin in #434
- feat: add support for removing tools from server by @davenpi in #437
- Prune titles from JSONSchemas by @jlowin in #449
- Declare toolsChanged capability for stdio server. by @davenpi in #450
- Improve handling of exceptiongroups when raised in clients by @jlowin in #452
- Add timeout support to client by @jlowin in #455
Fixes 🐞
- Pin to mcp 1.8.1 to resolve callback deadlocks with SHTTP by @jlowin in #427
- Add reprs for OpenAPI objects by @jlowin in #447
- Ensure openapi defs for structured objects are loaded properly by @jlowin in #448
- Ensure tests run against correct python version by @jlowin in #454
- Ensure result is only returned if a new key was found by @jlowin in #456
Docs 📚
Other Changes 🦾
- Deprecate passing settings to the FastMCP instance by @jlowin in #424
- Add path prefix to test by @jlowin in #432
New Contributors
Full Changelog: v2.3.3...v2.3.4
v2.3.3: SSE you later
This is a hotfix for a bug introduced in 2.3.2 that broke SSE servers
What's Changed
Fixes 🐞
Docs 📚
Other Changes 🦾
Full Changelog: v2.3.2...v2.3.3
v2.3.2: Stuck in the Middleware With You
What's Changed
New Features 🎉
- Allow users to pass middleware to starlette app constructors by @jlowin in #398
- Deprecate transport-specific methods on FastMCP server by @jlowin in #401
Docs 📚
Other Changes 🦾
- Adding 23 tests for CLI by @didier-durand in #394
Full Changelog: v2.3.1...v2.3.2
v2.3.1: For Good-nests Sake
This release primarily patches a long-standing bug with nested ASGI SSE servers.
What's Changed
Fixes 🐞
- Fix tool result serialization when the tool returns a list by @strawgate in #379
- Ensure FastMCP handles nested SSE and SHTTP apps properly in ASGI frameworks by @jlowin in #390
Docs 📚
- Update transport docs by @jlowin in #377
- Add llms.txt to docs by @jlowin in #384
- Fixing various text typos by @didier-durand in #385
Other Changes 🦾
- Adding a few tests to Image type by @didier-durand in #387
- Adding tests for TimedCache by @didier-durand in #388
New Contributors
- @didier-durand made their first contribution in #385
Full Changelog: v2.3.0...v2.3.1
v2.3.0: Stream Me Up, Scotty
What's Changed
New Features 🎉
- Streamable HTTP support by @jlowin in #361
- feat: Streamable HTTP client support by @Akshit97 in #304
- Always apply request context middleware by @jlowin in #357
- Move sse app to http by @jlowin in #358
- Add integration tests for SSE by @jlowin in #359
Fixes 🐞
- Ensure a response is returned from sse endpoint by @jlowin in #356
- Fix import error by @jlowin in #369
- add test-loop-scope session by @jlowin in #350
Breaking Changes 🛫
Docs 📚
- Add dependency docs for context / http requests by @jlowin in #349
- Note that get_http_request is deprecated by @jlowin in #351
- Update fastmcp.mdx by @jlowin in #343
Other Changes 🦾
- Update mcp pin to 1.8 by @jlowin in #376
- Bump mcp dependency to git commit that includes streamable client by @jlowin in #364
- Pin mcp commit without uv-specific config by @jlowin in #366
- Move vendored file by @jlowin in #367
New Contributors
Full Changelog: v2.2.10...v2.3.0
v2.3.0-rc.2
Merge pull request #366 from jlowin/git-commit Pin mcp commit without uv-specific config