Versioning and compatibility policy
July 30, 2026 ยท View on GitHub
mcp_dart and mcp_dart_cli are independently versioned packages. The SDK
uses semantic versioning. The CLI remains on the 0.x line and treats minor
releases as potentially breaking until it reaches 1.0.0.
SDK compatibility
For mcp_dart:
- Patch releases contain backward-compatible fixes and documentation updates.
- Minor releases add backward-compatible APIs and protocol support.
- Major releases may contain approved breaking changes.
- Prereleases use Dart-compatible suffixes such as
-dev.1and are not production-stable contracts.
A breaking SDK change includes:
- removing or incompatibly changing a public API;
- changing an existing default in a way that breaks valid applications;
- dropping a supported MCP initialization version;
- changing established wire behavior contrary to a previously supported specification;
- raising the minimum Dart SDK or a dependency constraint so existing supported applications can no longer resolve the package.
Adding support for a new dated MCP specification is not itself breaking when the existing profiles and initialization versions remain available.
Deprecation and migration
Public APIs are deprecated with Dart's @Deprecated annotation and migration
guidance before removal whenever protocol correctness and security permit.
Deprecated MCP features are surfaced according to the official feature
lifecycle, while explicit legacy profiles preserve supported older wire
behavior.
Approved breaking changes require:
- a major SDK version;
- a changelog section naming the affected APIs and behavior;
- a migration guide or focused migration section;
- public API compatibility and multi-protocol tests that make the boundary explicit.
An immediate security or specification-correctness fix may narrow unsafe behavior without a deprecation window. The release notes must explain the risk, the affected versions, and the safe migration.
Release communication
Every release has an exact version heading in the relevant changelog, an
immutable Git tag and GitHub release, and package metadata that identifies the
source repository. Stable releases are built only from main through the
reviewed process in tool/release/README.md.
Protocol profiles are versioned independently from package releases.
Applications should select McpProtocol.stable, McpProtocol.legacy, or
McpProtocol.require2026 instead of inferring wire behavior from the package
version.