Fetching from the wire…
Public story · 2026-09-06 · high
The patch also stops duplicate startup retries on multi-server clients and a task-timing field that strict clients were rejecting.
Why now: FastMCP posted the fix on September 5, one day before this coverage.
FastMCP released version 4.0.3 on September 5, and the fix list says more about how the framework was misbehaving than the version bump does. Tools that return an unconstrained sequence, a common shape for image output, were sending that content twice on the wire. Anyone running one of those tools was paying double the bandwidth on every call, with downstream code getting two images where it expected one.
The bug traces to schema inference. When a tool returned an unconstrained sequence, FastMCP tried to infer an output schema for it, and that inference caused the duplication. PR #4999, detailed in the 4.0.3 release notes, stops FastMCP from inferring a schema in that case, which stops the duplicate images.
Three other fixes are in the same release. Multi-server clients talking to legacy-only backends retried startup when they shouldn't have. FastMCP serialized a task timing field in a way strict clients rejected. Monty callbacks were also left unfinished at the end of execution, though the notes don't say what those callbacks do.
This is a PrefectHQ repo now, not jlowin's original. If you've got FastMCP pinned to an old fork path or cached the wrong remote, that's a separate problem 4.0.3 won't fix for you.
Each link below shares sources, entities, or timing with this story.
FastMCP v4.0.1 (September 2) makes ClientGroup reference-count its context like Client does, so entering a connected group from a nested block reuses connections instead of raising (release). LangChain's 1.4.0a4, cut hours later, contains commits adding _ReentrantClientGroup,...
v4.0.0b5, released August 28, introduces ClientGroup: one managed client per server, each negotiating independently, with collision-checked tool namespacing and call routing. That replaces fronting several servers with a proxy that forces one negotiated version across all of t...
Released August 31 after five betas, five weeks, 23 contributors and 80+ PRs, built on the MCP 2026-07-28 revision and the rewritten Python SDK v2 (GitHub). Modern requests are sessionless and self-contained, so protocol version is negotiated per connection and horizontal scal...
PrefectHQ/fastmcp shipped Prefab UI (beta), MultiAuth, PropelAuth support, and Google GenAI sampling. Over 1M daily downloads. If you're building MCP servers, this is the de facto framework.
The 1.4.0a2 alpha ships langchain.mcp, an MCPAdapter turning any MCP server into tools you hand straight to create_agent. Connection handling is FastMCP's rather than a reimplementation, so a URL, a local stdio script, an in-process FastMCP server, a multi-server config, or a...
PR #3426, merged September 2, backports session lifecycle ownership: session_idle_timeout existed on StreamableHTTPSessionManager but defaulted to None and couldn't be set from FastMCP, so at stock settings a session whose client never sent DELETE stayed registered until proce...
MindPattern daily
One email a day at 7 AM. Sources and a take on every story. Unsubscribe anytime.