Release notes from fastmcp
Articles about Release notes from fastmcp
V4.1.0: Fourth and One
FastMCP 4.1.0 is a maintenance release at heart: a broad sweep of fixes across OpenAPI, proxies, auth, tasks, and the CLI, plus full Python 3.15 support. It doesn't change how most servers behave. A few security fixes do tighten inputs that FastMCP previously accepted, though, and our versioning policy keeps breaking changes out of patch releases, so this ships as a point-one release.
V3.4.8: Long Arm of the Patch
This release contains important security and bug fixes. All users are encouraged to upgrade. Thanks to our 2 contributors. What's Changed Security 🔒 [3.x] Apply Host/Origin protection settings to the SSE transport by @jlowin in #5428 [3.x] Exclude Cookie from forwarded HTTP headers by @jlowin in #5429 [3.x] Pass client CLI arguments literally to Windows .cmd wrappers by
V4.0.11: Fort Knocks
This release contains important security and bug fixes. All users are encouraged to upgrade. Thanks to our 10 contributors, including 6 first-time contributors. What's Changed Enhancements ✨ agents: make AGENTS.md the entry point and tighten repo skills by @zzstoatzz in #5278 ci: publish maintenance status and add MAINTAINING.md by @zzstoatzz in #5284 rate_limiting: deprecate a burst_capacity below 1 by
V4.0.10: Inside Job
Task-enabled tools now work behind search transforms and CodeMode: they're registered with the task backend even when hidden, and a tool, resource, or prompt that calls one through ctx.fastmcp.call_tool() (including the search call_tool proxy and CodeMode's execute) now gets its result instead of an empty task receipt. What's Changed Fixes 🐞 fix(stdio): tolerate a transport whose construction failed in del by @kbkb628 in #5256 tasks: register task tools hidden by search and CodeMode by @zzstoatzz in
V4.0.9: Cache and Release
ResourceTemplate now keeps its compiled URI pattern for its own lifetime while the shared cache is bounded again, preventing dynamic proxies from growing process memory without restoring the 4,096-template performance cliff. What's Changed Fixes 🐞 resources: keep each template's compiled pattern on the template by @zzstoatzz in #5253 Other Changes 🦾 docs: add v4.0.9 changelog entries by @zzstoatzz in #5258
V4.0.8: Take Three
Completion goes back to its 4.0.5 behavior. The visibility check added in 4.0.6 and reworked in 4.0.7 simulated list requests through middleware, and in 4.0.7 that could let a response cache serve hidden prompts to other clients. New tests pin both problems, and withholding suggestions for hidden references will return with a proper design.
V4.0.7: Double Take
Fixes two regressions from 4.0.6. The completion visibility check runs only the list-specific middleware hooks, so rate limits, logging, and metrics see a single request per completion again. Resource template patterns are cached, which makes template reads faster than in 4.0.5. What's Changed Fixes 🐞 completions: check reference visibility through typed list hooks only by @zzstoatzz in #5244 resources: cache compiled URI template patterns by @zzstoatzz in
V4.0.6: Comma Chameleon
Resource templates now match what clients actually send: literals raw or percent-encoded, and list query parameters exploded or comma-joined. A Client whose exit is cancelled releases its session instead of leaking it, completion no longer answers for prompts and templates the caller can't see, and JSON schemas with float or oversized length limits load instead of failing. The auth fixes cache OIDC discovery and keep Google tokens out of request URLs.
V4.0.5: No Country for Loose Ints
Tool parameters declared strict with Field(strict=True), StrictInt, or a strict model config are honored again, on both direct calls and task submission. Since the SDK v2 migration the server's lax default overrode them and silently coerced values. What's Changed Security 🔒 Add regression test for the unconfigured ID-JAG guard by @zzstoatzz in #5146 Fixes 🐞 Preserve field-level strict validation in lax mode by @zzstoatzz in
V4.0.4: Here Be No Dragons
OpenAPI request bodies get most of the attention in this patch: multipart string arrays are sent as repeated fields, whole-body arguments no longer clobber same-named HTTP parameters, dictionary bodies and raw content types survive intact, and JSON scalar bodies are encoded. On the auth side, OAuthProxy rejects ID-JAG tokens unless identity assertion is configured and refuses non-positive upstream token expiries. Clients now follow empty pagination cursors and servers reject malformed ones.