import { XCircle, PlusCircleIcon, Wrench } from 'lucide-react'; import type { AgentToolType } from 'librechat-data-provider'; import { useLocalize } from '~/hooks'; type MCPToolItemProps = { tool: AgentToolType; onAddTool: () => void; onRemoveTool: () => void; isInstalled?: boolean; isConfiguring?: boolean; isInitializing?: boolean; }; function MCPToolItem({ tool, onAddTool, onRemoveTool, isInstalled = false, isConfiguring = false, isInitializing = false, }: MCPToolItemProps) { const localize = useLocalize(); const handleClick = () => { if (isInstalled) { onRemoveTool(); } else { onAddTool(); } }; const name = tool.metadata?.name || tool.tool_id; const description = tool.metadata?.description || ''; const icon = tool.metadata?.icon; // Determine button state and text const getButtonState = () => { if (isInstalled) { return { text: localize('com_nav_tool_remove'), icon: , className: 'btn relative bg-gray-300 hover:bg-gray-400 dark:bg-gray-50 dark:hover:bg-gray-200', disabled: false, }; } if (isConfiguring) { return { text: localize('com_ui_confirm'), icon: , className: 'btn btn-primary relative', disabled: false, }; } if (isInitializing) { return { text: localize('com_ui_initializing'), icon: , className: 'btn btn-primary relative opacity-75 cursor-not-allowed', disabled: true, }; } return { text: localize('com_ui_add'), icon: , className: 'btn btn-primary relative', disabled: false, }; }; const buttonState = getButtonState(); return (
{icon ? ( {localize('com_ui_logo', ) : (
)}
{name}
{description}
); } export default MCPToolItem;