fix: MCP node execution failed (#3528)

This commit is contained in:
shaohuzhang1 2025-07-09 14:59:55 +08:00 committed by GitHub
parent b9aa36ed1e
commit 693ed6004a
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -4,6 +4,7 @@ import json
from typing import List from typing import List
from langchain_mcp_adapters.client import MultiServerMCPClient 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.i_step_node import NodeResult
from application.flow.step_node.mcp_node.i_mcp_node import IMcpNode 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 = json.loads(json.dumps(tool_params))
params = self.handle_variables(params) params = self.handle_variables(params)
async def call_tool(s, session, t, a): async def call_tool(t, a):
async with MultiServerMCPClient(s) as client: client = MultiServerMCPClient(servers)
s = await client.sessions[session].call_tool(t, a) async with create_session(client.connections[mcp_server]) as s:
return 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( return NodeResult(
{'result': [content.text for content in res.content], 'tool_params': params, 'mcp_tool': mcp_tool}, {}) {'result': [content.text for content in res.content], 'tool_params': params, 'mcp_tool': mcp_tool}, {})