Skip to content

Commit 9fa5c11

Browse files
Make MonologBundle optional in McpBundle
Fixes #830 - Wrap monolog.logger.mcp service creation in class_exists() check - Add ->nullOnInvalid() to setLogger() call - Uniformize logger references in McpCommand and McpController - Update test to skip when MonologBundle is not installed Builds on #849 by @WebMamba
1 parent fbb2d62 commit 9fa5c11

File tree

3 files changed

+17
-7
lines changed

3 files changed

+17
-7
lines changed

src/mcp-bundle/config/services.php

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,25 @@
1313

1414
use Mcp\Server;
1515
use Mcp\Server\Builder;
16+
use Symfony\Bundle\MonologBundle\MonologBundle;
1617

1718
return static function (ContainerConfigurator $container): void {
18-
$container->services()
19-
->set('monolog.logger.mcp')
20-
->parent('monolog.logger_prototype')
21-
->args(['mcp'])
22-
->tag('monolog.logger', ['channel' => 'mcp'])
19+
if (class_exists(MonologBundle::class)) {
20+
$container->services()
21+
->set('monolog.logger.mcp')
22+
->parent('monolog.logger_prototype')
23+
->args(['mcp'])
24+
->tag('monolog.logger', ['channel' => 'mcp'])
25+
;
26+
}
2327

28+
$container->services()
2429
->set('mcp.server.builder', Builder::class)
2530
->factory([Server::class, 'builder'])
2631
->call('setServerInfo', [param('mcp.app'), param('mcp.version')])
2732
->call('setPaginationLimit', [param('mcp.pagination_limit')])
2833
->call('setInstructions', [param('mcp.instructions')])
29-
->call('setLogger', [service('monolog.logger.mcp')])
34+
->call('setLogger', [service('monolog.logger.mcp')->nullOnInvalid()])
3035
->call('setEventDispatcher', [service('event_dispatcher')])
3136
->call('setSession', [service('mcp.session.store')])
3237
->call('setDiscovery', [param('kernel.project_dir'), param('mcp.discovery.scan_dirs'), param('mcp.discovery.exclude_dirs')])

src/mcp-bundle/src/McpBundle.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -114,7 +114,7 @@ private function configureClient(array $transports, array $httpConfig, Container
114114
$container->register('mcp.server.command', McpCommand::class)
115115
->setArguments([
116116
new Reference('mcp.server'),
117-
new Reference('logger'),
117+
new Reference('monolog.logger.mcp', ContainerInterface::NULL_ON_INVALID_REFERENCE),
118118
])
119119
->addTag('console.command');
120120
}

src/mcp-bundle/tests/DependencyInjection/McpBundleTest.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
use PHPUnit\Framework\Attributes\DataProvider;
1515
use PHPUnit\Framework\TestCase;
1616
use Symfony\AI\McpBundle\McpBundle;
17+
use Symfony\Bundle\MonologBundle\MonologBundle;
1718
use Symfony\Component\DependencyInjection\ContainerBuilder;
1819

1920
class McpBundleTest extends TestCase
@@ -49,6 +50,10 @@ public function testCustomConfiguration()
4950

5051
public function testMcpLoggerServiceIsCreated()
5152
{
53+
if (!class_exists(MonologBundle::class)) {
54+
$this->markTestSkipped('MonologBundle is not installed');
55+
}
56+
5257
$container = $this->buildContainer([]);
5358

5459
$this->assertTrue($container->hasDefinition('monolog.logger.mcp'));

0 commit comments

Comments
 (0)