import { useState, useRef } from 'react'; import { Plus } from 'lucide-react'; import { PermissionTypes, Permissions } from 'librechat-data-provider'; import { Button, Spinner, OGDialogTrigger } from '@librechat/client'; import { useLocalize, useMCPServerManager, useHasAccess } from '~/hooks'; import MCPServerList from './MCPServerList'; import MCPServerDialog from './MCPServerDialog'; import MCPConfigDialog from '~/components/MCP/MCPConfigDialog'; import MCPAdminSettings from './MCPAdminSettings'; export default function MCPBuilderPanel() { const localize = useLocalize(); const { availableMCPServers, isLoading, getServerStatusIconProps, getConfigDialogProps } = useMCPServerManager(); const hasCreateAccess = useHasAccess({ permissionType: PermissionTypes.MCP_SERVERS, permission: Permissions.CREATE, }); const [showDialog, setShowDialog] = useState(false); const addButtonRef = useRef(null); const configDialogProps = getConfigDialogProps(); return (
{/* Admin Settings Button */} {hasCreateAccess && (
)} {/* Server List */} {isLoading ? (
) : ( )} {configDialogProps && }
); }