Release 0.5.4 — fastmcp 4.0.0 - #33
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
fastmcp 4.0.0 was published and
fastmcp>=3.2admitted it at the nextuvxstart, so the server stopped importing: 4.0.0 removedfastmcp.tools.tool, whoseToolResultthe tool layer imports. The dependency is nowfastmcp>=4.0.0,<5.Breaking changes that touched this codebase
fastmcp.tools.toolremovedContext.list_roots()removedImageContent(mime_type=); tests moved tooutput_schema/input_schema/mime_type.Not hit: httpx→httpx2,
pydantic>=2.12floor,ctx.sample,as_proxy,import_server,serializer=,exclude_args=, the wider middleware traffic (onlyon_call_toolis used, unchanged).Relative paths are not a regression
Context.list_roots()is gone because the sessionless 2026-07-28 era has no back-channel — but the capability survives on handshake-era connections through the raw session, soroots/listis asked there. A client that advertises roots is answered exactly as under 3.x. Verified end-to-end against a real server subprocess launched withcwd=/, so the cwd fallback could not fake the pass:Also
serverInfo.versionhad always reported fastmcp's version (3.4.2, then4.0.0) becauseFastMCP()was constructed withoutversion=. It now reports0.5.4. This is visible to clients — anything keying off that field sees the version go backwards once.Verification
No tool name, parameter, or return shape changed. No new dependencies.
ImageContentstill serializesmimeTypeon the wire.New:
tests/test_client_root.py(9 tests) covering root resolution, non-file://roots, missing back-channel, missing session, and once-only caching.