diff --git a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx index 8d530704..a7d3c7f6 100644 --- a/src/renderer/src/pages/home/Inputbar/Inputbar.tsx +++ b/src/renderer/src/pages/home/Inputbar/Inputbar.tsx @@ -712,7 +712,11 @@ const Inputbar: FC = ({ assistant: _assistant, setActiveTopic, topic }) = disabled={files.length > 0} /> )} - + void + toggelEnableMCP: (server: MCPServer) => void ToolbarButton: any } -const MCPToolsButton: FC = ({ enabledMCPs, onEnableMCP, ToolbarButton }) => { +const MCPToolsButton: FC = ({ enabledMCPs, toggelEnableMCP, ToolbarButton }) => { const { mcpServers } = useMCPServers() const [isOpen, setIsOpen] = useState(false) - const [enableAll, setEnableAll] = useState(false) const dropdownRef = useRef(null) const menuRef = useRef(null) const { t } = useTranslation() @@ -28,19 +28,11 @@ const MCPToolsButton: FC = ({ enabledMCPs, onEnableMCP, ToolbarButton }) // Check if all active servers are enabled const activeServers = mcpServers.filter((s) => s.isActive) - // This effect only runs when enableAll changes, not on every render - useEffect(() => { - if (activeServers.length > 0) { - activeServers.forEach((server) => { - const isServerEnabled = enabledMCPs.includes(server) - if (enableAll && !isServerEnabled) { - onEnableMCP(server) // Enable server if enableAll is true and server is disabled - } else if (!enableAll && isServerEnabled) { - onEnableMCP(server) // Disable server if enableAll is false and server is enabled - } - }) - } - }, [enableAll]) // Only depend on enableAll, not on enabledMCPs + const enableAll = every(activeServers, (server) => + enabledMCPs.some((enabledServer) => enabledServer.name === server.name) + ) + + const setEnableAll = () => activeServers.forEach((s) => toggelEnableMCP(s)) const menu = (
@@ -67,7 +59,11 @@ const MCPToolsButton: FC = ({ enabledMCPs, onEnableMCP, ToolbarButton }) )} {server.baseUrl &&
{server.baseUrl}
}
- onEnableMCP(server)} /> + s.name === server.name)} + onChange={() => toggelEnableMCP(server)} + /> )) ) : ( diff --git a/src/renderer/src/pages/settings/MCPSettings.tsx b/src/renderer/src/pages/settings/MCPSettings.tsx index c2282d45..059d64c8 100644 --- a/src/renderer/src/pages/settings/MCPSettings.tsx +++ b/src/renderer/src/pages/settings/MCPSettings.tsx @@ -291,6 +291,7 @@ const MCPSettings: FC = () => { onCancel={handleCancel} onOk={handleSubmit} confirmLoading={loading} + maskClosable={false} width={600}>