'use client'; import { serviceSideProps } from '@/web/common/i18n/utils'; import React, { useState } from 'react'; import DashboardContainer from '@/pageComponents/dashboard/Container'; import { Box, Button, Flex, HStack, Table, TableContainer, Tbody, Td, Th, Thead, Tr } from '@chakra-ui/react'; import { useTranslation } from 'next-i18next'; import { useRequest2 } from '@fastgpt/web/hooks/useRequest'; import { deleteMcpServer, getMcpServerList } from '@/web/support/mcp/api'; import MyBox from '@fastgpt/web/components/common/MyBox'; import EditMcpModal, { defaultForm, type EditMcForm } from '@/pageComponents/dashboard/mcp/EditModal'; import EmptyTip from '@fastgpt/web/components/common/EmptyTip'; import MyIconButton from '@fastgpt/web/components/common/Icon/button'; import { useSystemStore } from '@/web/common/system/useSystemStore'; import { useConfirm } from '@fastgpt/web/hooks/useConfirm'; import dynamic from 'next/dynamic'; import { type McpKeyType } from '@fastgpt/global/support/mcp/type'; import { useSystem } from '@fastgpt/web/hooks/useSystem'; import { useUserStore } from '@/web/support/user/useUserStore'; const UsageWay = dynamic(() => import('@/pageComponents/dashboard/mcp/usageWay'), { ssr: false }); const McpServer = () => { const { t } = useTranslation(); const { isPc } = useSystem(); const { userInfo } = useUserStore(); const { data: mcpServerList = [], loading: loadingList, refresh: loadMcpList } = useRequest2(getMcpServerList, { manual: false }); const [editMcp, setEditMcp] = useState(); const [usageWay, setUsageWay] = useState(); const { openConfirm: openDelConfirm, ConfirmModal: DelConfirmModal } = useConfirm({ type: 'delete', content: t('dashboard_mcp:delete_mcp_server_confirm_tip') }); const { runAsync: onDeleteMcpServer } = useRequest2(deleteMcpServer, { manual: true, onSuccess: () => { loadMcpList(); } }); const isLoading = loadingList; return ( <> {({ MenuIcon }) => ( {isPc ? ( {t('dashboard_mcp:mcp_server')} {t('dashboard_mcp:mcp_server_description')} ) : ( <> {MenuIcon} {t('dashboard_mcp:mcp_server')} {t('dashboard_mcp:mcp_server_description')} )} {/* table */} {mcpServerList.map((mcp) => { return ( ); })}
{t('dashboard_mcp:mcp_name')} {t('dashboard_mcp:mcp_apps')}
{mcp.name} {mcp.apps.length} setEditMcp({ id: mcp._id, name: mcp.name, apps: mcp.apps }) } /> openDelConfirm(() => onDeleteMcpServer(mcp._id))()} />
{mcpServerList.length === 0 && }
)}
{!!usageWay && setUsageWay(undefined)} />} {!!editMcp && ( setEditMcp(undefined)} onSuccess={() => { setEditMcp(undefined); loadMcpList(); }} /> )} ); }; export default McpServer; export async function getServerSideProps(content: any) { return { props: { ...(await serviceSideProps(content, ['dashboard_mcp'])) } }; }