diff --git a/ui/src/enums/workflow.ts b/ui/src/enums/workflow.ts
index bcd83a05929..f3e6649a0b3 100644
--- a/ui/src/enums/workflow.ts
+++ b/ui/src/enums/workflow.ts
@@ -16,5 +16,6 @@ export enum WorkflowType {
FormNode = 'form-node',
TextToSpeechNode = 'text-to-speech-node',
SpeechToTextNode = 'speech-to-text-node',
- ImageGenerateNode = 'image-generate-node'
+ ImageGenerateNode = 'image-generate-node',
+ McpNode = 'mcp-node',
}
diff --git a/ui/src/locales/lang/en-US/views/application-workflow.ts b/ui/src/locales/lang/en-US/views/application-workflow.ts
index 6e1aa8c673c..d0aae1b58e8 100644
--- a/ui/src/locales/lang/en-US/views/application-workflow.ts
+++ b/ui/src/locales/lang/en-US/views/application-workflow.ts
@@ -220,6 +220,14 @@ export default {
text: 'Update the value of the global variable',
assign: 'Set Value'
},
+ mcpNode: {
+ label: 'MCP Server',
+ text: 'Call MCP Tools',
+ getToolsSuccess: 'Get Tools Successfully',
+ getTool: 'Get Tools',
+ tool: 'Tool',
+ toolParam: 'Tool Params'
+ },
imageGenerateNode: {
label: 'Image Generation',
text: 'Generate images based on provided text content',
diff --git a/ui/src/locales/lang/zh-CN/views/application-workflow.ts b/ui/src/locales/lang/zh-CN/views/application-workflow.ts
index 010964bb004..5427c6df08b 100644
--- a/ui/src/locales/lang/zh-CN/views/application-workflow.ts
+++ b/ui/src/locales/lang/zh-CN/views/application-workflow.ts
@@ -220,6 +220,14 @@ export default {
text: '更新全局变量的值',
assign: '赋值'
},
+ mcpNode: {
+ label: 'MCP 节点',
+ text: '调用 MCP 工具',
+ getToolsSuccess: '获取工具成功',
+ getTool: '获取工具',
+ tool: '工具',
+ toolParam: '工具参数'
+ },
imageGenerateNode: {
label: '图片生成',
text: '根据提供的文本内容生成图片',
diff --git a/ui/src/locales/lang/zh-Hant/views/application-workflow.ts b/ui/src/locales/lang/zh-Hant/views/application-workflow.ts
index b8cf464693a..71bf93b2763 100644
--- a/ui/src/locales/lang/zh-Hant/views/application-workflow.ts
+++ b/ui/src/locales/lang/zh-Hant/views/application-workflow.ts
@@ -220,6 +220,14 @@ export default {
text: '更新全域變數的值',
assign: '賦值'
},
+ mcpNode: {
+ label: 'MCP 節點',
+ text: '呼叫 MCP 工具',
+ getToolsSuccess: '獲取工具成功',
+ getTool: '獲取工具',
+ tool: '工具',
+ toolParam: '工具變數'
+ },
imageGenerateNode: {
label: '圖片生成',
text: '根據提供的文本內容生成圖片',
diff --git a/ui/src/views/application/component/McpServersDialog.vue b/ui/src/views/application/component/McpServersDialog.vue
new file mode 100644
index 00000000000..ac7f9c7d1e1
--- /dev/null
+++ b/ui/src/views/application/component/McpServersDialog.vue
@@ -0,0 +1,98 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/ui/src/workflow/common/data.ts b/ui/src/workflow/common/data.ts
index 6554c9b7db4..a30c6ffbb54 100644
--- a/ui/src/workflow/common/data.ts
+++ b/ui/src/workflow/common/data.ts
@@ -263,6 +263,24 @@ export const variableAssignNode = {
}
}
+export const mcpNode = {
+ type: WorkflowType.McpNode,
+ text: t('views.applicationWorkflow.nodes.mcpNode.text'),
+ label: t('views.applicationWorkflow.nodes.mcpNode.label'),
+ height: 252,
+ properties: {
+ stepName: t('views.applicationWorkflow.nodes.mcpNode.label'),
+ config: {
+ fields:[
+ {
+ label: t('common.result'),
+ value: 'result'
+ }
+ ]
+ }
+ }
+}
+
export const imageGenerateNode = {
type: WorkflowType.ImageGenerateNode,
text: t('views.applicationWorkflow.nodes.imageGenerateNode.text'),
@@ -332,7 +350,8 @@ export const menuNodes = [
documentExtractNode,
speechToTextNode,
textToSpeechNode,
- variableAssignNode
+ variableAssignNode,
+ mcpNode
]
/**
@@ -426,7 +445,8 @@ export const nodeDict: any = {
[WorkflowType.TextToSpeechNode]: textToSpeechNode,
[WorkflowType.SpeechToTextNode]: speechToTextNode,
[WorkflowType.ImageGenerateNode]: imageGenerateNode,
- [WorkflowType.VariableAssignNode]: variableAssignNode
+ [WorkflowType.VariableAssignNode]: variableAssignNode,
+ [WorkflowType.McpNode]: mcpNode,
}
export function isWorkFlow(type: string | undefined) {
return type === 'WORK_FLOW'
diff --git a/ui/src/workflow/icons/mcp-node-icon.vue b/ui/src/workflow/icons/mcp-node-icon.vue
new file mode 100644
index 00000000000..a7b580ff3d1
--- /dev/null
+++ b/ui/src/workflow/icons/mcp-node-icon.vue
@@ -0,0 +1,6 @@
+
+
+
+
+
+
diff --git a/ui/src/workflow/nodes/ai-chat-node/index.vue b/ui/src/workflow/nodes/ai-chat-node/index.vue
index e1951071229..9ab41294aa7 100644
--- a/ui/src/workflow/nodes/ai-chat-node/index.vue
+++ b/ui/src/workflow/nodes/ai-chat-node/index.vue
@@ -116,6 +116,22 @@
/>
+
+
+
+
{{ $t('views.applicationWorkflow.nodes.mcpNode.tool') }}
+
+
+
+
+
+
+
@@ -163,6 +179,7 @@
ref="ReasoningParamSettingDialogRef"
@refresh="submitReasoningDialog"
/>
+
+