Skip to content

Commit 33b6e0c

Browse files
committed
chore: update mcp_tool_id to mcp_tool_ids for multi-select functionality
1 parent 452188e commit 33b6e0c

File tree

2 files changed

+47
-36
lines changed

2 files changed

+47
-36
lines changed

ui/src/views/application/component/McpServersDialog.vue

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,13 +32,13 @@
3232
message: $t('common.selectPlaceholder') + ` MCP ${$t('views.tool.title')}`,
3333
},
3434
]"
35-
prop="mcp_tool_id"
35+
prop="mcp_tool_ids"
3636
>
3737
<template #label>
3838
{{ `MCP ${$t('views.tool.title')}` }}
3939
<span class="color-danger">*</span>
4040
</template>
41-
<el-select v-model="form.mcp_tool_id" filterable>
41+
<el-select v-model="form.mcp_tool_ids" filterable multiple>
4242
<el-option
4343
v-for="mcpTool in mcpToolSelectOptions"
4444
:key="mcpTool.id"
@@ -121,7 +121,7 @@ const mcpServerJson = `{
121121
122122
const form = ref<any>({
123123
mcp_servers: '',
124-
mcp_tool_id: '',
124+
mcp_tool_ids: [],
125125
mcp_source: 'referencing',
126126
})
127127
@@ -135,7 +135,7 @@ watch(dialogVisible, (bool) => {
135135
if (!bool) {
136136
form.value = {
137137
mcp_servers: '',
138-
mcp_tool_id: '',
138+
mcp_tool_ids: '',
139139
mcp_source: 'referencing',
140140
}
141141
paramFormRef.value?.clearValidate()
@@ -146,17 +146,17 @@ function mcpSourceChange() {
146146
if (form.value.mcp_source === 'referencing') {
147147
form.value.mcp_servers = ''
148148
} else {
149-
form.value.mcp_tool_id = ''
149+
form.value.mcp_tool_ids = ''
150150
}
151151
}
152152
153153
const open = (data: any, selectOptions: any) => {
154154
form.value = { ...form.value, ...data }
155155
if (data.mcp_servers) {
156156
form.value.mcp_source = 'custom'
157-
} else if (data.mcp_tool_id) {
157+
} else if (data.mcp_tool_ids) {
158158
form.value.mcp_source = 'referencing'
159-
form.value.mcp_tool_id = data.mcp_tool_id
159+
form.value.mcp_tool_ids = data.mcp_tool_ids
160160
form.value.mcp_servers = ''
161161
} else {
162162
form.value.mcp_source = data.mcp_source || 'referencing'

ui/src/workflow/nodes/ai-chat-node/index.vue

Lines changed: 40 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -134,38 +134,40 @@
134134
<div
135135
class="w-full mb-16"
136136
v-if="
137-
chat_data.mcp_tool_id || (chat_data.mcp_servers && chat_data.mcp_servers.length > 0)
137+
chat_data.mcp_tool_ids?.length > 0 || (chat_data.mcp_servers && chat_data.mcp_servers.length > 0)
138138
"
139139
>
140-
<div class="flex-between border border-r-6 white-bg mb-4" style="padding: 5px 8px"
141-
v-if="relatedObject(mcpToolSelectOptions, chat_data.mcp_tool_id, 'id')"
142-
>
143-
<div class="flex align-center" style="line-height: 20px">
144-
<el-avatar
145-
v-if="relatedObject(mcpToolSelectOptions, chat_data.mcp_tool_id, 'id')?.icon"
146-
shape="square"
147-
:size="20"
148-
style="background: none"
149-
class="mr-8"
150-
>
151-
<img :src="resetUrl(relatedObject(mcpToolSelectOptions, chat_data.mcp_tool_id, 'id')?.icon)" alt="" />
152-
</el-avatar>
153-
<ToolIcon v-else type="MCP" class="mr-8" :size="20" />
140+
<template v-for="(item, index) in chat_data.mcp_tool_ids" :key="index">
141+
<div class="flex-between border border-r-6 white-bg mb-4" style="padding: 5px 8px"
142+
v-if="relatedObject(mcpToolSelectOptions, item, 'id')"
143+
>
144+
<div class="flex align-center" style="line-height: 20px">
145+
<el-avatar
146+
v-if="relatedObject(mcpToolSelectOptions, item, 'id')?.icon"
147+
shape="square"
148+
:size="20"
149+
style="background: none"
150+
class="mr-8"
151+
>
152+
<img :src="resetUrl(relatedObject(mcpToolSelectOptions, item, 'id')?.icon)" alt="" />
153+
</el-avatar>
154+
<ToolIcon v-else type="MCP" class="mr-8" :size="20" />
154155

155-
<div
156-
class="ellipsis"
157-
:title="relatedObject(mcpToolSelectOptions, chat_data.mcp_tool_id, 'id')?.name"
158-
>
159-
{{
160-
relatedObject(mcpToolSelectOptions, chat_data.mcp_tool_id, 'id')?.name ||
161-
$t('common.custom') + ' MCP'
162-
}}
156+
<div
157+
class="ellipsis"
158+
:title="relatedObject(mcpToolSelectOptions, item, 'id')?.name"
159+
>
160+
{{
161+
relatedObject(mcpToolSelectOptions, item, 'id')?.name ||
162+
$t('common.custom') + ' MCP'
163+
}}
164+
</div>
163165
</div>
166+
<el-button text @click="removeMcpTool(item)">
167+
<el-icon><Close /></el-icon>
168+
</el-button>
164169
</div>
165-
<el-button text @click="chat_data.mcp_tool_id = ''">
166-
<el-icon><Close /></el-icon>
167-
</el-button>
168-
</div>
170+
</template>
169171
</div>
170172
<!-- 工具 -->
171173
<div class="flex-between mb-16">
@@ -424,15 +426,15 @@ const mcpServersDialogRef = ref()
424426
function openMcpServersDialog() {
425427
const config = {
426428
mcp_servers: chat_data.value.mcp_servers,
427-
mcp_tool_id: chat_data.value.mcp_tool_id,
429+
mcp_tool_ids: chat_data.value.mcp_tool_ids,
428430
mcp_source: chat_data.value.mcp_source,
429431
}
430432
mcpServersDialogRef.value.open(config, mcpToolSelectOptions.value)
431433
}
432434
433435
function submitMcpServersDialog(config: any) {
434436
set(props.nodeModel.properties.node_data, 'mcp_servers', config.mcp_servers)
435-
set(props.nodeModel.properties.node_data, 'mcp_tool_id', config.mcp_tool_id)
437+
set(props.nodeModel.properties.node_data, 'mcp_tool_ids', config.mcp_tool_ids)
436438
set(props.nodeModel.properties.node_data, 'mcp_source', config.mcp_source)
437439
}
438440
@@ -447,6 +449,10 @@ function removeTool(id: any) {
447449
const list = props.nodeModel.properties.node_data.tool_ids.filter((v: any) => v !== id)
448450
set(props.nodeModel.properties.node_data, 'tool_ids', list)
449451
}
452+
function removeMcpTool(id: any) {
453+
const list = props.nodeModel.properties.node_data.mcp_tool_ids.filter((v: any) => v !== id)
454+
set(props.nodeModel.properties.node_data, 'mcp_tool_ids', list)
455+
}
450456
451457
const toolSelectOptions = ref<any[]>([])
452458
function getToolSelectOptions() {
@@ -506,6 +512,11 @@ onMounted(() => {
506512
chat_data.value.dialogue_type = 'WORKFLOW'
507513
}
508514
515+
if (props.nodeModel.properties.node_data?.mcp_tool_id) {
516+
set(props.nodeModel.properties.node_data, 'mcp_tool_ids', [props.nodeModel.properties.node_data?.mcp_tool_id])
517+
set(props.nodeModel.properties.node_data, 'mcp_tool_id', undefined)
518+
}
519+
509520
getToolSelectOptions()
510521
getMcpToolSelectOptions()
511522
})

0 commit comments

Comments
 (0)