import React from 'react'; import { Loader2, KeyRound, PlugZap, AlertTriangle } from 'lucide-react'; import { MCPServerStatus } from 'librechat-data-provider/dist/types/types/queries'; import { OGDialog, OGDialogContent, OGDialogHeader, OGDialogTitle, OGDialogDescription, } from '~/components/ui/OriginalDialog'; import CustomUserVarsSection from './CustomUserVarsSection'; import ServerInitializationSection from './ServerInitializationSection'; import { useLocalize } from '~/hooks'; export interface ConfigFieldDetail { title: string; description: string; } interface MCPConfigDialogProps { isOpen: boolean; onOpenChange: (isOpen: boolean) => void; fieldsSchema: Record; initialValues: Record; onSave: (updatedValues: Record) => void; isSubmitting?: boolean; onRevoke?: () => void; serverName: string; serverStatus?: MCPServerStatus; } export default function MCPConfigDialog({ isOpen, onOpenChange, fieldsSchema, onSave, isSubmitting = false, onRevoke, serverName, serverStatus, }: MCPConfigDialogProps) { const localize = useLocalize(); const hasFields = Object.keys(fieldsSchema).length > 0; const dialogTitle = hasFields ? localize('com_ui_configure_mcp_variables_for', { 0: serverName }) : `${serverName} MCP Server`; const dialogDescription = hasFields ? localize('com_ui_mcp_dialog_desc') : `Manage connection and settings for the ${serverName} MCP server.`; // Helper function to render status badge based on connection state const renderStatusBadge = () => { if (!serverStatus) { return null; } const { connectionState, requiresOAuth } = serverStatus; if (connectionState === 'connecting') { return (
{localize('com_ui_connecting')}
); } if (connectionState === 'disconnected') { if (requiresOAuth) { return (
{localize('com_ui_oauth')}
); } else { return (
{localize('com_ui_offline')}
); } } if (connectionState === 'error') { return (
{localize('com_ui_error')}
); } if (connectionState === 'connected') { return (
{localize('com_ui_active')}
); } return null; }; return (
{dialogTitle} {renderStatusBadge()}
{dialogDescription}
{/* Content */}
{/* Custom User Variables Section */} {})} isSubmitting={isSubmitting} />
{/* Server Initialization Section */}
); }