Versioning Policy
Semantic Versioning
Major (x.0.0): Complete API redesigns Major versions represent fundamental shifts. FastMCP 2.x is entirely different from 1.x in both implementation and design philosophy. Minor (2.x.0): New features and evolution FastMCP tracks the current MCP Protocol version while serving earlier handshake versions alongside it. Building on MCP SDK v2, a FastMCP server negotiates the protocol era each client speaks — the sessionless2026-07-28 era and earlier session-based eras are both handled by the same server. New features and conventions from the spec flow through to FastMCP as they land; for the details of which capabilities are available on each era, see Upgrading from FastMCP 3.
Patch (2.0.x): Bug fixes and refinements
Patch versions contain only bug fixes without breaking changes. These are safe updates you can apply with confidence.
Breaking Changes
We permit breaking changes in minor versions because the MCP ecosystem is rapidly evolving. Refusing to break problematic APIs would accumulate design debt that eventually makes the framework unusable. Each breaking change represents a deliberate decision to keep FastMCP aligned with the ecosystem’s evolution. When breaking changes occur:- They only happen in minor versions (e.g., 2.3.x to 2.4.0)
- Release notes explain what changed and how to migrate
- We provide deprecation warnings at least 1 minor version in advance when possible
- Changes must substantially benefit users to justify disruption
FastMCPserver class,Clientclass, and FastMCPContext- Core MCP components:
Tool,Prompt,Resource,ResourceTemplate, and transports - Their public methods and documented behaviors
Production Use
Pin to exact versions:Creating Releases
Our release process is intentionally simple:- Create GitHub release with tag
vMAJOR.MINOR.PATCH(e.g.,v2.11.0) - Generate release notes automatically, and curate or add additional editorial information as needed
- GitHub releases automatically trigger PyPI deployments
main. Maintenance releases target their release branch, such as release/3.x for 3.x patches and release/2.x for 2.x patches. Stable releases from main open a PR that syncs the release commit to published-docs after PyPI publishing succeeds; merging that PR publishes the live docs. Prereleases skip the automatic PR and use the same PR-based sync when their docs are ready to publish. Maintenance releases publish packages and GitHub release notes without repointing the live docs branch.
This automation lets maintainers focus on code quality rather than release mechanics.
Release Cadence
We follow a feature-driven release cadence rather than a fixed schedule. Minor versions ship approximately every 3-4 weeks when significant functionality is ready. Patch releases ship promptly for:- Critical bug fixes
- Security updates (immediate release)
- Regression fixes

