diff --git a/apps/application/chat_pipeline/step/chat_step/impl/base_chat_step.py b/apps/application/chat_pipeline/step/chat_step/impl/base_chat_step.py index fd05f7b8a40..8a586eaf44f 100644 --- a/apps/application/chat_pipeline/step/chat_step/impl/base_chat_step.py +++ b/apps/application/chat_pipeline/step/chat_step/impl/base_chat_step.py @@ -242,7 +242,8 @@ def _handle_mcp_request(self, mcp_source, mcp_servers, mcp_tool_ids, tool_ids, # 兼容老数据 if not mcp_tool_ids: mcp_tool_ids = [] - if mcp_source == 'custom' and mcp_servers and '"stdio"' not in mcp_servers: + if mcp_source == 'custom' and mcp_servers: + ToolExecutor().validate_mcp_transport(mcp_servers) mcp_servers_config = json.loads(mcp_servers) elif mcp_tool_ids: mcp_tools = QuerySet(Tool).filter(id__in=mcp_tool_ids).values() diff --git a/apps/application/flow/step_node/ai_chat_step_node/impl/base_chat_node.py b/apps/application/flow/step_node/ai_chat_step_node/impl/base_chat_node.py index 8e083d77036..f8c445f309b 100644 --- a/apps/application/flow/step_node/ai_chat_step_node/impl/base_chat_node.py +++ b/apps/application/flow/step_node/ai_chat_step_node/impl/base_chat_node.py @@ -234,7 +234,8 @@ def _handle_mcp_request(self, mcp_source, mcp_servers, mcp_tool_id, mcp_tool_ids mcp_tool_ids = [] if mcp_tool_id: mcp_tool_ids = list(set(mcp_tool_ids + [mcp_tool_id])) - if mcp_source == 'custom' and mcp_servers and '"stdio"' not in mcp_servers: + if mcp_source == 'custom' and mcp_servers: + ToolExecutor().validate_mcp_transport(mcp_servers) mcp_servers_config = json.loads(mcp_servers) mcp_servers_config = self.handle_variables(mcp_servers_config) elif mcp_tool_ids: 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 d463a03648b..f6c43dc7a79 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 @@ -9,6 +9,7 @@ from application.flow.i_step_node import NodeResult from application.flow.step_node.mcp_node.i_mcp_node import IMcpNode from tools.models import Tool +from common.utils.tool_code import ToolExecutor class BaseMcpNode(IMcpNode): @@ -34,6 +35,7 @@ def execute(self, mcp_servers, mcp_server, mcp_tool, mcp_tool_id, mcp_source, to else: servers = json.loads(mcp_servers) servers = self.handle_variables(servers) # 处理servers中的变量 + ToolExecutor().validate_mcp_transport(json.dumps(servers)) params = json.loads(json.dumps(tool_params)) params = self.handle_variables(params)