|
15 | 15 | use Symfony\AI\McpSdk\Server;
|
16 | 16 | use Symfony\AI\McpSdk\Server\JsonRpcHandler;
|
17 | 17 | use Symfony\AI\McpSdk\Server\NotificationHandler\InitializedHandler;
|
18 |
| -use Symfony\AI\McpSdk\Server\NotificationHandlerInterface; |
19 | 18 | use Symfony\AI\McpSdk\Server\RequestHandler\InitializeHandler;
|
20 | 19 | use Symfony\AI\McpSdk\Server\RequestHandler\PingHandler;
|
21 | 20 | use Symfony\AI\McpSdk\Server\RequestHandler\ToolCallHandler;
|
22 | 21 | use Symfony\AI\McpSdk\Server\RequestHandler\ToolListHandler;
|
23 |
| -use Symfony\AI\McpSdk\Server\RequestHandlerInterface; |
24 | 22 | use Symfony\AI\McpSdk\Server\Transport\Sse\Store\CachePoolStore;
|
25 | 23 |
|
26 | 24 | return static function (ContainerConfigurator $container): void {
|
27 | 25 | $container->services()
|
28 |
| - ->defaults() |
29 |
| - ->autowire() |
30 |
| - ->autoconfigure() |
31 |
| - ->instanceof(NotificationHandlerInterface::class) |
| 26 | + ->set('mcp.server.notification_handler.initialized', InitializedHandler::class) |
| 27 | + ->args([]) |
32 | 28 | ->tag('mcp.server.notification_handler')
|
33 |
| - ->instanceof(RequestHandlerInterface::class) |
| 29 | + ->set('mcp.server.request_handler.initialize', InitializeHandler::class) |
| 30 | + ->args([ |
| 31 | + param('mcp.app'), |
| 32 | + param('mcp.version'), |
| 33 | + ]) |
| 34 | + ->tag('mcp.server.request_handler') |
| 35 | + ->set('mcp.server.request_handler.ping', PingHandler::class) |
| 36 | + ->args([]) |
| 37 | + ->tag('mcp.server.request_handler') |
| 38 | + ->set('mcp.server.request_handler.tool_call', ToolCallHandler::class) |
| 39 | + ->args([ |
| 40 | + service('mcp.tool_executor'), |
| 41 | + ]) |
| 42 | + ->tag('mcp.server.request_handler') |
| 43 | + ->set('mcp.server.request_handler.tool_list', ToolListHandler::class) |
| 44 | + ->args([ |
| 45 | + service('mcp.tool_collection'), |
| 46 | + 20, |
| 47 | + ]) |
34 | 48 | ->tag('mcp.server.request_handler')
|
35 |
| - |
36 |
| - ->set(InitializedHandler::class) |
37 |
| - ->set(InitializeHandler::class) |
38 |
| - ->args([ |
39 |
| - '$name' => param('mcp.app'), |
40 |
| - '$version' => param('mcp.version'), |
41 |
| - ]) |
42 |
| - ->set(PingHandler::class) |
43 |
| - ->set(ToolCallHandler::class) |
44 |
| - ->set(ToolListHandler::class) |
45 | 49 |
|
46 | 50 | ->set('mcp.message_factory', Factory::class)
|
| 51 | + ->args([]) |
47 | 52 | ->set('mcp.server.json_rpc', JsonRpcHandler::class)
|
48 | 53 | ->args([
|
49 |
| - '$messageFactory' => service('mcp.message_factory'), |
50 |
| - '$requestHandlers' => tagged_iterator('mcp.server.request_handler'), |
51 |
| - '$notificationHandlers' => tagged_iterator('mcp.server.notification_handler'), |
| 54 | + service('mcp.message_factory'), |
| 55 | + tagged_iterator('mcp.server.request_handler'), |
| 56 | + tagged_iterator('mcp.server.notification_handler'), |
| 57 | + service('logger')->ignoreOnInvalid(), |
52 | 58 | ])
|
53 | 59 | ->set('mcp.server', Server::class)
|
54 | 60 | ->args([
|
55 |
| - '$jsonRpcHandler' => service('mcp.server.json_rpc'), |
| 61 | + service('mcp.server.json_rpc'), |
| 62 | + service('logger')->ignoreOnInvalid(), |
56 | 63 | ])
|
57 | 64 | ->alias(Server::class, 'mcp.server')
|
58 |
| - ->set(CachePoolStore::class) |
| 65 | + ->set('mcp.server.sse.store.cache_pool', CachePoolStore::class) |
| 66 | + ->args([ |
| 67 | + service('cache.app'), |
| 68 | + ]) |
59 | 69 | ;
|
60 | 70 | };
|
0 commit comments