Skip to content

Commit 4e14443

Browse files
committed
fix: disable resource name validation
1 parent c47aa9d commit 4e14443

File tree

2 files changed

+30
-3
lines changed

2 files changed

+30
-3
lines changed

src/Registry/McpItemsRegistry.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
namespace Butschster\ContextGenerator\McpServer\Registry;
66

77
use Butschster\ContextGenerator\McpServer\Attribute\Prompt;
8-
use Butschster\ContextGenerator\McpServer\Attribute\Resource;
8+
use Butschster\ContextGenerator\McpServer\Attribute\Resource as ResourceAttr;
99
use Butschster\ContextGenerator\McpServer\Attribute\Tool;
1010
use Butschster\ContextGenerator\McpServer\Tool\ToolAttributesParser;
1111
use Mcp\Server\Contracts\ReferenceRegistryInterface;
@@ -45,12 +45,12 @@ public function register(string $className): void
4545
}
4646

4747
// Check for Resource attribute
48-
$resourceAttributes = $reflection->getAttributes(Resource::class);
48+
$resourceAttributes = $reflection->getAttributes(ResourceAttr::class);
4949
if (!empty($resourceAttributes)) {
5050
$resource = $resourceAttributes[0]->newInstance();
5151

5252
$this->registry->registerResource(
53-
new \PhpMcp\Schema\Resource(
53+
new Resource(
5454
uri: $resource->uri,
5555
name: $resource->name,
5656
description: $resource->description,

src/Registry/Resource.php

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace Butschster\ContextGenerator\McpServer\Registry;
6+
7+
use PhpMcp\Schema\Annotations;
8+
9+
final class Resource extends \PhpMcp\Schema\Resource
10+
{
11+
private const string URI_PATTERN = '/^[a-zA-Z][a-zA-Z0-9+.-]*:\/\/[^\s]*$/';
12+
13+
public function __construct(
14+
public readonly string $uri,
15+
public readonly string $name,
16+
public readonly ?string $description = null,
17+
public readonly ?string $mimeType = null,
18+
public readonly ?Annotations $annotations = null,
19+
public readonly ?int $size = null,
20+
) {
21+
if (!preg_match(self::URI_PATTERN, $uri)) {
22+
throw new \InvalidArgumentException(
23+
"Invalid resource URI: must be a valid URI with a scheme and optional path.",
24+
);
25+
}
26+
}
27+
}

0 commit comments

Comments
 (0)