Skip to content

Commit 2d6de37

Browse files
committed
refactor: transport agnostic examples
1 parent 757b959 commit 2d6de37

File tree

4 files changed

+35
-133
lines changed

4 files changed

+35
-133
lines changed

examples/bootstrap.php

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,13 @@
99
* file that was distributed with this source code.
1010
*/
1111

12+
use Http\Discovery\Psr17Factory;
13+
use Laminas\HttpHandlerRunner\Emitter\SapiEmitter;
1214
use Mcp\Capability\Registry\Container;
15+
use Mcp\Server\Transport\StdioTransport;
16+
use Mcp\Server\Transport\StreamableHttpTransport;
17+
use Mcp\Server\Transport\TransportInterface;
18+
use Psr\Http\Message\ResponseInterface;
1319
use Psr\Log\AbstractLogger;
1420
use Psr\Log\LoggerInterface;
1521

@@ -21,6 +27,30 @@
2127
exit(1);
2228
});
2329

30+
/**
31+
* @return TransportInterface<int>|TransportInterface<ResponseInterface>
32+
*/
33+
function transport(): TransportInterface
34+
{
35+
if ('cli' === \PHP_SAPI) {
36+
return new StdioTransport();
37+
}
38+
39+
return new StreamableHttpTransport(
40+
(new Psr17Factory())->createServerRequestFromGlobals(),
41+
);
42+
}
43+
44+
function shutdown(ResponseInterface|int $result): never
45+
{
46+
if ('cli' === \PHP_SAPI) {
47+
exit($result);
48+
}
49+
50+
(new SapiEmitter())->emit($result);
51+
exit(0);
52+
}
53+
2454
function logger(): LoggerInterface
2555
{
2656
return new class extends AbstractLogger {

examples/stdio-client-communication/server.php renamed to examples/client-communication/server.php

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,12 @@
1919
use Mcp\Schema\ServerCapabilities;
2020
use Mcp\Server;
2121
use Mcp\Server\ClientGateway;
22-
use Mcp\Server\Transport\StdioTransport;
23-
24-
$capabilities = new ServerCapabilities(logging: true, tools: true);
2522

2623
$server = Server::builder()
27-
->setServerInfo('STDIO Client Communication Demo', '1.0.0')
24+
->setServerInfo('Client Communication Demo', '1.0.0')
2825
->setLogger(logger())
2926
->setContainer(container())
30-
->setCapabilities($capabilities)
27+
->setCapabilities(new ServerCapabilities(logging: true, tools: true))
3128
->addTool(
3229
function (string $incidentTitle, ClientGateway $client): array {
3330
$client->log(LoggingLevel::Warning, sprintf('Incident triage started: %s', $incidentTitle));
@@ -108,8 +105,6 @@ function (string $dataset, ClientGateway $client): array {
108105
)
109106
->build();
110107

111-
$transport = new StdioTransport();
112-
113-
$status = $server->run($transport);
108+
$result = $server->run(transport());
114109

115-
exit($status);
110+
shutdown($result);

examples/http-client-communication/server.php

Lines changed: 0 additions & 123 deletions
This file was deleted.

tests/Inspector/Http/HttpClientCommunicationTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,6 @@ public static function provideMethods(): array
5959

6060
protected function getServerScript(): string
6161
{
62-
return \dirname(__DIR__, 3).'/examples/http-client-communication/server.php';
62+
return \dirname(__DIR__, 3).'/examples/client-communication/server.php';
6363
}
6464
}

0 commit comments

Comments
 (0)