@@ -168,6 +168,50 @@ async def test_client_session_group_skips_unsupported_capabilities(
168168 assert "ping" in group .tools
169169
170170
171+ @pytest .mark .anyio
172+ @pytest .mark .anyio
173+ async def test_client_session_group_skips_unsupported_tools (
174+ mock_exit_stack : contextlib .AsyncExitStack ,
175+ ):
176+ mock_server_info = mock .Mock (spec = types .Implementation )
177+ mock_server_info .name = "TestServer"
178+
179+ mock_session = mock .AsyncMock (spec = mcp .ClientSession )
180+
181+ mock_prompt = mock .Mock (spec = types .Prompt )
182+ mock_prompt .name = "prompt"
183+
184+ mock_resource = mock .Mock (spec = types .Resource )
185+ mock_resource .name = "resource"
186+
187+ mock_session .list_prompts .return_value = mock .AsyncMock (prompts = [mock_prompt ])
188+ mock_session .list_resources .return_value = mock .AsyncMock (resources = [mock_resource ])
189+ mock_session .list_tools .return_value = mock .AsyncMock (tools = [])
190+
191+ capabilities = mock .Mock ()
192+ capabilities .tools = None
193+ capabilities .prompts = object ()
194+ capabilities .resources = object ()
195+
196+ initialize_result = mock .Mock ()
197+ initialize_result .capabilities = capabilities
198+ mock_session .initialize_result = initialize_result
199+
200+ group = ClientSessionGroup (exit_stack = mock_exit_stack )
201+
202+ await group ._aggregate_components (
203+ mock_server_info ,
204+ mock_session ,
205+ )
206+
207+ mock_session .list_tools .assert_not_awaited ()
208+ mock_session .list_prompts .assert_awaited_once ()
209+ mock_session .list_resources .assert_awaited_once ()
210+
211+ assert "prompt" in group .prompts
212+ assert "resource" in group .resources
213+
214+
171215@pytest .mark .anyio
172216async def test_client_session_group_connect_to_server_with_name_hook (mock_exit_stack : contextlib .AsyncExitStack ):
173217 """Test connecting with a component name hook."""
0 commit comments