diff --git a/apps/application/flow/tools.py b/apps/application/flow/tools.py index da1678c6bf3..862b22c091e 100644 --- a/apps/application/flow/tools.py +++ b/apps/application/flow/tools.py @@ -546,4 +546,8 @@ def get_tool_id_list(workflow): tool_ids = node_data.get('tool_ids') or [] for _id in mcp_tool_ids + tool_ids: _result.append(_id) + elif node.get('type') == 'mcp-node': + mcp_tool_id = node.get('properties', {}).get('node_data', {}).get('mcp_tool_id') + if mcp_tool_id: + _result.append(mcp_tool_id) return _result diff --git a/apps/application/serializers/application.py b/apps/application/serializers/application.py index 970b482498f..8aed9c6dfdd 100644 --- a/apps/application/serializers/application.py +++ b/apps/application/serializers/application.py @@ -81,6 +81,10 @@ def hand_node(node, update_tool_map): tool_ids = node_data.get('tool_ids') or [] node_data['tool_ids'] = [update_tool_map.get(tool_id, tool_id) for tool_id in tool_ids] + if node.get('type') == 'mcp-node': + mcp_tool_id = (node.get('properties', {}).get('node_data', {}).get('mcp_tool_id') or '') + node.get('properties', {}).get('node_data', {})['mcp_tool_id'] = update_tool_map.get(mcp_tool_id, + mcp_tool_id) class MKInstance: diff --git a/apps/knowledge/serializers/common.py b/apps/knowledge/serializers/common.py index 2f9f14d71c0..3b9347148af 100644 --- a/apps/knowledge/serializers/common.py +++ b/apps/knowledge/serializers/common.py @@ -285,7 +285,7 @@ def update_resource_mapping_by_knowledge(knowledge_id: str): knowledge_instance_field_call_dict) if knowledge.type == KnowledgeType.WORKFLOW: knowledge_workflow = QuerySet(KnowledgeWorkflow).filter( - id=knowledge_id).order_by( + knowledge_id=knowledge_id).order_by( '-create_time')[0:1].first() if knowledge_workflow: save_workflow_mapping(knowledge_workflow.work_flow, ResourceType.KNOWLEDGE, diff --git a/apps/knowledge/serializers/knowledge_workflow.py b/apps/knowledge/serializers/knowledge_workflow.py index 66e36975f7a..b5bcb7037aa 100644 --- a/apps/knowledge/serializers/knowledge_workflow.py +++ b/apps/knowledge/serializers/knowledge_workflow.py @@ -60,6 +60,10 @@ def hand_node(node, update_tool_map): tool_ids = node_data.get('tool_ids') or [] node_data['tool_ids'] = [update_tool_map.get(tool_id, tool_id) for tool_id in tool_ids] + if node.get('type') == 'mcp-node': + mcp_tool_id = (node.get('properties', {}).get('node_data', {}).get('mcp_tool_id') or '') + node.get('properties', {}).get('node_data', {})['mcp_tool_id'] = update_tool_map.get(mcp_tool_id, + mcp_tool_id) class KnowledgeWorkflowModelSerializer(serializers.ModelSerializer):