Skip to content

Commit 6c6fde6

Browse files
WIP
1 parent 1cdd1c1 commit 6c6fde6

File tree

2 files changed

+38
-0
lines changed

2 files changed

+38
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Symfony\AI\McpBundle\DependencyInjection\ContainerBuilder;
6+
7+
use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
8+
use Symfony\Component\DependencyInjection\Compiler\PriorityTaggedServiceTrait;
9+
use Symfony\Component\DependencyInjection\ContainerBuilder;
10+
11+
class MCPToolChainCompilerPass implements CompilerPassInterface
12+
{
13+
use PriorityTaggedServiceTrait;
14+
15+
public function process(ContainerBuilder $container): void
16+
{
17+
if (!$container->hasDefinition('my.service')) {
18+
return;
19+
}
20+
21+
$definition = $container->findDefinition('my.service');
22+
23+
// This handles finding and priority sorting automatically
24+
$taggedServices = $this->findAndSortTaggedServices('my.tag', $container);
25+
26+
foreach ($taggedServices as $reference) {
27+
$definition->addMethodCall('addHandler', [$reference]);
28+
}
29+
}
30+
}

src/mcp-bundle/src/McpBundle.php

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,20 @@
1515
use Symfony\AI\McpBundle\Controller\McpController;
1616
use Symfony\AI\McpBundle\Routing\RouteLoader;
1717
use Symfony\Component\Config\Definition\Configurator\DefinitionConfigurator;
18+
use Symfony\Component\DependencyInjection\Compiler\PriorityTaggedServiceUtil;
1819
use Symfony\Component\DependencyInjection\ContainerBuilder;
1920
use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
2021
use Symfony\Component\HttpKernel\Bundle\AbstractBundle;
2122

2223
final class McpBundle extends AbstractBundle
2324
{
25+
public function build(ContainerBuilder $container): void
26+
{
27+
parent::build($container);
28+
29+
$container->addCompilerPass(new PriorityTaggedServiceUtil());
30+
}
31+
2432
public function configure(DefinitionConfigurator $definition): void
2533
{
2634
$definition->import('../config/options.php');

0 commit comments

Comments
 (0)