From 766679f45ebe9dc18337f5441e25b2e7af9be2f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=90=BD=E6=9C=88?= <1569097443@qq.com> Date: Mon, 29 Dec 2025 21:15:46 +0800 Subject: [PATCH] Remove `getSummary` method and update descriptions in snapshots and code --- src/Capability/Discovery/Discoverer.php | 8 ++++---- src/Capability/Discovery/DocBlockParser.php | 13 ------------- src/Capability/Registry/Loader/ArrayLoader.php | 8 ++++---- ...ttpCombinedRegistrationTest-resources_list.json | 2 +- .../HttpComplexToolSchemaTest-tools_list.json | 2 +- .../HttpDiscoveryUserProfileTest-tools_list.json | 2 +- .../HttpSchemaShowcaseTest-tools_list.json | 2 +- .../StdioDiscoveryCalculatorTest-tools_list.json | 4 ++-- .../StdioEnvVariablesTest-tools_list.json | 2 +- .../Capability/Discovery/DocBlockParserTest.php | 14 -------------- 10 files changed, 15 insertions(+), 42 deletions(-) diff --git a/src/Capability/Discovery/Discoverer.php b/src/Capability/Discovery/Discoverer.php index 95a3fe5a..4fd3c0bb 100644 --- a/src/Capability/Discovery/Discoverer.php +++ b/src/Capability/Discovery/Discoverer.php @@ -220,7 +220,7 @@ private function processMethod(\ReflectionMethod $method, array &$discoveredCoun case McpTool::class: $docBlock = $this->docBlockParser->parseDocBlock($method->getDocComment() ?? null); $name = $instance->name ?? ('__invoke' === $methodName ? $classShortName : $methodName); - $description = $instance->description ?? $this->docBlockParser->getSummary($docBlock) ?? null; + $description = $instance->description ?? $this->docBlockParser->getDescription($docBlock) ?? null; $inputSchema = $this->schemaGenerator->generate($method); $tool = new Tool( $name, @@ -237,7 +237,7 @@ private function processMethod(\ReflectionMethod $method, array &$discoveredCoun case McpResource::class: $docBlock = $this->docBlockParser->parseDocBlock($method->getDocComment() ?? null); $name = $instance->name ?? ('__invoke' === $methodName ? $classShortName : $methodName); - $description = $instance->description ?? $this->docBlockParser->getSummary($docBlock) ?? null; + $description = $instance->description ?? $this->docBlockParser->getDescription($docBlock) ?? null; $resource = new Resource( $instance->uri, $name, @@ -256,7 +256,7 @@ private function processMethod(\ReflectionMethod $method, array &$discoveredCoun case McpPrompt::class: $docBlock = $this->docBlockParser->parseDocBlock($method->getDocComment() ?? null); $name = $instance->name ?? ('__invoke' === $methodName ? $classShortName : $methodName); - $description = $instance->description ?? $this->docBlockParser->getSummary($docBlock) ?? null; + $description = $instance->description ?? $this->docBlockParser->getDescription($docBlock) ?? null; $arguments = []; $paramTags = $this->docBlockParser->getParamTags($docBlock); foreach ($method->getParameters() as $param) { @@ -276,7 +276,7 @@ private function processMethod(\ReflectionMethod $method, array &$discoveredCoun case McpResourceTemplate::class: $docBlock = $this->docBlockParser->parseDocBlock($method->getDocComment() ?? null); $name = $instance->name ?? ('__invoke' === $methodName ? $classShortName : $methodName); - $description = $instance->description ?? $this->docBlockParser->getSummary($docBlock) ?? null; + $description = $instance->description ?? $this->docBlockParser->getDescription($docBlock) ?? null; $mimeType = $instance->mimeType; $annotations = $instance->annotations; $meta = $instance->meta ?? null; diff --git a/src/Capability/Discovery/DocBlockParser.php b/src/Capability/Discovery/DocBlockParser.php index 91f417f2..5c867e80 100644 --- a/src/Capability/Discovery/DocBlockParser.php +++ b/src/Capability/Discovery/DocBlockParser.php @@ -55,19 +55,6 @@ public function parseDocBlock(string|false|null $docComment): ?DocBlock } } - /** - * Gets the summary line from a DocBlock. - */ - public function getSummary(?DocBlock $docBlock): ?string - { - if (!$docBlock) { - return null; - } - $summary = trim($docBlock->getSummary()); - - return $summary ?: null; // Return null if empty after trimming - } - /** * Gets the description from a DocBlock (summary + description body). */ diff --git a/src/Capability/Registry/Loader/ArrayLoader.php b/src/Capability/Registry/Loader/ArrayLoader.php index fef17263..8014237a 100644 --- a/src/Capability/Registry/Loader/ArrayLoader.php +++ b/src/Capability/Registry/Loader/ArrayLoader.php @@ -105,7 +105,7 @@ public function load(RegistryInterface $registry): void $docBlock = $docBlockParser->parseDocBlock($reflection->getDocComment() ?? null); $name = $data['name'] ?? ('__invoke' === $methodName ? $classShortName : $methodName); - $description = $data['description'] ?? $docBlockParser->getSummary($docBlock) ?? null; + $description = $data['description'] ?? $docBlockParser->getDescription($docBlock) ?? null; } $inputSchema = $data['inputSchema'] ?? $schemaGenerator->generate($reflection); @@ -145,7 +145,7 @@ public function load(RegistryInterface $registry): void $docBlock = $docBlockParser->parseDocBlock($reflection->getDocComment() ?? null); $name = $data['name'] ?? ('__invoke' === $methodName ? $classShortName : $methodName); - $description = $data['description'] ?? $docBlockParser->getSummary($docBlock) ?? null; + $description = $data['description'] ?? $docBlockParser->getDescription($docBlock) ?? null; } $resource = new Resource( @@ -185,7 +185,7 @@ public function load(RegistryInterface $registry): void $docBlock = $docBlockParser->parseDocBlock($reflection->getDocComment() ?? null); $name = $data['name'] ?? ('__invoke' === $methodName ? $classShortName : $methodName); - $description = $data['description'] ?? $docBlockParser->getSummary($docBlock) ?? null; + $description = $data['description'] ?? $docBlockParser->getDescription($docBlock) ?? null; } $template = new ResourceTemplate( @@ -224,7 +224,7 @@ public function load(RegistryInterface $registry): void $docBlock = $docBlockParser->parseDocBlock($reflection->getDocComment() ?? null); $name = $data['name'] ?? ('__invoke' === $methodName ? $classShortName : $methodName); - $description = $data['description'] ?? $docBlockParser->getSummary($docBlock) ?? null; + $description = $data['description'] ?? $docBlockParser->getDescription($docBlock) ?? null; } $arguments = []; diff --git a/tests/Inspector/Http/snapshots/HttpCombinedRegistrationTest-resources_list.json b/tests/Inspector/Http/snapshots/HttpCombinedRegistrationTest-resources_list.json index 2d0c6ce2..2c7912e4 100644 --- a/tests/Inspector/Http/snapshots/HttpCombinedRegistrationTest-resources_list.json +++ b/tests/Inspector/Http/snapshots/HttpCombinedRegistrationTest-resources_list.json @@ -3,7 +3,7 @@ { "name": "priority_config_discovered", "uri": "config://priority", - "description": "A resource discovered via attributes." + "description": "A resource discovered via attributes.\n\nThis will be overridden by a manual registration with the same URI." } ] } diff --git a/tests/Inspector/Http/snapshots/HttpComplexToolSchemaTest-tools_list.json b/tests/Inspector/Http/snapshots/HttpComplexToolSchemaTest-tools_list.json index 5f47adca..5f9db0f5 100644 --- a/tests/Inspector/Http/snapshots/HttpComplexToolSchemaTest-tools_list.json +++ b/tests/Inspector/Http/snapshots/HttpComplexToolSchemaTest-tools_list.json @@ -2,7 +2,7 @@ "tools": [ { "name": "schedule_event", - "description": "Schedules a new event.", + "description": "Schedules a new event.\n\nThe inputSchema for this tool will reflect all parameter types and defaults.", "inputSchema": { "type": "object", "properties": { diff --git a/tests/Inspector/Http/snapshots/HttpDiscoveryUserProfileTest-tools_list.json b/tests/Inspector/Http/snapshots/HttpDiscoveryUserProfileTest-tools_list.json index f515430e..205ad0ce 100644 --- a/tests/Inspector/Http/snapshots/HttpDiscoveryUserProfileTest-tools_list.json +++ b/tests/Inspector/Http/snapshots/HttpDiscoveryUserProfileTest-tools_list.json @@ -25,7 +25,7 @@ }, { "name": "send_welcome", - "description": "Sends a welcome message to a user.", + "description": "Sends a welcome message to a user.\n\n(This is a placeholder - in a real app, it might queue an email).", "inputSchema": { "type": "object", "properties": { diff --git a/tests/Inspector/Http/snapshots/HttpSchemaShowcaseTest-tools_list.json b/tests/Inspector/Http/snapshots/HttpSchemaShowcaseTest-tools_list.json index 9b9b90e7..f79bfeba 100644 --- a/tests/Inspector/Http/snapshots/HttpSchemaShowcaseTest-tools_list.json +++ b/tests/Inspector/Http/snapshots/HttpSchemaShowcaseTest-tools_list.json @@ -32,7 +32,7 @@ }, { "name": "calculate_range", - "description": "Performs mathematical operations with numeric constraints.", + "description": "Performs mathematical operations with numeric constraints.\n\nDemonstrates: METHOD-LEVEL Schema", "inputSchema": { "type": "object", "properties": { diff --git a/tests/Inspector/Stdio/snapshots/StdioDiscoveryCalculatorTest-tools_list.json b/tests/Inspector/Stdio/snapshots/StdioDiscoveryCalculatorTest-tools_list.json index 5f184117..8ada3477 100644 --- a/tests/Inspector/Stdio/snapshots/StdioDiscoveryCalculatorTest-tools_list.json +++ b/tests/Inspector/Stdio/snapshots/StdioDiscoveryCalculatorTest-tools_list.json @@ -2,7 +2,7 @@ "tools": [ { "name": "calculate", - "description": "Performs a calculation based on the operation.", + "description": "Performs a calculation based on the operation.\n\nSupports 'add', 'subtract', 'multiply', 'divide'.\nObeys the 'precision' and 'allow_negative' settings from the config resource.", "icons": [ { "mimeType": "image/svg+xml", @@ -37,7 +37,7 @@ }, { "name": "update_setting", - "description": "Updates a specific configuration setting.", + "description": "Updates a specific configuration setting.\n\nNote: This requires more robust validation in a real app.", "inputSchema": { "type": "object", "properties": { diff --git a/tests/Inspector/Stdio/snapshots/StdioEnvVariablesTest-tools_list.json b/tests/Inspector/Stdio/snapshots/StdioEnvVariablesTest-tools_list.json index 32141675..7cac70bc 100644 --- a/tests/Inspector/Stdio/snapshots/StdioEnvVariablesTest-tools_list.json +++ b/tests/Inspector/Stdio/snapshots/StdioEnvVariablesTest-tools_list.json @@ -2,7 +2,7 @@ "tools": [ { "name": "process_data_by_mode", - "description": "Performs an action that can be modified by an environment variable.", + "description": "Performs an action that can be modified by an environment variable.\n\nThe MCP client should set 'APP_MODE' in its 'env' config for this server.", "inputSchema": { "type": "object", "properties": { diff --git a/tests/Unit/Capability/Discovery/DocBlockParserTest.php b/tests/Unit/Capability/Discovery/DocBlockParserTest.php index b8501b28..628538d7 100644 --- a/tests/Unit/Capability/Discovery/DocBlockParserTest.php +++ b/tests/Unit/Capability/Discovery/DocBlockParserTest.php @@ -28,19 +28,6 @@ protected function setUp(): void $this->parser = new DocBlockParser(); } - public function testGetSummaryReturnsCorrectSummary() - { - $method = new \ReflectionMethod(DocBlockTestFixture::class, 'methodWithSummaryOnly'); - $docComment = $method->getDocComment() ?: null; - $docBlock = $this->parser->parseDocBlock($docComment); - $this->assertEquals('Simple summary line.', $this->parser->getSummary($docBlock)); - - $method2 = new \ReflectionMethod(DocBlockTestFixture::class, 'methodWithSummaryAndDescription'); - $docComment2 = $method2->getDocComment() ?: null; - $docBlock2 = $this->parser->parseDocBlock($docComment2); - $this->assertEquals('Summary line here.', $this->parser->getSummary($docBlock2)); - } - public function testGetDescriptionReturnsCorrectDescription() { $method = new \ReflectionMethod(DocBlockTestFixture::class, 'methodWithSummaryAndDescription'); @@ -136,7 +123,6 @@ public function testHandlesMethodWithNoDocblockGracefully() $docBlock = $this->parser->parseDocBlock($docComment); $this->assertNull($docBlock); - $this->assertNull($this->parser->getSummary($docBlock)); $this->assertNull($this->parser->getDescription($docBlock)); $this->assertEmpty($this->parser->getParamTags($docBlock)); }