From 3035305c76bfaa3326e9a4fdb1230156db139c7e Mon Sep 17 00:00:00 2001 From: Yuta Saito Date: Fri, 10 Oct 2025 07:15:32 +0900 Subject: [PATCH] fix: Ensure MCP client stays open during tool call --- .../mcp_server/mcp_server_manager.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py b/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py index 3c27a65f06..2efd27a1aa 100644 --- a/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py +++ b/litellm/proxy/_experimental/mcp_server/mcp_server_manager.py @@ -1098,13 +1098,14 @@ class MCPServerManager: extra_headers=extra_headers, ) - async with client: - # Use the original tool name (without prefix) for the actual call - call_tool_params = MCPCallToolRequestParams( - name=original_tool_name, - arguments=arguments, - ) - tasks.append(asyncio.create_task(client.call_tool(call_tool_params))) + call_tool_params = MCPCallToolRequestParams( + name=original_tool_name, + arguments=arguments, + ) + async def _call_tool_via_client(client, params): + async with client: + return await client.call_tool(params) + tasks.append(asyncio.create_task(_call_tool_via_client(client, call_tool_params))) try: mcp_responses = await asyncio.gather(*tasks)