* [Client] Speak the 2026-07-28 lifecycle On that revision the client opens with server/discover instead of initialize, stamps each request's _meta with the protocol version, its own capabilities and client info, and sends the standard Mcp-Method / Mcp-Name / Mcp-Param-* headers an intermediary routes on. ToolCatalog is what knows, from the tool list, which arguments a call has to mirror. An input_required result is answered rather than surfaced: InputRequestResolver asks the host's elicitation, sampling and roots handlers and retries the same request carrying inputResponses and the requestState the server sent. McpHeader holds the header names and the =?base64?…?= sentinel, so the two sides no longer keep their own copies of the same rules. * Fix CI baseline drift and address Copilot review findings Drop stale expected-failure entries the new client fixture now passes. Copilot review: fix McpHeader round-trip for a wrapper-shaped literal, encode empty/numeric-keyed inputResponses as a JSON object, stop the incident example repeating side effects on MRTR retry, and reset ToolCatalog on reconnect instead of carrying the previous server's verdicts. * Skip DualEraExampleTestCase on PHP 8.1 PHP_CLI_SERVER_WORKERS does not reliably fork multiple php -S workers there (php/php-src#9400), reproducing the single-worker deadlock the extra workers exist to avoid.
43 lines
1 KiB
PHP
43 lines
1 KiB
PHP
<?php
|
|
|
|
/*
|
|
* This file is part of the official PHP MCP SDK.
|
|
*
|
|
* A collaboration between Symfony and the PHP Foundation.
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
namespace Mcp\Schema\Request;
|
|
|
|
use Mcp\Schema\JsonRpc\Request;
|
|
|
|
/**
|
|
* Asks a server what it is and what it speaks (SEP-2575).
|
|
*
|
|
* The modern era's optional replacement for `initialize`: it reports rather
|
|
* than negotiates, so a client MAY call it to learn the server's capabilities
|
|
* up front, and MAY skip it and simply declare a revision on each request.
|
|
*
|
|
* @see \Mcp\Schema\Result\DiscoverResult
|
|
*
|
|
* @author Christopher Hertel <mail@christopher-hertel.de>
|
|
*/
|
|
final class DiscoverRequest extends Request
|
|
{
|
|
public static function getMethod(): string
|
|
{
|
|
return 'server/discover';
|
|
}
|
|
|
|
protected static function fromParams(?array $params): static
|
|
{
|
|
return new self();
|
|
}
|
|
|
|
protected function getParams(): ?array
|
|
{
|
|
return null;
|
|
}
|
|
}
|