Skip to content

Commit b2a067f

Browse files
fix: remove deprecated SSE transport and resolve PHPStan issues
1 parent e276e6b commit b2a067f

File tree

22 files changed

+164
-259
lines changed

22 files changed

+164
-259
lines changed

examples/02-discovery-http-userprofile/server.php

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,23 @@
1313
require_once dirname(__DIR__).'/bootstrap.php';
1414
chdir(__DIR__);
1515

16-
use Mcp\Capability\Registry\Container;
16+
use Laminas\HttpHandlerRunner\Emitter\SapiEmitter;
1717
use Mcp\Server;
18-
use Psr\Log\LoggerInterface;
18+
use Mcp\Server\Session\FileSessionStore;
19+
use Mcp\Server\Transport\StreamableHttpTransport;
20+
use Nyholm\Psr7\Factory\Psr17Factory;
21+
use Nyholm\Psr7Server\ServerRequestCreator;
1922

20-
logger()->info('Starting MCP HTTP User Profile Server...');
23+
$psr17Factory = new Psr17Factory();
24+
$creator = new ServerRequestCreator($psr17Factory, $psr17Factory, $psr17Factory, $psr17Factory);
2125

22-
// --- Setup DI Container for DI in McpElements class ---
23-
$container = new Container();
24-
$container->set(LoggerInterface::class, logger());
26+
$request = $creator->fromGlobals();
2527

