Stable SDK targets
cxxmcp::protocol, cxxmcp::transport,
cxxmcp::handler, cxxmcp::peer,
cxxmcp::service, cxxmcp::client,
cxxmcp::server, and cxxmcp::sdk.
cxxmcp treats API compatibility, protocol support, package-smoke evidence, and release-gate artifacts as one release decision.
New application code should use Peer and
Service over public headers under cxxmcp/...
and public CMake targets.
cxxmcp::protocol, cxxmcp::transport,
cxxmcp::handler, cxxmcp::peer,
cxxmcp::service, cxxmcp::client,
cxxmcp::server, and cxxmcp::sdk.
Gateway/runtime/CLI/plugin tooling is released outside this SDK repository and does not define the core contract.
The package, repository, installed include path, and CMake target
prefix use cxxmcp. The C++ namespace is intentionally
mcp and is part of the stable source API; changing it is
a breaking rename, not a cosmetic cleanup.
Public SDK headers compile as C++17 by default. Once a stable release line is declared, source compatibility follows semantic versioning: minor releases add compatible APIs, patch releases fix behavior or packaging, and source-breaking removals wait for a major release.
Public renames are expected to be additive first: add the new spelling, keep the old spelling as an alias or forwarding wrapper, mark it deprecated where possible, document the migration, and remove it only in the next major release.
cxxmcp builds and releases static libraries by default. ABI stability is not claimed for static-library releases. If shared libraries become stable release artifacts later, they need a separate ABI policy before ABI compatibility is advertised.
cxxmcp follows published MCP protocol snapshots. It does not mint custom MCP protocol versions or alternate wire formats. Unsupported protocol versions fail fast with protocol or transport validation errors instead of silently downgrading to an unadvertised dialect.
A release may claim support only for matrix entries where the release-blocking gates passed for that exact commit. The intended public matrix covers Windows/MSVC, Linux/GCC, Linux/Clang, and macOS/AppleClang with the documented generator and runtime-library combinations.
package_smoke evidence.
Fact-standard or curated-registry claims require evidence beyond this
repository. Project-owned examples are useful smoke tests, but they do
not count as independent public downstream adoption.
docs/adoption_ledger.md records the current adoption
evidence and must stay conservative until real external users can be
cited.
Alpha may move APIs with changelog visibility. Beta APIs should be mostly settled, and breaking changes need migration text.
RC is for fixes and release evidence. Stable freezes public source compatibility for the minor line except for unavoidable security or protocol compliance fixes.