@@ -319,14 +319,29 @@ async def list_resources(self) -> list[_mcp.Resource]:
319319 Note:
320320 - We don't cache resources as they might change.
321321 - We also don't subscribe to resource changes to avoid complexity.
322+
323+ Raises:
324+ ServerCapabilitiesError: If the server does not support resources.
322325 """
323326 async with self : # Ensure server is running
327+ if not self .capabilities .resources :
328+ raise exceptions .ServerCapabilitiesError (
329+ f'Server does not support resources capability. Available capabilities: { self .capabilities } '
330+ )
324331 result = await self ._client .list_resources ()
325332 return [_mcp .map_from_mcp_resource (r ) for r in result .resources ]
326333
327334 async def list_resource_templates (self ) -> list [_mcp .ResourceTemplate ]:
328- """Retrieve resource templates that are currently present on the server."""
335+ """Retrieve resource templates that are currently present on the server.
336+
337+ Raises:
338+ ServerCapabilitiesError: If the server does not support resources.
339+ """
329340 async with self : # Ensure server is running
341+ if not self .capabilities .resources :
342+ raise exceptions .ServerCapabilitiesError (
343+ f'Server does not support resources capability. Available capabilities: { self .capabilities } '
344+ )
330345 result = await self ._client .list_resource_templates ()
331346 return [_mcp .map_from_mcp_resource_template (t ) for t in result .resourceTemplates ]
332347
@@ -349,9 +364,16 @@ async def read_resource(
349364 Returns:
350365 The resource contents. If the resource has a single content item, returns that item directly.
351366 If the resource has multiple content items, returns a list of items.
367+
368+ Raises:
369+ ServerCapabilitiesError: If the server does not support resources.
352370 """
353371 resource_uri = uri if isinstance (uri , str ) else uri .uri
354372 async with self : # Ensure server is running
373+ if not self .capabilities .resources :
374+ raise exceptions .ServerCapabilitiesError (
375+ f'Server does not support resources capability. Available capabilities: { self .capabilities } '
376+ )
355377 result = await self ._client .read_resource (AnyUrl (resource_uri ))
356378 return (
357379 self ._get_content (result .contents [0 ])
0 commit comments