diff --git a/packages/global/core/app/mcpTools/utils.ts b/packages/global/core/app/mcpTools/utils.ts index d250f18e7..f8fc0ea61 100644 --- a/packages/global/core/app/mcpTools/utils.ts +++ b/packages/global/core/app/mcpTools/utils.ts @@ -5,7 +5,7 @@ import { FlowNodeTypeEnum } from '../../workflow/node/constant'; import { nanoid } from 'nanoid'; -import { type ToolType } from '../type'; +import { type McpToolConfigType } from '../type'; import { i18nT } from '../../../../web/i18n/utils'; import { type RuntimeNodeItemType } from '../../workflow/runtime/type'; @@ -16,7 +16,7 @@ export const getMCPToolSetRuntimeNode = ({ avatar }: { url: string; - toolList: ToolType[]; + toolList: McpToolConfigType[]; name?: string; avatar?: string; }): RuntimeNodeItemType => { @@ -45,7 +45,7 @@ export const getMCPToolRuntimeNode = ({ url, avatar = 'core/app/type/mcpToolsFill' }: { - tool: ToolType; + tool: McpToolConfigType; url: string; avatar?: string; }): RuntimeNodeItemType => { @@ -65,7 +65,7 @@ export const getMCPToolRuntimeNode = ({ ...Object.entries(tool.inputSchema?.properties || {}).map(([key, value]) => ({ key, label: key, - valueType: value.type as WorkflowIOValueTypeEnum, + valueType: value.type as WorkflowIOValueTypeEnum, // TODO: 这里需要做一个映射 description: value.description, toolDescription: value.description || key, required: tool.inputSchema?.required?.includes(key) || false, diff --git a/packages/global/core/app/type.d.ts b/packages/global/core/app/type.d.ts index 5a5d29b2a..f49e5d75f 100644 --- a/packages/global/core/app/type.d.ts +++ b/packages/global/core/app/type.d.ts @@ -16,16 +16,6 @@ import { FlowNodeInputTypeEnum } from '../../core/workflow/node/constant'; import type { WorkflowTemplateBasicType } from '@fastgpt/global/core/workflow/type'; import type { SourceMemberType } from '../../support/user/type'; -export type ToolType = { - name: string; - description: string; - inputSchema: { - type: string; - properties?: Record; - required?: string[]; - }; -}; - export type AppSchema = { _id: string; parentId?: ParentIdType; @@ -117,6 +107,16 @@ export type AppSimpleEditFormType = { chatConfig: AppChatConfigType; }; +export type McpToolConfigType = { + name: string; + description: string; + inputSchema: { + type: string; + properties?: Record; + required?: string[]; + }; +}; + /* app chat config type */ export type AppChatConfigType = { welcomeText?: string; diff --git a/packages/global/core/workflow/runtime/type.d.ts b/packages/global/core/workflow/runtime/type.d.ts index 9880c0745..f0a8d447b 100644 --- a/packages/global/core/workflow/runtime/type.d.ts +++ b/packages/global/core/workflow/runtime/type.d.ts @@ -7,7 +7,7 @@ import type { } from '../../chat/type'; import { NodeOutputItemType } from '../../chat/type'; import type { FlowNodeInputItemType, FlowNodeOutputItemType } from '../type/io.d'; -import type { StoreNodeItemType } from '../type/node'; +import type { NodeToolConfigType, StoreNodeItemType } from '../type/node'; import type { DispatchNodeResponseKeyEnum } from './constants'; import type { StoreEdgeItemType } from '../type/edge'; import type { NodeInputKeyEnum } from '../constants'; @@ -102,6 +102,9 @@ export type RuntimeNodeItemType = { pluginId?: string; // workflow id / plugin id version?: string; + + // tool + toolConfig?: NodeToolConfigType; }; export type RuntimeEdgeItemType = StoreEdgeItemType & { @@ -114,7 +117,7 @@ export type DispatchNodeResponseType = { runningTime?: number; query?: string; textOutput?: string; - error?: Record; + error?: Record | string; customInputs?: Record; customOutputs?: Record; nodeInputs?: Record; diff --git a/packages/global/core/workflow/type/node.d.ts b/packages/global/core/workflow/type/node.d.ts index f27deb32f..eb128795b 100644 --- a/packages/global/core/workflow/type/node.d.ts +++ b/packages/global/core/workflow/type/node.d.ts @@ -20,11 +20,17 @@ import { RuntimeNodeItemType } from '../runtime/type'; import { PluginTypeEnum } from '../../plugin/constants'; import { RuntimeEdgeItemType, StoreEdgeItemType } from './edge'; import { NextApiResponse } from 'next'; -import { AppDetailType, AppSchema } from '../../app/type'; +import type { AppDetailType, AppSchema, McpToolConfigType } from '../../app/type'; import type { ParentIdType } from 'common/parentFolder/type'; -import { AppTypeEnum } from 'core/app/constants'; +import { AppTypeEnum } from '../../app/constants'; import type { WorkflowInteractiveResponseType } from '../template/system/interactive/type'; +export type NodeToolConfigType = { + mcpTool?: McpToolConfigType & { + url: string; + }; +}; + export type FlowNodeCommonType = { parentNodeId?: string; flowNodeType: FlowNodeTypeEnum; // render node card @@ -46,8 +52,10 @@ export type FlowNodeCommonType = { // plugin data pluginId?: string; isFolder?: boolean; - // pluginType?: AppTypeEnum; pluginData?: PluginDataType; + + // tool data + toolData?: NodeToolConfigType; }; export type PluginDataType = { diff --git a/packages/service/core/app/mcp.ts b/packages/service/core/app/mcp.ts index ae65fbe21..aa097a607 100644 --- a/packages/service/core/app/mcp.ts +++ b/packages/service/core/app/mcp.ts @@ -1,7 +1,7 @@ import { Client } from '@modelcontextprotocol/sdk/client/index.js'; import { SSEClientTransport } from '@modelcontextprotocol/sdk/client/sse.js'; import { StreamableHTTPClientTransport } from '@modelcontextprotocol/sdk/client/streamableHttp.js'; -import { type ToolType } from '@fastgpt/global/core/app/type'; +import { type McpToolConfigType } from '@fastgpt/global/core/app/type'; import { addLog } from '../../common/system/log'; import { retryFn } from '@fastgpt/global/common/system/utils'; @@ -41,7 +41,7 @@ export class MCPClient { * Get available tools list * @returns List of tools */ - public async getTools(): Promise { + public async getTools(): Promise { try { const client = await this.getConnection(); const response = await client.listTools(); diff --git a/projects/app/src/components/core/chat/ChatContainer/ChatBox/index.tsx b/projects/app/src/components/core/chat/ChatContainer/ChatBox/index.tsx index e0ba4f01f..9a6ae1b92 100644 --- a/projects/app/src/components/core/chat/ChatContainer/ChatBox/index.tsx +++ b/projects/app/src/components/core/chat/ChatContainer/ChatBox/index.tsx @@ -553,7 +553,7 @@ const ChatBox = ({ const responseData = mergeChatResponseData(item.responseData || []); if (responseData[responseData.length - 1]?.error) { toast({ - title: t(responseData[responseData.length - 1].error?.message), + title: t(getErrText(responseData[responseData.length - 1].error)), status: 'error' }); } diff --git a/projects/app/src/components/core/chat/ChatContainer/PluginRunBox/context.tsx b/projects/app/src/components/core/chat/ChatContainer/PluginRunBox/context.tsx index 893c45ddd..75d69920c 100644 --- a/projects/app/src/components/core/chat/ChatContainer/PluginRunBox/context.tsx +++ b/projects/app/src/components/core/chat/ChatContainer/PluginRunBox/context.tsx @@ -22,6 +22,7 @@ import { ChatRecordContext } from '@/web/core/chat/context/chatRecordContext'; import { type AppFileSelectConfigType } from '@fastgpt/global/core/app/type'; import { defaultAppSelectFileConfig } from '@fastgpt/global/core/app/constants'; import { mergeChatResponseData } from '@fastgpt/global/core/chat/utils'; +import { getErrText } from '@fastgpt/global/common/error/utils'; type PluginRunContextType = PluginRunBoxProps & { isChatting: boolean; @@ -258,7 +259,7 @@ const PluginRunContextProvider = ({ const responseData = mergeChatResponseData(item.responseData || []); if (responseData[responseData.length - 1]?.error) { toast({ - title: t(responseData[responseData.length - 1].error?.message), + title: t(getErrText(responseData[responseData.length - 1].error)), status: 'error' }); } diff --git a/projects/app/src/pageComponents/app/detail/MCPTools/ChatTest.tsx b/projects/app/src/pageComponents/app/detail/MCPTools/ChatTest.tsx index 33ea97648..5fb56d7b8 100644 --- a/projects/app/src/pageComponents/app/detail/MCPTools/ChatTest.tsx +++ b/projects/app/src/pageComponents/app/detail/MCPTools/ChatTest.tsx @@ -7,7 +7,7 @@ import ChatRecordContextProvider from '@/web/core/chat/context/chatRecordContext import { Box, Button, Flex, Switch, Textarea } from '@chakra-ui/react'; import { cardStyles } from '../constants'; import { useTranslation } from 'react-i18next'; -import { type ToolType } from '@fastgpt/global/core/app/type'; +import { type McpToolConfigType } from '@fastgpt/global/core/app/type'; import FormLabel from '@fastgpt/web/components/common/MyBox/FormLabel'; import QuestionTip from '@fastgpt/web/components/common/MyTooltip/QuestionTip'; import { Controller, useForm } from 'react-hook-form'; @@ -19,7 +19,7 @@ import { postRunMCPTool } from '@/web/core/app/api/plugin'; const JsonEditor = dynamic(() => import('@fastgpt/web/components/common/Textarea/JsonEditor')); -const ChatTest = ({ currentTool, url }: { currentTool: ToolType | null; url: string }) => { +const ChatTest = ({ currentTool, url }: { currentTool: McpToolConfigType | null; url: string }) => { const { t } = useTranslation(); const [output, setOutput] = useState(''); @@ -135,7 +135,7 @@ const ChatTest = ({ currentTool, url }: { currentTool: ToolType | null; url: str ); }; -const Render = ({ currentTool, url }: { currentTool: ToolType | null; url: string }) => { +const Render = ({ currentTool, url }: { currentTool: McpToolConfigType | null; url: string }) => { const { chatId } = useChatStore(); const { appDetail } = useContextSelector(AppContext, (v) => v); @@ -178,7 +178,7 @@ const RenderToolInput = ({ type: string; description?: string; }; - toolData: ToolType | null; + toolData: McpToolConfigType | null; value: any; onChange: (value: any) => void; isInvalid: boolean; diff --git a/projects/app/src/pageComponents/app/detail/MCPTools/Edit.tsx b/projects/app/src/pageComponents/app/detail/MCPTools/Edit.tsx index c0a3b9e5b..d0fab8f45 100644 --- a/projects/app/src/pageComponents/app/detail/MCPTools/Edit.tsx +++ b/projects/app/src/pageComponents/app/detail/MCPTools/Edit.tsx @@ -7,7 +7,7 @@ import AppCard from './AppCard'; import ChatTest from './ChatTest'; import MyBox from '@fastgpt/web/components/common/MyBox'; import EditForm from './EditForm'; -import { type ToolType } from '@fastgpt/global/core/app/type'; +import { type McpToolConfigType } from '@fastgpt/global/core/app/type'; const Edit = ({ url, @@ -19,10 +19,10 @@ const Edit = ({ }: { url: string; setUrl: (url: string) => void; - toolList: ToolType[]; - setToolList: (toolList: ToolType[]) => void; - currentTool: ToolType | null; - setCurrentTool: (tool: ToolType) => void; + toolList: McpToolConfigType[]; + setToolList: (toolList: McpToolConfigType[]) => void; + currentTool: McpToolConfigType | null; + setCurrentTool: (tool: McpToolConfigType) => void; }) => { const { isPc } = useSystem(); diff --git a/projects/app/src/pageComponents/app/detail/MCPTools/EditForm.tsx b/projects/app/src/pageComponents/app/detail/MCPTools/EditForm.tsx index e9c9e72bb..1824ea401 100644 --- a/projects/app/src/pageComponents/app/detail/MCPTools/EditForm.tsx +++ b/projects/app/src/pageComponents/app/detail/MCPTools/EditForm.tsx @@ -7,7 +7,7 @@ import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; import { AppContext } from '../context'; import { useContextSelector } from 'use-context-selector'; import MyIconButton from '@fastgpt/web/components/common/Icon/button'; -import { type ToolType } from '@fastgpt/global/core/app/type'; +import { type McpToolConfigType } from '@fastgpt/global/core/app/type'; import MyModal from '@fastgpt/web/components/common/MyModal'; import Avatar from '@fastgpt/web/components/common/Avatar'; import MyBox from '@fastgpt/web/components/common/MyBox'; @@ -24,14 +24,14 @@ const EditForm = ({ }: { url: string; setUrl: (url: string) => void; - toolList: ToolType[]; - setToolList: (toolList: ToolType[]) => void; - currentTool: ToolType | null; - setCurrentTool: (tool: ToolType) => void; + toolList: McpToolConfigType[]; + setToolList: (toolList: McpToolConfigType[]) => void; + currentTool: McpToolConfigType | null; + setCurrentTool: (tool: McpToolConfigType) => void; }) => { const { t } = useTranslation(); - const [toolDetail, setToolDetail] = useState(null); + const [toolDetail, setToolDetail] = useState(null); const { runAsync: runGetMCPTools, loading: isGettingTools } = useRequest2( async (data: getMCPToolsBody) => await getMCPTools(data), @@ -180,7 +180,7 @@ const EditForm = ({ export default React.memo(EditForm); -const ToolDetailModal = ({ tool, onClose }: { tool: ToolType; onClose: () => void }) => { +const ToolDetailModal = ({ tool, onClose }: { tool: McpToolConfigType; onClose: () => void }) => { const { t } = useTranslation(); const appDetail = useContextSelector(AppContext, (v) => v.appDetail); diff --git a/projects/app/src/pageComponents/app/detail/MCPTools/Header.tsx b/projects/app/src/pageComponents/app/detail/MCPTools/Header.tsx index 1dd04a603..5bcacce83 100644 --- a/projects/app/src/pageComponents/app/detail/MCPTools/Header.tsx +++ b/projects/app/src/pageComponents/app/detail/MCPTools/Header.tsx @@ -8,10 +8,10 @@ import { getAppFolderPath } from '@/web/core/app/api/app'; import { useCallback } from 'react'; import { useRouter } from 'next/router'; import { useSystemStore } from '@/web/common/system/useSystemStore'; -import { type ToolType } from '@fastgpt/global/core/app/type'; +import { type McpToolConfigType } from '@fastgpt/global/core/app/type'; import { postUpdateMCPTools } from '@/web/core/app/api/plugin'; -const Header = ({ url, toolList }: { url: string; toolList: ToolType[] }) => { +const Header = ({ url, toolList }: { url: string; toolList: McpToolConfigType[] }) => { const { t } = useTranslation(); const appId = useContextSelector(AppContext, (v) => v.appId); const router = useRouter(); diff --git a/projects/app/src/pageComponents/app/detail/MCPTools/index.tsx b/projects/app/src/pageComponents/app/detail/MCPTools/index.tsx index 03d59b3f7..f68584e12 100644 --- a/projects/app/src/pageComponents/app/detail/MCPTools/index.tsx +++ b/projects/app/src/pageComponents/app/detail/MCPTools/index.tsx @@ -5,7 +5,7 @@ import Edit from './Edit'; import { useContextSelector } from 'use-context-selector'; import { AppContext } from '../context'; import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant'; -import { type ToolType } from '@fastgpt/global/core/app/type'; +import { type McpToolConfigType } from '@fastgpt/global/core/app/type'; import { type MCPToolSetData } from '@/pageComponents/dashboard/apps/MCPToolsEditModal'; const MCPTools = () => { @@ -18,8 +18,10 @@ const MCPTools = () => { }, [appDetail.modules]); const [url, setUrl] = useState(toolSetData?.url || ''); - const [toolList, setToolList] = useState(toolSetData?.toolList || []); - const [currentTool, setCurrentTool] = useState(toolSetData?.toolList[0] || null); + const [toolList, setToolList] = useState(toolSetData?.toolList || []); + const [currentTool, setCurrentTool] = useState( + toolSetData?.toolList[0] || null + ); return ( diff --git a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeToolSet.tsx b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeToolSet.tsx index be1944959..eaa6ba63a 100644 --- a/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeToolSet.tsx +++ b/projects/app/src/pageComponents/app/detail/WorkflowComponents/Flow/nodes/NodeToolSet.tsx @@ -5,14 +5,15 @@ import NodeCard from './render/NodeCard'; import IOTitle from '../components/IOTitle'; import Container from '../components/Container'; import { useTranslation } from 'react-i18next'; -import { type ToolType } from '@fastgpt/global/core/app/type'; +import { type McpToolConfigType } from '@fastgpt/global/core/app/type'; import { Box, Flex } from '@chakra-ui/react'; const NodeToolSet = ({ data, selected }: NodeProps) => { const { t } = useTranslation(); const { inputs } = data; - const toolList: ToolType[] = inputs.find((item) => item.key === 'toolSetData')?.value?.toolList; + const toolList: McpToolConfigType[] = inputs.find((item) => item.key === 'toolSetData')?.value + ?.toolList; return ( diff --git a/projects/app/src/pageComponents/dashboard/apps/MCPToolsEditModal.tsx b/projects/app/src/pageComponents/dashboard/apps/MCPToolsEditModal.tsx index b19700f4d..872a24c09 100644 --- a/projects/app/src/pageComponents/dashboard/apps/MCPToolsEditModal.tsx +++ b/projects/app/src/pageComponents/dashboard/apps/MCPToolsEditModal.tsx @@ -20,17 +20,16 @@ import Avatar from '@fastgpt/web/components/common/Avatar'; import MyModal from '@fastgpt/web/components/common/MyModal'; import MyTooltip from '@fastgpt/web/components/common/MyTooltip'; import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; -import { useToast } from '@fastgpt/web/hooks/useToast'; import { useForm } from 'react-hook-form'; import { useTranslation } from 'react-i18next'; import { AppListContext } from './context'; import { useContextSelector } from 'use-context-selector'; -import { type ToolType } from '@fastgpt/global/core/app/type'; +import { type McpToolConfigType } from '@fastgpt/global/core/app/type'; import type { getMCPToolsBody } from '@/pages/api/support/mcp/client/getTools'; export type MCPToolSetData = { url: string; - toolList: ToolType[]; + toolList: McpToolConfigType[]; }; export type EditMCPToolsProps = { @@ -41,7 +40,6 @@ export type EditMCPToolsProps = { const MCPToolsEditModal = ({ onClose }: { onClose: () => void }) => { const { t } = useTranslation(); - const { toast } = useToast(); const { parentId, loadMyApps } = useContextSelector(AppListContext, (v) => v); @@ -81,7 +79,7 @@ const MCPToolsEditModal = ({ onClose }: { onClose: () => void }) => { const { runAsync: runGetMCPTools, loading: isGettingTools } = useRequest2( (data: getMCPToolsBody) => getMCPTools(data), { - onSuccess: (res: ToolType[]) => { + onSuccess: (res: McpToolConfigType[]) => { setValue('mcpData.toolList', res); }, errorToast: t('app:MCP_tools_parse_failed') diff --git a/projects/app/src/pages/api/core/app/mcpTools/create.ts b/projects/app/src/pages/api/core/app/mcpTools/create.ts index d4a8c8099..e04b05ebf 100644 --- a/projects/app/src/pages/api/core/app/mcpTools/create.ts +++ b/projects/app/src/pages/api/core/app/mcpTools/create.ts @@ -4,7 +4,7 @@ import { TeamAppCreatePermissionVal } from '@fastgpt/global/support/permission/u import { authApp } from '@fastgpt/service/support/permission/app/auth'; import { authUserPer } from '@fastgpt/service/support/permission/user/auth'; import { type CreateAppBody, onCreateApp } from '../create'; -import { type ToolType } from '@fastgpt/global/core/app/type'; +import { type McpToolConfigType } from '@fastgpt/global/core/app/type'; import { mongoSessionRun } from '@fastgpt/service/common/mongo/sessionRun'; import { AppTypeEnum } from '@fastgpt/global/core/app/constants'; import { @@ -22,7 +22,7 @@ export type createMCPToolsBody = Omit< 'type' | 'modules' | 'edges' | 'chatConfig' > & { url: string; - toolList: ToolType[]; + toolList: McpToolConfigType[]; }; export type createMCPToolsResponse = {}; diff --git a/projects/app/src/pages/api/core/app/mcpTools/update.ts b/projects/app/src/pages/api/core/app/mcpTools/update.ts index e335844ca..909916364 100644 --- a/projects/app/src/pages/api/core/app/mcpTools/update.ts +++ b/projects/app/src/pages/api/core/app/mcpTools/update.ts @@ -1,6 +1,6 @@ import type { ApiRequestProps, ApiResponseType } from '@fastgpt/service/type/next'; import { NextAPI } from '@/service/middleware/entry'; -import { type AppDetailType, type ToolType } from '@fastgpt/global/core/app/type'; +import { type AppDetailType, type McpToolConfigType } from '@fastgpt/global/core/app/type'; import { authApp } from '@fastgpt/service/support/permission/app/auth'; import { ManagePermissionVal } from '@fastgpt/global/support/permission/constant'; import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant'; @@ -24,7 +24,7 @@ export type updateMCPToolsQuery = {}; export type updateMCPToolsBody = { appId: string; url: string; - toolList: ToolType[]; + toolList: McpToolConfigType[]; }; export type updateMCPToolsResponse = {}; diff --git a/projects/app/src/pages/api/support/mcp/client/getTools.ts b/projects/app/src/pages/api/support/mcp/client/getTools.ts index c6c834e59..5b29bd933 100644 --- a/projects/app/src/pages/api/support/mcp/client/getTools.ts +++ b/projects/app/src/pages/api/support/mcp/client/getTools.ts @@ -1,5 +1,5 @@ import { NextAPI } from '@/service/middleware/entry'; -import { type ToolType } from '@fastgpt/global/core/app/type'; +import { type McpToolConfigType } from '@fastgpt/global/core/app/type'; import type { ApiRequestProps, ApiResponseType } from '@fastgpt/service/type/next'; import { MCPClient } from '@fastgpt/service/core/app/mcp'; @@ -7,7 +7,7 @@ export type getMCPToolsQuery = {}; export type getMCPToolsBody = { url: string }; -export type getMCPToolsResponse = ToolType[]; +export type getMCPToolsResponse = McpToolConfigType[]; async function handler( req: ApiRequestProps, diff --git a/projects/app/src/pages/dashboard/apps/index.tsx b/projects/app/src/pages/dashboard/apps/index.tsx index 6b85f1031..c9deae747 100644 --- a/projects/app/src/pages/dashboard/apps/index.tsx +++ b/projects/app/src/pages/dashboard/apps/index.tsx @@ -262,7 +262,7 @@ const MyApps = ({ MenuIcon }: { MenuIcon: JSX.Element }) => { {/* Folder slider */} {!!folderDetail && isPc && ( - + Promise.all([refetchFolderDetail(), loadMyApps()])} resumeInheritPermission={() => resumeInheritPer(folderDetail._id)} diff --git a/projects/app/src/pages/dataset/list/index.tsx b/projects/app/src/pages/dataset/list/index.tsx index 6c6f3a7f9..d562d40e4 100644 --- a/projects/app/src/pages/dataset/list/index.tsx +++ b/projects/app/src/pages/dataset/list/index.tsx @@ -223,7 +223,7 @@ const Dataset = () => { {!!folderDetail && isPc && ( - + resumeInheritPer(folderDetail._id)} isInheritPermission={folderDetail.inheritPermission} diff --git a/projects/app/src/web/core/app/api/plugin.ts b/projects/app/src/web/core/app/api/plugin.ts index 396ca1326..67d6ad9af 100644 --- a/projects/app/src/web/core/app/api/plugin.ts +++ b/projects/app/src/web/core/app/api/plugin.ts @@ -20,7 +20,7 @@ import type { PluginGroupSchemaType } from '@fastgpt/service/core/app/plugin/typ import { useSystemStore } from '@/web/common/system/useSystemStore'; import { defaultGroup } from '@fastgpt/web/core/workflow/constants'; import type { createMCPToolsBody } from '@/pages/api/core/app/mcpTools/create'; -import { type ToolType } from '@fastgpt/global/core/app/type'; +import { type McpToolConfigType } from '@fastgpt/global/core/app/type'; import type { updateMCPToolsBody } from '@/pages/api/core/app/mcpTools/update'; import type { RunMCPToolBody } from '@/pages/api/support/mcp/client/runTool'; import type { getMCPToolsBody } from '@/pages/api/support/mcp/client/getTools'; @@ -79,7 +79,7 @@ export const postUpdateMCPTools = (data: updateMCPToolsBody) => POST('/core/app/mcpTools/update', data); export const getMCPTools = (data: getMCPToolsBody) => - POST('/support/mcp/client/getTools', data); + POST('/support/mcp/client/getTools', data); export const postRunMCPTool = (data: RunMCPToolBody) => POST('/support/mcp/client/runTool', data);