Jeremiah Lowin commited on
Commit
6d18388
·
1 Parent(s): f6ded82

Prepare to list tempaltes

Browse files
src/fastmcp/resources/manager.py CHANGED
@@ -62,6 +62,11 @@ class ResourceManager:
62
  logger.debug("Listing resources", extra={"count": len(self._resources)})
63
  return list(self._resources.values())
64
 
 
 
 
 
 
65
  def add_resource(self, resource: Resource) -> Resource:
66
  """Add a resource to the manager.
67
 
 
62
  logger.debug("Listing resources", extra={"count": len(self._resources)})
63
  return list(self._resources.values())
64
 
65
+ def list_templates(self) -> list[ResourceTemplate]:
66
+ """List all registered templates."""
67
+ logger.debug("Listing templates", extra={"count": len(self._templates)})
68
+ return list(self._templates.values())
69
+
70
  def add_resource(self, resource: Resource) -> Resource:
71
  """Add a resource to the manager.
72
 
src/fastmcp/server.py CHANGED
@@ -13,7 +13,8 @@ from mcp.server.stdio import stdio_server
13
  from mcp.server.sse import SseServerTransport
14
  from mcp.types import (
15
  Resource as MCPResource,
16
- Tool,
 
17
  TextContent,
18
  ImageContent,
19
  )
@@ -95,12 +96,14 @@ class FastMCP:
95
  self._mcp_server.call_tool()(self.call_tool)
96
  self._mcp_server.list_resources()(self.list_resources)
97
  self._mcp_server.read_resource()(self.read_resource)
 
 
98
 
99
- async def list_tools(self) -> list[Tool]:
100
  """List all available tools."""
101
  tools = self._tool_manager.list_tools()
102
  return [
103
- Tool(
104
  name=info.name,
105
  description=info.description,
106
  inputSchema=info.parameters,
@@ -139,6 +142,17 @@ class FastMCP:
139
  for resource in resources
140
  ]
141
 
 
 
 
 
 
 
 
 
 
 
 
142
  async def read_resource(self, uri: _BaseUrl) -> Union[str, bytes]:
143
  """Read a resource by URI."""
144
  resource = await self._resource_manager.get_resource(uri)
 
13
  from mcp.server.sse import SseServerTransport
14
  from mcp.types import (
15
  Resource as MCPResource,
16
+ Tool as MCPTool,
17
+ ResourceTemplate as MCPResourceTemplate,
18
  TextContent,
19
  ImageContent,
20
  )
 
96
  self._mcp_server.call_tool()(self.call_tool)
97
  self._mcp_server.list_resources()(self.list_resources)
98
  self._mcp_server.read_resource()(self.read_resource)
99
+ # TODO: This has not been added to MCP yet, see https://github.com/jlowin/fastmcp/issues/10
100
+ # self._mcp_server.list_resource_templates()(self.list_resource_templates)
101
 
102
+ async def list_tools(self) -> list[MCPTool]:
103
  """List all available tools."""
104
  tools = self._tool_manager.list_tools()
105
  return [
106
+ MCPTool(
107
  name=info.name,
108
  description=info.description,
109
  inputSchema=info.parameters,
 
142
  for resource in resources
143
  ]
144
 
145
+ async def list_resource_templates(self) -> list[MCPResourceTemplate]:
146
+ templates = self._resource_manager.list_templates()
147
+ return [
148
+ MCPResourceTemplate(
149
+ uriTemplate=template.uri_template,
150
+ name=template.name,
151
+ description=template.description,
152
+ )
153
+ for template in templates
154
+ ]
155
+
156
  async def read_resource(self, uri: _BaseUrl) -> Union[str, bytes]:
157
  """Read a resource by URI."""
158
  resource = await self._resource_manager.get_resource(uri)