🐛 修复mcp服务器卡住导致的卡死

This commit is contained in:
FuQuan233 2025-08-20 11:40:54 +08:00
parent 89baec6abc
commit 5014d3014b
2 changed files with 10 additions and 3 deletions

View file

@ -380,7 +380,7 @@ async def process_messages(group_id: int):
new_messages.append({ new_messages.append({
"role": "tool", "role": "tool",
"tool_call_id": tool_call.id, "tool_call_id": tool_call.id,
"content": str(result.content) "content": str(result)
}) })
# 将工具调用的结果交给 LLM # 将工具调用的结果交给 LLM

View file

@ -1,4 +1,5 @@
from contextlib import AsyncExitStack from contextlib import AsyncExitStack
import asyncio
from mcp import ClientSession, StdioServerParameters from mcp import ClientSession, StdioServerParameters
from mcp.client.sse import sse_client from mcp.client.sse import sse_client
@ -64,9 +65,15 @@ class MCPClient:
server_name, real_tool_name = tool_name.split("___") server_name, real_tool_name = tool_name.split("___")
logger.info(f"正在服务器[{server_name}]上调用工具[{real_tool_name}]") logger.info(f"正在服务器[{server_name}]上调用工具[{real_tool_name}]")
session = self.sessions[server_name] session = self.sessions[server_name]
response = await session.call_tool(real_tool_name, tool_args) try:
response = await asyncio.wait_for(
session.call_tool(real_tool_name, tool_args), timeout=10
)
except asyncio.TimeoutError:
logger.error(f"调用工具[{real_tool_name}]超时")
return f"调用工具[{real_tool_name}]超时"
logger.debug(f"工具[{real_tool_name}]调用完成,响应: {response}") logger.debug(f"工具[{real_tool_name}]调用完成,响应: {response}")
return response return response.content
def get_friendly_name(self, tool_name: str): def get_friendly_name(self, tool_name: str):
server_name, real_tool_name = tool_name.split("___") server_name, real_tool_name = tool_name.split("___")