Skip to content

Commit 9904c9c

Browse files
Move TraceableRegistry to McpBundle with conditional registration
- Move profiler services registration from services.php to McpBundle - Make TraceableRegistry and DataCollector conditional on kernel.debug - Use decoration feature with .inner reference - Drop ai. prefix in favor of mcp. prefix
1 parent f959ad7 commit 9904c9c

File tree

2 files changed

+19
-12
lines changed

2 files changed

+19
-12
lines changed

src/mcp-bundle/config/services.php

Lines changed: 3 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,6 @@
1414
use Mcp\Capability\Registry;
1515
use Mcp\Server;
1616
use Mcp\Server\Builder;
17-
use Symfony\AI\McpBundle\Profiler\DataCollector;
18-
use Symfony\AI\McpBundle\Profiler\TraceableRegistry;
1917

2018
return static function (ContainerConfigurator $container): void {
2119
$container->services()
@@ -24,27 +22,20 @@
2422
->args(['mcp'])
2523
->tag('monolog.logger', ['channel' => 'mcp'])
2624

27-
->set('ai.mcp.registry.inner', Registry::class)
25+
->set('mcp.registry', Registry::class)
2826
->args([service('event_dispatcher'), service('monolog.logger.mcp')])
2927

30-
->set('ai.mcp.registry', TraceableRegistry::class)
31-
->args([service('ai.mcp.registry.inner')])
32-
3328
->set('mcp.server.builder', Builder::class)
3429
->factory([Server::class, 'builder'])
3530
->call('setServerInfo', [param('mcp.app'), param('mcp.version')])
3631
->call('setPaginationLimit', [param('mcp.pagination_limit')])
3732
->call('setInstructions', [param('mcp.instructions')])
3833
->call('setLogger', [service('monolog.logger.mcp')])
3934
->call('setEventDispatcher', [service('event_dispatcher')])
40-
->call('setRegistry', [service('ai.mcp.registry')])
35+
->call('setRegistry', [service('mcp.registry')])
4136
->call('setSession', [service('mcp.session.store')])
4237
->call('setDiscovery', [param('kernel.project_dir'), param('mcp.discovery.scan_dirs'), param('mcp.discovery.exclude_dirs')])
4338

4439
->set('mcp.server', Server::class)
45-
->factory([service('mcp.server.builder'), 'build'])
46-
47-
->set('ai.mcp.data_collector', DataCollector::class)
48-
->args([service('ai.mcp.registry')])
49-
->tag('data_collector');
40+
->factory([service('mcp.server.builder'), 'build']);
5041
};

src/mcp-bundle/src/McpBundle.php

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,16 @@
2121
use Symfony\AI\McpBundle\Command\McpCommand;
2222
use Symfony\AI\McpBundle\Controller\McpController;
2323
use Symfony\AI\McpBundle\DependencyInjection\McpPass;
24+
use Symfony\AI\McpBundle\Profiler\DataCollector;
25+
use Symfony\AI\McpBundle\Profiler\TraceableRegistry;
2426
use Symfony\AI\McpBundle\Routing\RouteLoader;
2527
use Symfony\Bridge\PsrHttpMessage\Factory\HttpFoundationFactory;
2628
use Symfony\Bridge\PsrHttpMessage\Factory\PsrHttpFactory;
2729
use Symfony\Component\Config\Definition\Configurator\DefinitionConfigurator;
2830
use Symfony\Component\DependencyInjection\ChildDefinition;
2931
use Symfony\Component\DependencyInjection\ContainerBuilder;
3032
use Symfony\Component\DependencyInjection\ContainerInterface;
33+
use Symfony\Component\DependencyInjection\Definition;
3134
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
3235
use Symfony\Component\DependencyInjection\Reference;
3336
use Symfony\Component\HttpKernel\Bundle\AbstractBundle;
@@ -55,6 +58,19 @@ public function loadExtension(array $config, ContainerConfigurator $container, C
5558

5659
$this->registerMcpAttributes($builder);
5760

61+
if ($builder->getParameter('kernel.debug')) {
62+
$traceableRegistry = (new Definition('mcp.traceable_registry'))
63+
->setClass(TraceableRegistry::class)
64+
->setArguments([new Reference('.inner')])
65+
->setDecoratedService('mcp.registry');
66+
$builder->setDefinition('mcp.traceable_registry', $traceableRegistry);
67+
68+
$dataCollector = (new Definition(DataCollector::class))
69+
->setArguments([new Reference('mcp.traceable_registry')])
70+
->addTag('data_collector');
71+
$builder->setDefinition('mcp.data_collector', $dataCollector);
72+
}
73+
5874
if (isset($config['client_transports'])) {
5975
$this->configureClient($config['client_transports'], $config['http'], $builder);
6076
}

0 commit comments

Comments
 (0)