Skip to content

Commit ecea6d6

Browse files
Conditionally call Builder->setLogger() only when MonologBundle exists, and handle nullable logger in McpCommand/McpController by conditionally passing it to Transports.
When MonologBundle is absent, Server and Transports use their default NullLogger.
1 parent 9fa5c11 commit ecea6d6

File tree

3 files changed

+23
-11
lines changed

3 files changed

+23
-11
lines changed

src/mcp-bundle/config/services.php

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,17 +25,21 @@
2525
;
2626
}
2727

28-
$container->services()
28+
$builderDefinition = $container->services()
2929
->set('mcp.server.builder', Builder::class)
3030
->factory([Server::class, 'builder'])
3131
->call('setServerInfo', [param('mcp.app'), param('mcp.version')])
3232
->call('setPaginationLimit', [param('mcp.pagination_limit')])
3333
->call('setInstructions', [param('mcp.instructions')])
34-
->call('setLogger', [service('monolog.logger.mcp')->nullOnInvalid()])
3534
->call('setEventDispatcher', [service('event_dispatcher')])
3635
->call('setSession', [service('mcp.session.store')])
37-
->call('setDiscovery', [param('kernel.project_dir'), param('mcp.discovery.scan_dirs'), param('mcp.discovery.exclude_dirs')])
36+
->call('setDiscovery', [param('kernel.project_dir'), param('mcp.discovery.scan_dirs'), param('mcp.discovery.exclude_dirs')]);
3837

38+
if (class_exists(MonologBundle::class)) {
39+
$builderDefinition->call('setLogger', [service('monolog.logger.mcp')]);
40+
}
41+
42+
$container->services()
3943
->set('mcp.server', Server::class)
4044
->factory([service('mcp.server.builder'), 'build'])
4145

src/mcp-bundle/src/Command/McpCommand.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,16 @@ class McpCommand extends Command
2424
{
2525
public function __construct(
2626
private readonly Server $server,
27-
private readonly LoggerInterface $logger,
27+
private readonly ?LoggerInterface $logger = null,
2828
) {
2929
parent::__construct();
3030
}
3131

3232
protected function execute(InputInterface $input, OutputInterface $output): int
3333
{
34-
$transport = new StdioTransport(logger: $this->logger);
34+
$transport = $this->logger
35+
? new StdioTransport(logger: $this->logger)
36+
: new StdioTransport();
3537
$this->server->run($transport);
3638

3739
return Command::SUCCESS;

src/mcp-bundle/src/Controller/McpController.php

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -35,12 +35,18 @@ public function __construct(
3535

3636
public function handle(Request $request): Response
3737
{
38-
$transport = new StreamableHttpTransport(
39-
$this->httpMessageFactory->createRequest($request),
40-
$this->responseFactory,
41-
$this->streamFactory,
42-
logger: $this->logger,
43-
);
38+
$transport = $this->logger
39+
? new StreamableHttpTransport(
40+
$this->httpMessageFactory->createRequest($request),
41+
$this->responseFactory,
42+
$this->streamFactory,
43+
logger: $this->logger,
44+
)
45+
: new StreamableHttpTransport(
46+
$this->httpMessageFactory->createRequest($request),
47+
$this->responseFactory,
48+
$this->streamFactory,
49+
);
4450

4551
return $this->httpFoundationFactory->createResponse(
4652
$this->server->run($transport),

0 commit comments

Comments
 (0)