diff --git a/app/agent/mcp.py b/app/agent/mcp.py index 01a48b094..0b3e1fada 100644 --- a/app/agent/mcp.py +++ b/app/agent/mcp.py @@ -90,11 +90,12 @@ async def _refresh_tools(self) -> Tuple[List[str], List[str]]: Returns: A tuple of (added_tools, removed_tools) """ - if not self.mcp_clients.session: + session = next(iter(self.mcp_clients.sessions.values()), None) + if not session: return [], [] # Get current tool schemas directly from the server - response = await self.mcp_clients.session.list_tools() + response = await session.list_tools() current_tools = {tool.name: tool.inputSchema for tool in response.tools} # Determine added, removed, and changed tools @@ -134,7 +135,7 @@ async def _refresh_tools(self) -> Tuple[List[str], List[str]]: async def think(self) -> bool: """Process current state and decide next action.""" # Check MCP session and tools availability - if not self.mcp_clients.session or not self.mcp_clients.tool_map: + if not self.mcp_clients.sessions or not self.mcp_clients.tool_map: logger.info("MCP service is no longer available, ending interaction") self.state = AgentState.FINISHED return False @@ -171,7 +172,7 @@ def _should_finish_execution(self, name: str, **kwargs) -> bool: async def cleanup(self) -> None: """Clean up MCP connection when done.""" - if self.mcp_clients.session: + if self.mcp_clients.sessions: await self.mcp_clients.disconnect() logger.info("MCP connection closed")