Skip to content

Commit 470237a

Browse files
Make logger nullable in Transport constructors (#152)
- BaseTransport: Accept ?LoggerInterface parameter and convert null to NullLogger - StdioTransport: Change logger parameter to nullable - StreamableHttpTransport: Change logger parameter to nullable - InMemoryTransport: Fix missing parent::__construct() call and add logging
1 parent 7cd281d commit 470237a

File tree

4 files changed

+14
-7
lines changed

4 files changed

+14
-7
lines changed

src/Server/Transport/BaseTransport.php

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use Mcp\Schema\JsonRpc\Error;
1515
use Mcp\Schema\JsonRpc\Response;
1616
use Psr\Log\LoggerInterface;
17+
use Psr\Log\NullLogger;
1718
use Symfony\Component\Uid\Uuid;
1819

1920
/**
@@ -38,9 +39,11 @@ abstract class BaseTransport
3839
*/
3940
protected ?\Fiber $sessionFiber = null;
4041

41-
public function __construct(
42-
protected readonly LoggerInterface $logger,
43-
) {
42+
protected LoggerInterface $logger;
43+
44+
public function __construct(?LoggerInterface $logger = null)
45+
{
46+
$this->logger = $logger ?? new NullLogger();
4447
}
4548

4649
public function initialize(): void

src/Server/Transport/InMemoryTransport.php

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111

1212
namespace Mcp\Server\Transport;
1313

14+
use Psr\Log\LoggerInterface;
1415
use Symfony\Component\Uid\Uuid;
1516

1617
/**
@@ -27,7 +28,9 @@ class InMemoryTransport extends BaseTransport implements TransportInterface
2728
*/
2829
public function __construct(
2930
private readonly array $messages = [],
31+
?LoggerInterface $logger = null,
3032
) {
33+
parent::__construct($logger);
3134
}
3235

3336
public function initialize(): void
@@ -51,10 +54,13 @@ public function send(string $data, array $context): void
5154
*/
5255
public function listen(): mixed
5356
{
57+
$this->logger->info('InMemoryTransport is processing messages...');
58+
5459
foreach ($this->messages as $message) {
5560
$this->handleMessage($message, $this->sessionId);
5661
}
5762

63+
$this->logger->info('InMemoryTransport finished processing.');
5864
$this->handleSessionEnd($this->sessionId);
5965

6066
$this->sessionId = null;

src/Server/Transport/StdioTransport.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313

1414
use Mcp\Schema\JsonRpc\Error;
1515
use Psr\Log\LoggerInterface;
16-
use Psr\Log\NullLogger;
1716

1817
/**
1918
* @implements TransportInterface<int>
@@ -29,7 +28,7 @@ class StdioTransport extends BaseTransport implements TransportInterface
2928
public function __construct(
3029
private $input = \STDIN,
3130
private $output = \STDOUT,
32-
LoggerInterface $logger = new NullLogger(),
31+
?LoggerInterface $logger = null,
3332
) {
3433
parent::__construct($logger);
3534
}

src/Server/Transport/StreamableHttpTransport.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818
use Psr\Http\Message\ServerRequestInterface;
1919
use Psr\Http\Message\StreamFactoryInterface;
2020
use Psr\Log\LoggerInterface;
21-
use Psr\Log\NullLogger;
2221
use Symfony\Component\Uid\Uuid;
2322

2423
/**
@@ -45,7 +44,7 @@ public function __construct(
4544
?ResponseFactoryInterface $responseFactory = null,
4645
?StreamFactoryInterface $streamFactory = null,
4746
array $corsHeaders = [],
48-
LoggerInterface $logger = new NullLogger(),
47+
?LoggerInterface $logger = null,
4948
) {
5049
parent::__construct($logger);
5150
$sessionIdString = $this->request->getHeaderLine('Mcp-Session-Id');

0 commit comments

Comments
 (0)