Skip to content

v0.8.0

Latest

Choose a tag to compare

@chr-hertel chr-hertel released this 25 Aug 07:02
e173367

2026-07-28 Support incl. Stateless HTTP Transport

With v0.8.0 we are shipping support for the 2026-07-28 Model Context Protocol specification, which includes a major rework on HTTP transport going stateless, while keeping older versions of the specifications alive and mostly compatible in userland code. Find a detailed CHANGELOG in the repository, and per PR below.

What's Changed

  • [Client] Reject non-positive timeouts in Configuration by @chr-hertel in #415
  • [Server] Throw the SDK's own RuntimeException from FileSessionStore by @chr-hertel in #404
  • [Schema] Always emit {} for empty tool schema properties by @BrocksiNet in #407
  • [Server] Handle malformed JSON-RPC input graceful by @chr-hertel in #412
  • [Client] Parse CRLF- and CR-delimited SSE events by @cbcoutinho in #401
  • [Capability] Preserve optional content fields in PromptResultFormatter by @chr-hertel in #406
  • [Client][Server] Add Roots support by @wachterjohannes in #395
  • [Schema] Add resource_link content block by @cancan101 in #400
  • [Client][Schema][Server] Implement protocol version negotiation by @chr-hertel in #403
  • [Server] Add ClientGateway::supportsSampling() by @chr-hertel in #418
  • [Tests] Introduce client-server integration tests by @chr-hertel in #419
  • [Client] Implement setMaxRetries connection retries by @chr-hertel in #413
  • [Schema][Server] feat: support sampling with tools by @wWzZb in #409
  • [Capability] Gate structuredContent on the protocol revision by @chr-hertel in #417
  • [Schema][Server] Harden sampling tools against the spec by @chr-hertel in #420
  • [Schema] Support PHPStan/Psalm integer range types by @wWzZb in #422
  • [Schema][Server] Close the 2025-11-25 schema gaps and add the 2026-07-28 surface by @chr-hertel in #421
  • [Tests] Bump MCP Inspector to 2.2.0 by @chr-hertel in #426
  • [Schema][Client][Server] Deprecate Roots, Sampling and Logging (SEP-2577) by @chr-hertel in #427
  • [Schema][Client][Server] Close MCP Apps gaps: extension negotiation checks by @chr-hertel in #429
  • [Schema] Drop SDK-only name pattern on resources and resource templates by @chr-hertel in #430
  • Tighten the 0.8.0 CHANGELOG section by @chr-hertel in #431
  • [Examples][Tests] Make the MCP Apps example work over HTTP, and pin it by @chr-hertel in #439
  • [Capability] Stop a union type losing a branch by @chr-hertel in #434
  • [Schema] Serialize a settingless extension as an object by @chr-hertel in #438
  • [Capability] Apply a parameter's complete schema definition by @chr-hertel in #435
  • [Schema] Omit the id of an error response that never had one by @chr-hertel in #442
  • [Schema][Server] Preserve request id in JSON-RPC error responses instead of fabricating id:"" by @valeriudev in #379
  • [Schema] Stop rejecting elicitation schemas the specification allows by @chr-hertel in #437
  • [Schema] Refuse an invalid x-mcp-header annotation at definition time by @chr-hertel in #441
  • [Tests] Pin that protected resource metadata advertises no scope of its own by @chr-hertel in #440
  • [Schema][Server] Add the extensions framework SEP-2133 defines by @chr-hertel in #443
  • [Server][Tests] Serve the modern (SEP-2575) lifecycle by @chr-hertel in #444
  • [Server][Tests] Validate the standard MCP request headers (SEP-2243) by @chr-hertel in #445
  • [Server][Tests] Add the multi round-trip request flow (SEP-2322) by @chr-hertel in #446
  • [Server] Close the conformance gaps in the modern lifecycle by @chr-hertel in #447
  • [Server] Stream a modern-era response when there is something to stream by @chr-hertel in #448
  • [CI] Matrix conformance jobs over both spec revisions by @chr-hertel in #458
  • [Server] Complete the multi round-trip request surface (SEP-2322) by @chr-hertel in #449
  • [CI] Version conformance baselines and split badges per spec by @chr-hertel in #459
  • [Server] Let a server say how long its answers stay fresh (SEP-2549) by @chr-hertel in #450
  • [Server] Make subscriptions/listen actually deliver (SEP-2575) by @chr-hertel in #451
  • [Tests] Fix resources-templates-read to return a resolved URI by @chr-hertel in #460
  • [Server] Carry trace context through a request (SEP-414) by @chr-hertel in #452
  • Add badge linebreak and v1.0 roadmap items by @chr-hertel in #461
  • [Server] Enforce x-mcp-header where a request uses it (SEP-2243) by @chr-hertel in #453
  • [Server] Serve an extension's methods under the modern lifecycle by @chr-hertel in #454
  • [Server] Serve both protocol eras from one endpoint by @chr-hertel in #455
  • [Client] Speak the 2026-07-28 lifecycle by @chr-hertel in #456
  • [Docs][Examples][CI] Document and gate the 2026-07-28 lifecycle by @chr-hertel in #457
  • [Docs] Render the guides with Zensical instead of phpDocumentor by @chr-hertel in #414
  • [Server] Serve ClientGateway::elicit() under the modern lifecycle by @chr-hertel in #466
  • [Server] Log expected tool failures at debug level by @ousamabenyounes in #433
  • [Server] Log failures in CompletionCompleteHandler by @chr-hertel in #471
  • [Changelog] Restructure 0.8.0 section by @chr-hertel in #478
  • [Server] Make resource subscribe/unsubscribe errors protocol-version-aware (SEP-2164) by @chr-hertel in #474
  • [Docs] Deprecation policy, SDK tier target, and CONTRIBUTING.md by @chr-hertel in #472
  • [Server][Client] Bridge W3C trace context between HTTP headers and _meta (SEP-414) by @chr-hertel in #473
  • [Server] Restrict FileSessionStore::gc() to owned session files by @chr-hertel in #479
  • [Capability] Suppress list-changed events during the initial registry load by @chr-hertel in #480
  • [Capability] Extract shared element name/description resolution by @chr-hertel in #481
  • [Server] Keep injectable parameters out of the published inputSchema by @chr-hertel in #482

New Contributors

Full Changelog: v0.7.1...v0.8.0