Skip to content

Commit 0e2a341

Browse files
authored
Fix ClientSessionGroup cleanup logic (#787)
1 parent e80c015 commit 0e2a341

File tree

1 file changed

+6
-5
lines changed

1 file changed

+6
-5
lines changed

src/mcp/client/session_group.py

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,10 @@ class ClientSessionGroup:
7777
the client and can be accessed via the session.
7878
7979
Example Usage:
80-
name_fn = lambda name, server_info: f"{(server_info.name)}-{name}"
80+
name_fn = lambda name, server_info: f"{(server_info.name)}_{name}"
8181
async with ClientSessionGroup(component_name_hook=name_fn) as group:
8282
for server_params in server_params:
83-
group.connect_to_server(server_param)
83+
await group.connect_to_server(server_param)
8484
...
8585
8686
"""
@@ -145,14 +145,15 @@ async def __aexit__(
145145
) -> bool | None:
146146
"""Closes session exit stacks and main exit stack upon completion."""
147147

148+
# Only close the main exit stack if we created it
149+
if self._owns_exit_stack:
150+
await self._exit_stack.aclose()
151+
148152
# Concurrently close session stacks.
149153
async with anyio.create_task_group() as tg:
150154
for exit_stack in self._session_exit_stacks.values():
151155
tg.start_soon(exit_stack.aclose)
152156

153-
# Only close the main exit stack if we created it
154-
if self._owns_exit_stack:
155-
await self._exit_stack.aclose()
156157

157158
@property
158159
def sessions(self) -> list[mcp.ClientSession]:

0 commit comments

Comments
 (0)