Skip to content

Commit de91160

Browse files
committed
add add_resource_template()
1 parent 6f69a37 commit de91160

2 files changed

Lines changed: 24 additions & 3 deletions

File tree

src/mcp/server/mcpserver/resources/resource_manager.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,18 @@ def add_resource(self, resource: Resource) -> Resource:
5757
self._resources[str(resource.uri)] = resource
5858
return resource
5959

60+
def add_resource_template(self, template: ResourceTemplate) -> ResourceTemplate:
61+
"""Add a resource template to the manager.
62+
63+
Args:
64+
template: A ResourceTemplate instance to add.
65+
66+
Returns:
67+
The added resource template.
68+
"""
69+
self._templates[template.uri_template] = template
70+
return template
71+
6072
def add_template(
6173
self,
6274
fn: Callable[..., Any],
@@ -83,8 +95,7 @@ def add_template(
8395
meta=meta,
8496
security=security,
8597
)
86-
self._templates[template.uri_template] = template
87-
return template
98+
return self.add_resource_template(template)
8899

89100
async def get_resource(
90101
self, uri: AnyUrl | str, context: Context[LifespanContextT, RequestT]

src/mcp/server/mcpserver/server.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,7 @@
7979
Resource,
8080
ResourceManager,
8181
ResourceSecurity,
82+
ResourceTemplate,
8283
)
8384
from mcp.server.mcpserver.tools import Tool, ToolManager
8485
from mcp.server.mcpserver.utilities.context_injection import find_context_parameter
@@ -729,6 +730,14 @@ def add_resource(self, resource: Resource) -> None:
729730
"""
730731
self._resource_manager.add_resource(resource)
731732

733+
def add_resource_template(self, template: ResourceTemplate) -> None:
734+
"""Add a resource template to the server.
735+
736+
Args:
737+
template: A ResourceTemplate instance to add
738+
"""
739+
self._resource_manager.add_resource_template(template)
740+
732741
def resource(
733742
self,
734743
uri: str,
@@ -846,7 +855,7 @@ def decorator(fn: _CallableT) -> _CallableT:
846855
)
847856

848857
# Register as template
849-
self._resource_manager.add_template(
858+
template = ResourceTemplate.from_function(
850859
fn=fn,
851860
uri_template=uri,
852861
name=name,
@@ -858,6 +867,7 @@ def decorator(fn: _CallableT) -> _CallableT:
858867
security=security if security is not None else self._resource_security,
859868
meta=meta,
860869
)
870+
self._resource_manager.add_resource_template(template)
861871
else:
862872
if func_params:
863873
raise ValueError(

0 commit comments

Comments
 (0)