From e730e576be74077cd6263ed83e220ecec29e49f6 Mon Sep 17 00:00:00 2001 From: Pavan Kumar <66913595+ascender1729@users.noreply.github.com> Date: Sun, 20 Apr 2025 11:34:39 +0000 Subject: [PATCH] fix(mcp): resolve async coroutine warning by awaiting batch_mcp_flow correctly --- examples/mcp_example/mock_math_server.py | 4 ++-- swarms/structs/agent.py | 9 ++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/examples/mcp_example/mock_math_server.py b/examples/mcp_example/mock_math_server.py index 4e92bcab..9de67735 100644 --- a/examples/mcp_example/mock_math_server.py +++ b/examples/mcp_example/mock_math_server.py @@ -22,5 +22,5 @@ def divide(a: int, b: int) -> float: if __name__ == "__main__": print("Starting Mock Math Server on port 8000...") - # The port parameter should be included in the transport_kwargs dictionary - mcp.run(transport="sse", transport_kwargs={"port": 8000}) + # Fix the parameters to match the FastMCP API + mcp.run(transport="sse", port=8000) diff --git a/swarms/structs/agent.py b/swarms/structs/agent.py index 18957994..cf6f921a 100644 --- a/swarms/structs/agent.py +++ b/swarms/structs/agent.py @@ -2778,11 +2778,10 @@ class Agent: def mcp_execution_flow(self, payload: dict) -> str | None: """Forward the tool-call dict to every MCP server in self.mcp_servers""" try: - # Create a new event loop to run the async function - loop = asyncio.new_event_loop() - asyncio.set_event_loop(loop) - result = loop.run_until_complete(batch_mcp_flow(self.mcp_servers, [payload])) - loop.close() + # Use asyncio.run which handles creating and closing the event loop + result = asyncio.run(batch_mcp_flow(self.mcp_servers, [payload])) + if not result: + return "No result returned from MCP server" return any_to_str(result) except Exception as err: logger.error(f"MCP flow failed: {err}")