diff --git a/src/mcp-bundle/config/services.php b/src/mcp-bundle/config/services.php index 9f836a81b..ae9e08490 100644 --- a/src/mcp-bundle/config/services.php +++ b/src/mcp-bundle/config/services.php @@ -13,20 +13,25 @@ use Mcp\Server; use Mcp\Server\Builder; +use Symfony\Bundle\MonologBundle\MonologBundle; return static function (ContainerConfigurator $container): void { - $container->services() - ->set('monolog.logger.mcp') - ->parent('monolog.logger_prototype') - ->args(['mcp']) - ->tag('monolog.logger', ['channel' => 'mcp']) + if (class_exists(MonologBundle::class)) { + $container->services() + ->set('monolog.logger.mcp') + ->parent('monolog.logger_prototype') + ->args(['mcp']) + ->tag('monolog.logger', ['channel' => 'mcp']) + ; + } + $container->services() ->set('mcp.server.builder', Builder::class) ->factory([Server::class, 'builder']) ->call('setServerInfo', [param('mcp.app'), param('mcp.version')]) ->call('setPaginationLimit', [param('mcp.pagination_limit')]) ->call('setInstructions', [param('mcp.instructions')]) - ->call('setLogger', [service('monolog.logger.mcp')]) + ->call('setLogger', [service('monolog.logger.mcp')->nullOnInvalid()]) ->call('setEventDispatcher', [service('event_dispatcher')]) ->call('setSession', [service('mcp.session.store')]) ->call('setDiscovery', [param('kernel.project_dir'), param('mcp.discovery.scan_dirs'), param('mcp.discovery.exclude_dirs')]) diff --git a/src/mcp-bundle/src/McpBundle.php b/src/mcp-bundle/src/McpBundle.php index bec84d4fd..25080dddf 100644 --- a/src/mcp-bundle/src/McpBundle.php +++ b/src/mcp-bundle/src/McpBundle.php @@ -114,7 +114,7 @@ private function configureClient(array $transports, array $httpConfig, Container $container->register('mcp.server.command', McpCommand::class) ->setArguments([ new Reference('mcp.server'), - new Reference('logger'), + new Reference('monolog.logger.mcp', ContainerInterface::NULL_ON_INVALID_REFERENCE), ]) ->addTag('console.command'); } diff --git a/src/mcp-bundle/tests/DependencyInjection/McpBundleTest.php b/src/mcp-bundle/tests/DependencyInjection/McpBundleTest.php index 976811ba4..2b456051b 100644 --- a/src/mcp-bundle/tests/DependencyInjection/McpBundleTest.php +++ b/src/mcp-bundle/tests/DependencyInjection/McpBundleTest.php @@ -14,6 +14,7 @@ use PHPUnit\Framework\Attributes\DataProvider; use PHPUnit\Framework\TestCase; use Symfony\AI\McpBundle\McpBundle; +use Symfony\Bundle\MonologBundle\MonologBundle; use Symfony\Component\DependencyInjection\ContainerBuilder; class McpBundleTest extends TestCase @@ -49,6 +50,10 @@ public function testCustomConfiguration() public function testMcpLoggerServiceIsCreated() { + if (!class_exists(MonologBundle::class)) { + $this->markTestSkipped('MonologBundle is not installed'); + } + $container = $this->buildContainer([]); $this->assertTrue($container->hasDefinition('monolog.logger.mcp'));