diff --git a/examples/09-standalone-cli/index.php b/examples/09-standalone-cli/index.php index f7a67423..b8abd059 100644 --- a/examples/09-standalone-cli/index.php +++ b/examples/09-standalone-cli/index.php @@ -13,6 +13,7 @@ use Symfony\Component\Console as SymfonyConsole; use Symfony\Component\Console\Output\OutputInterface; +use Mcp\Capability\Registry; $debug = (bool) ($_SERVER['DEBUG'] ?? false); @@ -20,6 +21,9 @@ $output = new SymfonyConsole\Output\ConsoleOutput($debug ? OutputInterface::VERBOSITY_VERY_VERBOSE : OutputInterface::VERBOSITY_NORMAL); $logger = new SymfonyConsole\Logger\ConsoleLogger($output); +// Configure the registry (empty for this standalone example) +$registry = new Registry(); + // Configure the JsonRpcHandler and build the functionality $jsonRpcHandler = new Mcp\JsonRpc\Handler( Mcp\JsonRpc\MessageFactory::make(), @@ -28,7 +32,7 @@ ); // Set up the server -$sever = new Mcp\Server($jsonRpcHandler, $logger); +$sever = new Mcp\Server($jsonRpcHandler, $registry, $logger); // Create the transport layer using Stdio $transport = new Mcp\Server\Transport\StdioTransport(logger: $logger); diff --git a/src/Server.php b/src/Server.php index fc81382d..93837b43 100644 --- a/src/Server.php +++ b/src/Server.php @@ -11,6 +11,7 @@ namespace Mcp; +use Mcp\Capability\Registry\ReferenceProviderInterface; use Mcp\JsonRpc\Handler; use Mcp\Server\ServerBuilder; use Mcp\Server\TransportInterface; @@ -24,6 +25,7 @@ final class Server { public function __construct( private readonly Handler $jsonRpcHandler, + private readonly ReferenceProviderInterface $registry, private readonly LoggerInterface $logger = new NullLogger(), ) { } @@ -33,6 +35,11 @@ public static function make(): ServerBuilder return new ServerBuilder(); } + public function getRegistry(): ReferenceProviderInterface + { + return $this->registry; + } + public function connect(TransportInterface $transport): void { $transport->initialize(); diff --git a/src/Server/ServerBuilder.php b/src/Server/ServerBuilder.php index 4075cdba..352bc2f4 100644 --- a/src/Server/ServerBuilder.php +++ b/src/Server/ServerBuilder.php @@ -302,6 +302,7 @@ public function build(): Server promptGetter: $promptGetter, logger: $logger, ), + registry: $registry, logger: $logger, ); } diff --git a/tests/ServerTest.php b/tests/ServerTest.php index 19177112..fb5560ce 100644 --- a/tests/ServerTest.php +++ b/tests/ServerTest.php @@ -11,6 +11,7 @@ namespace Mcp\Tests; +use Mcp\Capability\Registry\ReferenceProviderInterface; use Mcp\JsonRpc\Handler; use Mcp\Server; use Mcp\Server\Transport\InMemoryTransport; @@ -41,7 +42,20 @@ public function testJsonExceptions() ->getMock(); $transport->expects($this->once())->method('send')->with('success'); - $server = new Server($handler, $logger); + $registry = $this->createMock(ReferenceProviderInterface::class); + + $server = new Server($handler, $registry, $logger); $server->connect($transport); } + + public function testGetRegistry() + { + $handler = $this->createMock(Handler::class); + $registry = $this->createMock(ReferenceProviderInterface::class); + $logger = new NullLogger(); + + $server = new Server($handler, $registry, $logger); + + $this->assertSame($registry, $server->getRegistry()); + } }