@@ -344,36 +344,42 @@ async def _aggregate_components(self, server_info: types.Implementation, session
344344 tools_temp : dict [str , types .Tool ] = {}
345345 tool_to_session_temp : dict [str , mcp .ClientSession ] = {}
346346
347+ initialize_result = session .initialize_result
348+ capabilities = initialize_result .capabilities if initialize_result is not None else None
349+
347350 # Query the server for its prompts and aggregate to list.
348- try :
349- prompts = (await session .list_prompts ()).prompts
350- for prompt in prompts :
351- name = self ._component_name (prompt .name , server_info )
352- prompts_temp [name ] = prompt
353- component_names .prompts .add (name )
354- except MCPError as err : # pragma: no cover
355- logging .warning (f"Could not fetch prompts: { err } " )
351+ if capabilities is None or capabilities .prompts is not None :
352+ try :
353+ prompts = (await session .list_prompts ()).prompts
354+ for prompt in prompts :
355+ name = self ._component_name (prompt .name , server_info )
356+ prompts_temp [name ] = prompt
357+ component_names .prompts .add (name )
358+ except MCPError as err : # pragma: no cover
359+ logging .warning (f"Could not fetch prompts: { err } " )
356360
357361 # Query the server for its resources and aggregate to list.
358- try :
359- resources = (await session .list_resources ()).resources
360- for resource in resources :
361- name = self ._component_name (resource .name , server_info )
362- resources_temp [name ] = resource
363- component_names .resources .add (name )
364- except MCPError as err : # pragma: no cover
365- logging .warning (f"Could not fetch resources: { err } " )
362+ if capabilities is None or capabilities .resources is not None :
363+ try :
364+ resources = (await session .list_resources ()).resources
365+ for resource in resources :
366+ name = self ._component_name (resource .name , server_info )
367+ resources_temp [name ] = resource
368+ component_names .resources .add (name )
369+ except MCPError as err : # pragma: no cover
370+ logging .warning (f"Could not fetch resources: { err } " )
366371
367372 # Query the server for its tools and aggregate to list.
368- try :
369- tools = (await session .list_tools ()).tools
370- for tool in tools :
371- name = self ._component_name (tool .name , server_info )
372- tools_temp [name ] = tool
373- tool_to_session_temp [name ] = session
374- component_names .tools .add (name )
375- except MCPError as err : # pragma: no cover
376- logging .warning (f"Could not fetch tools: { err } " )
373+ if capabilities is None or capabilities .tools is not None :
374+ try :
375+ tools = (await session .list_tools ()).tools
376+ for tool in tools :
377+ name = self ._component_name (tool .name , server_info )
378+ tools_temp [name ] = tool
379+ tool_to_session_temp [name ] = session
380+ component_names .tools .add (name )
381+ except MCPError as err : # pragma: no cover
382+ logging .warning (f"Could not fetch tools: { err } " )
377383
378384 # Clean up exit stack for session if we couldn't retrieve anything
379385 # from the server.
0 commit comments