Skip to content
This repository was archived by the owner on Jul 16, 2025. It is now read-only.

Commit cbb00a5

Browse files
committed
feat: add ResourceReadResult
1 parent ddce26c commit cbb00a5

File tree

7 files changed

+41
-10
lines changed

7 files changed

+41
-10
lines changed

examples/cli/src/Builder.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22

33
namespace App;
44

5+
use App\Manager\PromptManager;
6+
use App\Manager\ResourceManager;
7+
use App\Manager\ToolManager;
58
use PhpLlm\McpSdk\Server\NotificationHandler\InitializedHandler;
69
use PhpLlm\McpSdk\Server\RequestHandler\InitializeHandler;
710
use PhpLlm\McpSdk\Server\RequestHandler\PingHandler;

examples/cli/src/PromptManager.php renamed to examples/cli/src/Manager/PromptManager.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
<?php
22

3-
namespace App;
3+
namespace App\Manager;
44

5+
use App\ExamplePrompt;
56
use PhpLlm\McpSdk\Capability\Prompt\CollectionInterface;
67
use PhpLlm\McpSdk\Capability\Prompt\PromptGet;
78
use PhpLlm\McpSdk\Capability\Prompt\PromptGetterInterface;

examples/cli/src/ResourceManager.php renamed to examples/cli/src/Manager/ResourceManager.php

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,12 @@
11
<?php
22

3-
namespace App;
3+
namespace App\Manager;
44

5+
use App\ExampleResource;
56
use PhpLlm\McpSdk\Capability\Resource\CollectionInterface;
67
use PhpLlm\McpSdk\Capability\Resource\ResourceRead;
78
use PhpLlm\McpSdk\Capability\Resource\ResourceReaderInterface;
9+
use PhpLlm\McpSdk\Capability\Resource\ResourceReadResult;
810
use PhpLlm\McpSdk\Exception\ResourceNotFoundException;
911

1012
class ResourceManager implements CollectionInterface, ResourceReaderInterface
@@ -23,13 +25,17 @@ public function getMetadata(): array
2325
return $this->items;
2426
}
2527

26-
public function read(ResourceRead $request): mixed
28+
public function read(ResourceRead $request): ResourceReadResult
2729
{
2830
foreach ($this->items as $resource) {
2931
if ($request->uri === $resource->getUri()) {
3032
// In a real implementation, you would read the resource from its URI.
3133
// Here we just return a dummy string for demonstration purposes.
32-
return 'Content of '.$resource->getName();
34+
return new ResourceReadResult(
35+
$request->id,
36+
'Content of '.$resource->getName(),
37+
$resource->getUri(),
38+
);
3339
}
3440
}
3541

examples/cli/src/ToolManager.php renamed to examples/cli/src/Manager/ToolManager.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,8 @@
11
<?php
22

3-
namespace App;
3+
namespace App\Manager;
44

5+
use App\ExampleTool;
56
use PhpLlm\McpSdk\Capability\Tool\CollectionInterface;
67
use PhpLlm\McpSdk\Capability\Tool\ToolCall;
78
use PhpLlm\McpSdk\Capability\Tool\ToolExecutorInterface;
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace PhpLlm\McpSdk\Capability\Resource;
6+
7+
final readonly class ResourceReadResult
8+
{
9+
public function __construct(
10+
public string $id,
11+
public string $result,
12+
public string $uri,
13+
14+
/**
15+
* @var "text"|"blob"
16+
*/
17+
public string $type = 'text',
18+
public string $mimeType = 'text/plain',
19+
) {
20+
}
21+
}

src/Capability/Resource/ResourceReaderInterface.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@ interface ResourceReaderInterface
1111
* @throws ResourceReadException if the resource execution fails
1212
* @throws ResourceNotFoundException if the resource is not found
1313
*/
14-
public function read(ResourceRead $request): mixed;
14+
public function read(ResourceRead $request): ResourceReadResult;
1515
}

src/Server/RequestHandler/ResourceReadHandler.php

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,12 @@ public function createResponse(Request $message): Response|Error
2828
return Error::internalError($message->id, 'Error while reading resource');
2929
}
3030

31-
// TODO get uri and mimeType from a result. (Change to "blob" if binary)
3231
return new Response($message->id, [
3332
'contents' => [
3433
[
35-
'uri' => 'text',
36-
'mimeType' => 'text',
37-
'text' => $result,
34+
'uri' => $result->uri,
35+
'mimeType' => $result->mimeType,
36+
$result->type => $result->result,
3837
],
3938
],
4039
]);

0 commit comments

Comments
 (0)