Skip to content

Commit c429097

Browse files
committed
feat: add MCP Service Config dialog and update tool form labels
1 parent 12feafb commit c429097

File tree

5 files changed

+88
-0
lines changed

5 files changed

+88
-0
lines changed

ui/src/locales/lang/en-US/views/tool.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ export default {
4040
form: {
4141
create: 'Create Tool',
4242
createMcp: 'Create MCP',
43+
mcpConfig: 'MCP Service Config',
4344
toolName: {
4445
label: 'Name',
4546
name: 'Tool Name',

ui/src/locales/lang/zh-CN/views/tool.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ export default {
3434
form: {
3535
create: '创建工具',
3636
createMcp: '创建MCP',
37+
mcpConfig: 'MCP服务配置',
3738
toolName: {
3839
label: '名称',
3940
name: '工具名称',

ui/src/locales/lang/zh-Hant/views/tool.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ export default {
3737
form: {
3838
create: '建立工具',
3939
createMcp: '建立MCP',
40+
mcpConfig: 'MCP服務配置',
4041
toolName: {
4142
label: '名稱',
4243
name: '工具名稱',
Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
<template>
2+
<el-dialog
3+
:title="$t('views.tool.form.mcpConfig')"
4+
width="600"
5+
v-model="dialogVisible"
6+
:close-on-click-modal="false"
7+
:close-on-press-escape="false"
8+
:destroy-on-close="true"
9+
:before-close="close"
10+
append-to-body
11+
>
12+
<el-form label-width="auto" label-position="top">
13+
<el-form-item>
14+
<el-input
15+
type="textarea"
16+
v-model="mcp_servers"
17+
rows="8"
18+
disabled
19+
></el-input>
20+
<AppIcon
21+
iconName="app-copy"
22+
class="copy-icon color-secondary"
23+
@click="copyClick(mcp_servers)"
24+
/>
25+
</el-form-item>
26+
</el-form>
27+
</el-dialog>
28+
</template>
29+
30+
<script setup lang="ts">
31+
import {ref} from 'vue'
32+
import {copyClick} from '@/utils/clipboard'
33+
34+
35+
const mcp_servers = ref<string>('')
36+
const dialogVisible = ref<boolean>(false)
37+
38+
const close = () => {
39+
dialogVisible.value = false
40+
}
41+
const open = (item: any) => {
42+
mcp_servers.value = item.code
43+
dialogVisible.value = true
44+
}
45+
46+
defineExpose({open,})
47+
</script>
48+
49+
<style scoped lang="scss">
50+
51+
.copy-icon {
52+
position: absolute;
53+
top: 6px;
54+
right: 8px;
55+
font-size: 16px;
56+
cursor: pointer;
57+
z-index: 2;
58+
}
59+
60+
.copy-icon:hover {
61+
opacity: 0.85;
62+
}
63+
64+
:deep(.el-textarea__inner) {
65+
padding-right: 34px; // 给右上角图标留空间
66+
}
67+
</style>

ui/src/views/tool/component/ToolListContainer.vue

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,13 @@
218218
</el-button>
219219
<template #dropdown>
220220
<el-dropdown-menu>
221+
<el-dropdown-item
222+
v-if="item.tool_type === 'MCP'"
223+
@click.stop="showMcpConfig(item)"
224+
>
225+
<AppIcon iconName="app-edit" class="color-secondary"></AppIcon>
226+
{{ $t('views.tool.form.mcpConfig') }}
227+
</el-dropdown-item>
221228
<el-dropdown-item
222229
v-if="item.template_id && permissionPrecise.edit(item.id)"
223230
@click.stop="addInternalTool(item, true)"
@@ -306,6 +313,7 @@
306313
<CreateFolderDialog ref="CreateFolderDialogRef" v-if="!isShared" @refresh="refreshFolder" />
307314
<ToolStoreDialog ref="toolStoreDialogRef" :api-type="apiType" @refresh="refresh" />
308315
<AddInternalToolDialog ref="AddInternalToolDialogRef" @refresh="confirmAddInternalTool" />
316+
<McpToolConfigDialog ref="McpToolConfigDialogRef" @refresh="refresh" />
309317
<AuthorizedWorkspace
310318
ref="AuthorizedWorkspaceDialogRef"
311319
v-if="isSystemShare"
@@ -336,6 +344,7 @@ import ToolStoreDialog from '@/views/tool/toolStore/ToolStoreDialog.vue'
336344
import AddInternalToolDialog from '@/views/tool/toolStore/AddInternalToolDialog.vue'
337345
import MoveToDialog from '@/components/folder-tree/MoveToDialog.vue'
338346
import ResourceAuthorizationDrawer from '@/components/resource-authorization-drawer/index.vue'
347+
import McpToolConfigDialog from "@/views/tool/component/McpToolConfigDialog.vue";
339348
import { resetUrl } from '@/utils/common'
340349
import { MsgSuccess, MsgConfirm, MsgError } from '@/utils/message'
341350
import { SourceTypeEnum } from '@/enums/common'
@@ -644,6 +653,15 @@ function importTool(file: any) {
644653
})
645654
}
646655
656+
const McpToolConfigDialogRef = ref()
657+
function showMcpConfig(item: any) {
658+
loadSharedApi({ type: 'tool', systemType: apiType.value })
659+
.getToolById(item?.id, loading)
660+
.then((res: any) => {
661+
McpToolConfigDialogRef.value.open(res.data)
662+
})
663+
}
664+
647665
function refresh(data?: any) {
648666
if (data) {
649667
const list = cloneDeep(tool.toolList)

0 commit comments

Comments
 (0)