[Server] Simplify server entrypoint with run-based transport lifecycle (#103)

* feat: replace connect/listen flow with run lifecycle

* feat(transport): add phpstan generics for typed transport returns

* refactor: standardize variable naming for MCP server instances in transport handling

* test: remove unnecessary phpstan-ignore annotation in DocBlockTestFixture
This commit is contained in:
Kyrian Obikwelu 2025-10-10 18:52:06 +01:00 • committed by GitHub
commit 2dbd411194
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
10 changed files with 82 additions and 74 deletions

View file

@ -137,8 +137,8 @@ $server = Server::builder()
$transport = new StdioTransport(logger: logger());
$server->connect($transport);
$result = $server->run($transport);
$transport->listen();
logger()->info('Server listener stopped gracefully.', ['result' => $result]);
logger()->info('Server listener stopped gracefully.');
exit($result);

View file

@ -42,8 +42,6 @@ $server = Server::builder()
$transport = new StreamableHttpTransport($request, $psr17Factory, $psr17Factory);
$server->connect($transport);
$response = $transport->listen();
$response = $server->run($transport);
(new SapiEmitter())->emit($response);

View file

@ -35,8 +35,6 @@ $server = Server::builder()
$transport = new StreamableHttpTransport($request, $psr17Factory, $psr17Factory);
$server->connect($transport);
$response = $transport->listen();
$response = $server->run($transport);
(new SapiEmitter())->emit($response);

View file

@ -77,8 +77,6 @@ $server = Server::builder()
$transport = new StreamableHttpTransport($request, $psr17Factory, $psr17Factory);
$server->connect($transport);
$response = $transport->listen();
$response = $server->run($transport);
(new SapiEmitter())->emit($response);

View file

@ -35,8 +35,6 @@ $server = Server::builder()
$transport = new StreamableHttpTransport($request, $psr17Factory, $psr17Factory);
$server->connect($transport);
$response = $transport->listen();
$response = $server->run($transport);
(new SapiEmitter())->emit($response);

View file

@ -31,8 +31,8 @@ $server = Server::builder()
$transport = new StdioTransport(logger: logger());
$server->connect($transport);
$result = $server->run($transport);
$transport->listen();
logger()->info('Server listener stopped gracefully.', ['result' => $result]);
logger()->info('Server listener stopped gracefully.');
exit($result);

View file

@ -39,8 +39,8 @@ $server = Server::builder()
$transport = new StdioTransport(logger: logger());
$server->connect($transport);
$result = $server->run($transport);
$transport->listen();
logger()->info('Server listener stopped gracefully.', ['result' => $result]);
logger()->info('Server listener stopped gracefully.');
exit($result);

View file

@ -28,8 +28,8 @@ $server = Server::builder()
$transport = new StdioTransport(logger: logger());
$server->connect($transport);
$result = $server->run($transport);
$transport->listen();
logger()->info('Server listener stopped gracefully.', ['result' => $result]);
logger()->info('Server listener stopped gracefully.');
exit($result);

View file

@ -57,8 +57,8 @@ $server = Server::builder()
$transport = new StdioTransport(logger: logger());
$server->connect($transport);
$result = $server->run($transport);
$transport->listen();
logger()->info('Server listener stopped gracefully.', ['result' => $result]);
logger()->info('Server listener stopped gracefully.');
exit($result);

View file

@ -31,8 +31,8 @@ $server = Server::builder()
$transport = new StdioTransport(logger: logger());
$server->connect($transport);
$result = $server->run($transport);
$transport->listen();
logger()->info('Server listener stopped gracefully.', ['result' => $result]);
logger()->info('Server listener stopped gracefully.');
exit($result);