github PrefectHQ/fastmcp v4.2.0a3
v4.2.0a3: A Particular Set of Skills

pre-release4 hours ago

FastMCP 4.2.0a3 consolidates skills around Skill, SkillCatalogProvider, and the new strict SkillsDirectoryProvider in fastmcp.skills.provider. Directory loading validates each skill before publication, and skills with structured metadata or YAML allowed-tools lists are accepted without changing their values. This alpha also fixes stale proxy discovery caches, preserves OpenAPI schema references and explicit null values, and improves client connection recovery. Skills support remains experimental; this prerelease is intended for integration testing.

If you import the 4.1 skills providers directly, they keep their behavior in 4.2 and now warn ahead of removal in 4.3. Move directory loading to from fastmcp.skills.provider import SkillsDirectoryProvider; its startup errors and the legacy providers' warnings identify folders that need fixing. For a single skill, use Skill.from_directory(...) with SkillCatalogProvider from fastmcp.skills.provider. Client.list_skill_resources() remains available for servers without the Skills extension. The old experimental_skills=True path redirects to the new provider for the base class and rejects subclasses to preserve access controls. Legacy Skill wire-model construction still works with a warning, wire entries retain isinstance(entry, Skill) behavior, and existing Pydantic Skill fields still validate wire payloads. Use MCPSkill for wire entries, annotations, and checks, and Skill for authoring. For manifest metadata on resource-only servers, read skill://<name>/_manifest with client.read_resource() and parse its JSON; client.get_skill() requires the Skills extension, while client.read_skill() downloads and validates the whole skill.

Since a2, ClientGroup retains known tool routes after its context exits, OpenAPI tool inputs omit readOnly properties, and header and path parameters follow their declared simple serialization style. OAuth consent bindings survive concurrent approvals, exception middleware matches subclasses, and empty logging method filters mean “log nothing.”

Thanks to our 46 contributors, including 29 first-time contributors.

What's Changed

Breaking Changes ⚠️

  • Make Skill a storage-neutral object with folders as one loader by @zzstoatzz in #6065

Enhancements ✨

Security 🔒

  • Verify advertised skill frontmatter when reading content by @zzstoatzz in #6090
  • Check skill limits before reading directory and remote files by @zzstoatzz in #6092
  • fix: preserve _list_query_params in FastMCPProviderResourceTemplate.wrap by @RS-ITACHI in #6130
  • Read composite action inputs from env and pin actions by digest by @gaker in #6168
  • Scope the /marvin App token to the permissions it uses by @zzstoatzz in #6206

Fixes 🐞

Docs 📚

Other Changes 🦾

  • chore(deps): Update dependency ruff to v0.17.2 by @prefect-renovate in #6233
  • chore(deps): Pin dependencies by @prefect-renovate in #6064

New Contributors

Full Changelog: v4.1.6...v4.2.0a3

Don't miss a new fastmcp release

NewReleases is sending notifications on new releases.