Skip to content

[Schema][Client] Bump default spec version - #550

Open
chr-hertel wants to merge 2 commits into
client-version-negotiationfrom
default-spec-version-sliced
Open

chr-hertel wants to merge 2 commits into
client-version-negotiationfrom
default-spec-version-sliced

Conversation

@chr-hertel

Copy link
Copy Markdown
Member

Replaces #537

@chr-hertel chr-hertel added Client Issues & PRs related to the Client component Schema Issues & PRs related to the Schema component breaking change Breaking the Backwards Compatibility Promise labels Oct 7, 2026
@chr-hertel
chr-hertel added this pull request to stack #549 October 7, 2026 22:04
@chr-hertel chr-hertel added the 2026-07-28 All issues and PRs related to the spec release 2026-07-28 label Oct 7, 2026
@chr-hertel chr-hertel added this to the 0.9.0 milestone Oct 7, 2026
@chr-hertel
chr-hertel force-pushed the default-spec-version-sliced branch 2 times, most recently from 4f6bbfa to 74fdbc7 Compare October 7, 2026 22:35
@chr-hertel
chr-hertel requested a balanced review from Copilot October 7, 2026 23:15

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Transport error handling and stream scheduling contain unresolved correctness issues.

4 open findings
What changed in this PR

Defaults the PHP MCP client to 2026-07-28, with handshake fallback for older servers, and adds dual-era stdio support.

Changes:

  • Adds protocol probing, configurable fallback, and modern client behavior.
  • Updates stdio routing, streaming, and transport failure handling.
  • Expands compatibility tests, documentation, and examples.
File Description
tests/​Unit/​Server/​Transport/​StdioDualEraTest.php Tests dual-era routing and streaming.
tests/​Unit/​Server/​Stateless/​StatelessProtocolTest.php Tests inline requests and refusals.
tests/​Unit/​Server/​ProtocolTest.php Checks refusal response IDs.
tests/​Unit/​ClientTest.php Tests logging connection requirements.
tests/​Unit/​Client/​Transport/​StdioTransportTest.php Tests process exit and notification ordering.
tests/​Unit/​Client/​Transport/​HttpTransportTest.php Tests refusals, fallback, and ordering.
tests/​Unit/​Client/​ProtocolTest.php Expands negotiation coverage.
tests/​Unit/​Client/​ConfigurationTest.php Tests defaults and fallback validation.
tests/​Integration/​SamplingToolsTest.php Pins sampling to handshake protocol.
tests/​Integration/​SamplingTest.php Tests sampling across protocol eras.
tests/​Integration/​RootsTest.php Pins roots to handshake protocol.
tests/​Integration/​NotificationTest.php Tests notifications across both eras.
tests/​Integration/​IntegrationTestCase.php Adds shared protocol-era provider.
tests/​Integration/​HttpNegotiationTest.php Tests HTTP protocol compatibility.
tests/​Integration/​HandshakeTest.php Expands stdio negotiation tests.
tests/​Integration/​Fixture/​http.php Adds configurable HTTP server fixture.
tests/​Integration/​Fixture/​handshake.php Adds handshake-only fixture mode.
tests/​Integration/​ElicitationTest.php Tests era-specific elicitation failures.
src/​Server/​Transport/​StdioTransport.php Adds dual-era routing and streams.
src/​Server/​Stateless/​StatelessProtocol.php Supports headerless dispatch and pacing.
src/​Server/​Protocol.php Preserves request IDs in refusals.
src/​Schema/​Result/​InitializeResult.php Keeps initialization defaults handshake-compatible.
src/​Schema/​JsonRpc/​MessageInterface.php Bumps default protocol version.
src/​Client/​Transport/​StdioTransport.php Handles process failures and progress ordering.
src/​Client/​Transport/​HttpTransport.php Handles HTTP refusals and progress ordering.
src/​Client/​Stateless/​RequestEnvelope.php Adds per-request logging level.
src/​Client/​Protocol.php Implements probing and handshake fallback.
src/​Client/​Configuration.php Updates defaults and validates fallback.
src/​Client/​Builder.php Exposes fallback configuration.
src/​Client.php Adapts calls to negotiated protocol.
examples/​server/​bootstrap.php Updates transport documentation comments only.
examples/​client/​stdio_client_communication.php Explicitly enables server logging.
examples/​client/​http_client_communication.php Explicitly enables server logging.
docs/​run/​protocol-eras.md Documents dual-era stdio behavior.
docs/​protocol-versions.md Explains negotiation and modern behavior.
docs/​client/​connecting.md Documents defaults and fallback configuration.
CHANGELOG.md Records compatibility and transport changes.

🧠 Review effort: Balanced


💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread src/Client/Transport/StdioTransport.php Outdated
Comment thread src/Server/Transport/StdioTransport.php Outdated
}

$decoded = json_decode($message, true);
$request = \is_array($decoded) && !array_is_list($decoded) && isset($decoded['id']) ? $decoded : null;
Comment thread src/Client/Transport/HttpTransport.php
Comment thread src/Server/Transport/StdioTransport.php
@chr-hertel
chr-hertel force-pushed the default-spec-version-sliced branch from 74fdbc7 to 60f9011 Compare October 8, 2026 00:55
@chr-hertel
chr-hertel requested a balanced review from Copilot October 8, 2026 00:56

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The defaults match existing negotiation support, and targeted inspection found no blocking regression in the examples’ input-request handling.

1 open finding
3 resolved since last review

🧠 Review effort: Balanced


Give feedback about Copilot approvals in this survey to enter a drawing for a $150 gift card.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

2026-07-28 All issues and PRs related to the spec release 2026-07-28 breaking change Breaking the Backwards Compatibility Promise Client Issues & PRs related to the Client component Schema Issues & PRs related to the Schema component

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants