From 693ed6004a2184118c02b035d52a4cde3d3e6aa9 Mon Sep 17 00:00:00 2001 From: shaohuzhang1 <80892890+shaohuzhang1@users.noreply.github.com> Date: Wed, 9 Jul 2025 14:59:55 +0800 Subject: [PATCH] fix: MCP node execution failed (#3528) --- .../flow/step_node/mcp_node/impl/base_mcp_node.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/apps/application/flow/step_node/mcp_node/impl/base_mcp_node.py b/apps/application/flow/step_node/mcp_node/impl/base_mcp_node.py index e49ef7019..b08a7e02a 100644 --- a/apps/application/flow/step_node/mcp_node/impl/base_mcp_node.py +++ b/apps/application/flow/step_node/mcp_node/impl/base_mcp_node.py @@ -4,6 +4,7 @@ import json from typing import List from langchain_mcp_adapters.client import MultiServerMCPClient +from langchain_mcp_adapters.sessions import create_session from application.flow.i_step_node import NodeResult from application.flow.step_node.mcp_node.i_mcp_node import IMcpNode @@ -22,12 +23,12 @@ class BaseMcpNode(IMcpNode): params = json.loads(json.dumps(tool_params)) params = self.handle_variables(params) - async def call_tool(s, session, t, a): - async with MultiServerMCPClient(s) as client: - s = await client.sessions[session].call_tool(t, a) - return s + async def call_tool(t, a): + client = MultiServerMCPClient(servers) + async with create_session(client.connections[mcp_server]) as s: + return await s.call_tool(t, a) - res = asyncio.run(call_tool(servers, mcp_server, mcp_tool, params)) + res = asyncio.run(call_tool(mcp_tool, params)) return NodeResult( {'result': [content.text for content in res.content], 'tool_params': params, 'mcp_tool': mcp_tool}, {})