26-
Server::make()
28+
$server = Server::make()
2729
->setServerInfo('HTTP User Profiles', '1.0.0')
2830
->setLogger(logger())
29-
->setContainer($container)
31+
->setContainer(container())
32+
->setSession(new FileSessionStore(__DIR__.'/sessions'))
3033
->setDiscovery(__DIR__, ['.'])
3134
->addTool(
3235
function (float $a, float $b, string $operation = 'add'): array {
@@ -70,7 +73,12 @@ function (): array {
7073
description: 'Current system status and runtime information',
7174
mimeType: 'application/json'
7275
)
73-
->build()
74-
->connect(new StreamableHttpServerTransport('127.0.0.1', 8080, 'mcp'));
76+
->build();
7577

76-
logger()->info('Server listener stopped gracefully.');
78+
$transport = new StreamableHttpTransport($request, $psr17Factory, $psr17Factory);
79+
80+
$server->connect($transport);
81+
82+
$response = $transport->listen();
83+
84+
(new SapiEmitter())->emit($response);

examples/03-manual-registration-stdio/server.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,15 +19,20 @@
1919

2020
logger()->info('Starting MCP Manual Registration (Stdio) Server...');
2121

22-
Server::make()
22+
$server = Server::make()
2323
->setServerInfo('Manual Reg Server', '1.0.0')
2424
->setLogger(logger())
2525
->setContainer(container())
2626
->addTool([SimpleHandlers::class, 'echoText'], 'echo_text')
2727
->addResource([SimpleHandlers::class, 'getAppVersion'], 'app://version', 'application_version', mimeType: 'text/plain')
2828
->addPrompt([SimpleHandlers::class, 'greetingPrompt'], 'personalized_greeting')
2929
->addResourceTemplate([SimpleHandlers::class, 'getItemDetails'], 'item://{itemId}/details', 'get_item_details', mimeType: 'application/json')
30-
->build()
31-
->connect(new StdioTransport(logger: logger()));
30+
->build();
31+
32+
$transport = new StdioTransport(logger: logger());
33+
34+
$server->connect($transport);
35+
36+
$transport->listen();
3237

3338
logger()->info('Server listener stopped gracefully.');

examples/04-combined-registration-http/server.php

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,24 +13,37 @@
1313
require_once dirname(__DIR__).'/bootstrap.php';
1414
chdir(__DIR__);
1515

16+
use Laminas\HttpHandlerRunner\Emitter\SapiEmitter;
1617
use Mcp\CombinedHttpExample\Manual\ManualHandlers;
1718
use Mcp\Server;
18-
use Mcp\Server\Transports\HttpServerTransport;
19+
use Mcp\Server\Session\FileSessionStore;
20+
use Mcp\Server\Transport\StreamableHttpTransport;
21+
use Nyholm\Psr7\Factory\Psr17Factory;
22+
use Nyholm\Psr7Server\ServerRequestCreator;
1923

20-
logger()->info('Starting MCP Combined Registration (HTTP) Server...');
24+
$psr17Factory = new Psr17Factory();
25+
$creator = new ServerRequestCreator($psr17Factory, $psr17Factory, $psr17Factory, $psr17Factory);
2126

22-
Server::make()
27+
$request = $creator->fromGlobals();
28+
29+
$server = Server::make()
2330
->setServerInfo('Combined HTTP Server', '1.0.0')
2431
->setLogger(logger())
2532
->setContainer(container())
33+
->setSession(new FileSessionStore(__DIR__.'/sessions'))
2634
->setDiscovery(__DIR__, ['.'])
2735
->addTool([ManualHandlers::class, 'manualGreeter'])
2836
->addResource(
2937
[ManualHandlers::class, 'getPriorityConfigManual'],
3038
'config://priority',
3139
'priority_config_manual',
3240
)
33-
->build()
34-
->connect(new HttpServerTransport('127.0.0.1', 8081, 'mcp_combined'));
41+
->build();
42+
43+
$transport = new StreamableHttpTransport($request, $psr17Factory, $psr17Factory);
44+
45+
$server->connect($transport);
46+
47+
$response = $transport->listen();
3548

36-
logger()->info('Server listener stopped gracefully.');
49+
(new SapiEmitter())->emit($response);

examples/05-stdio-env-variables/server.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -49,11 +49,16 @@
4949

5050
logger()->info('Starting MCP Stdio Environment Variable Example Server...');
5151

52-
Server::make()
52+
$server = Server::make()
5353
->setServerInfo('Env Var Server', '1.0.0')
5454
->setLogger(logger())
5555
->setDiscovery(__DIR__, ['.'])
56-
->build()
57-
->connect(new StdioTransport(logger: logger()));
56+
->build();
57+
58+
$transport = new StdioTransport(logger: logger());
59+
60+
$server->connect($transport);
61+
62+
$transport->listen();
5863

5964
logger()->info('Server listener stopped gracefully.');

examples/06-custom-dependencies-stdio/server.php

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,17 @@
2727
$statsService = new Services\SystemStatsService($taskRepo);
2828
$container->set(Services\StatsServiceInterface::class, $statsService);
2929

30-
Server::make()
30+
$server = Server::make()
3131
->setServerInfo('Task Manager Server', '1.0.0')
3232
->setLogger(logger())
3333
->setContainer($container)
3434
->setDiscovery(__DIR__, ['.'])
35-
->build()
36-
->connect(new StdioTransport(logger: logger()));
35+
->build();
36+
37+
$transport = new StdioTransport(logger: logger());
38+
39+
$server->connect($transport);
40+
41+
$transport->listen();
3742

3843
logger()->info('Server listener stopped gracefully.');

examples/07-complex-tool-schema-http/server.php

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,30 @@
1313
require_once dirname(__DIR__).'/bootstrap.php';
1414
chdir(__DIR__);
1515

16+
use Laminas\HttpHandlerRunner\Emitter\SapiEmitter;
1617
use Mcp\Server;
17-
use Mcp\Server\Transports\HttpServerTransport;
18+
use Mcp\Server\Session\FileSessionStore;
19+
use Mcp\Server\Transport\StreamableHttpTransport;
20+
use Nyholm\Psr7\Factory\Psr17Factory;
21+
use Nyholm\Psr7Server\ServerRequestCreator;
1822

19-
logger()->info('Starting MCP Complex Schema HTTP Server...');
23+
$psr17Factory = new Psr17Factory();
24+
$creator = new ServerRequestCreator($psr17Factory, $psr17Factory, $psr17Factory, $psr17Factory);
2025

21-
Server::make()
26+
$request = $creator->fromGlobals();
27+
28+
$server = Server::make()
2229
->setServerInfo('Event Scheduler Server', '1.0.0')
2330
->setLogger(logger())
2431
->setContainer(container())
32+
->setSession(new FileSessionStore(__DIR__.'/sessions'))
2533
->setDiscovery(__DIR__, ['.'])
26-
->build()
27-
->connect(new HttpServerTransport('127.0.0.1', 8082, 'mcp_scheduler'));
34+
->build();
35+
36+
$transport = new StreamableHttpTransport($request, $psr17Factory, $psr17Factory);
37+
38+
$server->connect($transport);
39+
40+
$response = $transport->listen();
2841

29-
logger()->info('Server listener stopped gracefully.');
42+
(new SapiEmitter())->emit($response);

examples/08-schema-showcase-streamable/server.php

Lines changed: 19 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,16 +13,29 @@
1313
require_once dirname(__DIR__).'/bootstrap.php';
1414
chdir(__DIR__);
1515

16+
use Laminas\HttpHandlerRunner\Emitter\SapiEmitter;
1617
use Mcp\Server;
17-
use Mcp\Server\Transports\StreamableHttpServerTransport;
18+
use Mcp\Server\Session\FileSessionStore;
19+
use Mcp\Server\Transport\StreamableHttpTransport;
20+
use Nyholm\Psr7\Factory\Psr17Factory;
21+
use Nyholm\Psr7Server\ServerRequestCreator;
1822

19-
logger()->info('Starting MCP Schema Showcase Server...');
23+
$psr17Factory = new Psr17Factory();
24+
$creator = new ServerRequestCreator($psr17Factory, $psr17Factory, $psr17Factory, $psr17Factory);
2025

21-
Server::make()
26+
$request = $creator->fromGlobals();
27+
28+
$server = Server::make()
2229
->setServerInfo('Schema Showcase', '1.0.0')
2330
->setLogger(logger())
31+
->setSession(new FileSessionStore(__DIR__.'/sessions'))
2432
->setDiscovery(__DIR__, ['.'])
25-
->build()
26-
->connect(new StreamableHttpServerTransport('127.0.0.1', 8080, 'mcp'));
33+
->build();
34+
35+
$transport = new StreamableHttpTransport($request, $psr17Factory, $psr17Factory);
36+
37+
$server->connect($transport);
38+
39+
$response = $transport->listen();
2740

28-
logger()->info('Server listener stopped gracefully.');
41+
(new SapiEmitter())->emit($response);

examples/09-standalone-cli/index.php

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111

1212
require __DIR__.'/vendor/autoload.php';
1313

14+
use Mcp\Server;
15+
use Mcp\Server\Transport\StdioTransport;
1416
use Symfony\Component\Console as SymfonyConsole;
1517
use Symfony\Component\Console\Output\OutputInterface;
1618

@@ -20,18 +22,14 @@
2022
$output = new SymfonyConsole\Output\ConsoleOutput($debug ? OutputInterface::VERBOSITY_VERY_VERBOSE : OutputInterface::VERBOSITY_NORMAL);
2123
$logger = new SymfonyConsole\Logger\ConsoleLogger($output);
2224

23-
// Configure the JsonRpcHandler and build the functionality
24-
$jsonRpcHandler = new Mcp\JsonRpc\Handler(
25-
Mcp\JsonRpc\MessageFactory::make(),
26-
App\Builder::buildMethodHandlers(),
27-
$logger
28-
);
25+
$server = Server::make()
26+
->setServerInfo('Standalone CLI', '1.0.0')
27+
->setLogger($logger)
28+
->setDiscovery(__DIR__, ['.'])
29+
->build();
2930

30-
// Set up the server
31-
$sever = new Mcp\Server($jsonRpcHandler, $logger);
31+
$transport = new StdioTransport(logger: $logger);
3232

33-
// Create the transport layer using Stdio
34-
$transport = new Mcp\Server\Transport\StdioTransport(logger: $logger);
33+
$server->connect($transport);
3534

36-
// Start our application
37-
$sever->connect($transport);
35+
$transport->listen();

examples/10-simple-http-transport/McpElements.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,8 @@ public function calculate(float $a, float $b, string $operation): float|string
5151

5252
/**
5353
* Server information resource.
54+
*
55+
* @return array{status: string, timestamp: int, version: string, transport: string, uptime: int}
5456
*/
5557
#[McpResource(
5658
uri: 'info://server/status',
@@ -71,6 +73,8 @@ public function getServerStatus(): array
7173

7274
/**
7375
* Configuration resource.
76+
*
77+
* @return array{debug: bool, environment: string, timezone: string, locale: string}
7478
*/
7579
#[McpResource(
7680
uri: 'config://app/settings',
@@ -90,6 +94,8 @@ public function getAppConfig(): array
9094

9195
/**
9296
* Greeting prompt.
97+
*
98+
* @return array{role: string, content: string}
9399
*/
94100
#[McpPrompt(
95101
name: 'greet',

phpstan-baseline.neon

Lines changed: 0 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,6 @@ parameters:
5454
count: 1
5555
path: examples/02-discovery-http-userprofile/server.php
5656

57-
-
58-
message: '#^Instantiated class StreamableHttpServerTransport not found\.$#'
59-
identifier: class.notFound
60-
count: 1
61-
path: examples/02-discovery-http-userprofile/server.php
62-
63-
-
64-
message: '#^Parameter \#1 \$transport of method Mcp\\Server\:\:connect\(\) expects Mcp\\Server\\TransportInterface, StreamableHttpServerTransport given\.$#'
65-
identifier: argument.type
66-
count: 1
67-
path: examples/02-discovery-http-userprofile/server.php
6857

6958
-
7059
message: '#^Method Mcp\\Example\\ManualStdioExample\\SimpleHandlers\:\:getItemDetails\(\) return type has no value type specified in iterable type array\.$#'
@@ -84,17 +73,6 @@ parameters:
8473
count: 2
8574
path: examples/04-combined-registration-http/server.php
8675

87-
-
88-
message: '#^Instantiated class Mcp\\Server\\Transports\\HttpServerTransport not found\.$#'
89-
identifier: class.notFound
90-
count: 1
91-
path: examples/04-combined-registration-http/server.php
92-
93-
-
94-
message: '#^Parameter \#1 \$transport of method Mcp\\Server\:\:connect\(\) expects Mcp\\Server\\TransportInterface, Mcp\\Server\\Transports\\HttpServerTransport given\.$#'
95-
identifier: argument.type
96-
count: 1
97-
path: examples/04-combined-registration-http/server.php
9876

9977
-
10078
message: '#^Method Mcp\\Example\\StdioEnvVariables\\EnvToolHandler\:\:processData\(\) return type has no value type specified in iterable type array\.$#'
@@ -288,17 +266,6 @@ parameters:
288266
count: 2
289267
path: examples/07-complex-tool-schema-http/McpEventScheduler.php
290268

291-
-
292-
message: '#^Instantiated class Mcp\\Server\\Transports\\HttpServerTransport not found\.$#'
293-
identifier: class.notFound
294-
count: 1
295-
path: examples/07-complex-tool-schema-http/server.php
296-
297-
-
298-
message: '#^Parameter \#1 \$transport of method Mcp\\Server\:\:connect\(\) expects Mcp\\Server\\TransportInterface, Mcp\\Server\\Transports\\HttpServerTransport given\.$#'
299-
identifier: argument.type
300-
count: 1
301-
path: examples/07-complex-tool-schema-http/server.php
302269

303270
-
304271
message: '#^Method Mcp\\Example\\SchemaShowcaseExample\\SchemaShowcaseElements\:\:calculateRange\(\) return type has no value type specified in iterable type array\.$#'
@@ -354,17 +321,6 @@ parameters:
354321
count: 1
355322
path: examples/08-schema-showcase-streamable/SchemaShowcaseElements.php
356323

357-
-
358-
message: '#^Instantiated class Mcp\\Server\\Transports\\StreamableHttpServerTransport not found\.$#'
359-
identifier: class.notFound
360-
count: 1
361-
path: examples/08-schema-showcase-streamable/server.php
362-
363-
-
364-
message: '#^Parameter \#1 \$transport of method Mcp\\Server\:\:connect\(\) expects Mcp\\Server\\TransportInterface, Mcp\\Server\\Transports\\StreamableHttpServerTransport given\.$#'
365-
identifier: argument.type
366-
count: 1
367-
path: examples/08-schema-showcase-streamable/server.php
368324

369325
-
370326
message: '#^Parameter \#1 \$registry of class Mcp\\Server\\RequestHandler\\ListPromptsHandler constructor expects Mcp\\Capability\\Registry\\ReferenceProviderInterface, Mcp\\Capability\\PromptChain given\.$#'

0 commit comments

Comments
 (0)