From beeb1a0cf281a9964d676f9d69f38378206664c0 Mon Sep 17 00:00:00 2001 From: Roo Code Date: Wed, 6 Aug 2025 21:28:55 +0000 Subject: [PATCH] fix: prevent unnecessary MCP server refresh on settings save - Add state comparison before triggering MCP refresh - Only call handleMcpEnabledChange when mcpEnabled value actually changes - Fixes issue where saving any settings triggers MCP refresh notifications Fixes #6772 --- src/core/webview/webviewMessageHandler.ts | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/src/core/webview/webviewMessageHandler.ts b/src/core/webview/webviewMessageHandler.ts index f5dc6a467f1..07a25aea81c 100644 --- a/src/core/webview/webviewMessageHandler.ts +++ b/src/core/webview/webviewMessageHandler.ts @@ -900,12 +900,20 @@ export const webviewMessageHandler = async ( } case "mcpEnabled": const mcpEnabled = message.bool ?? true - await updateGlobalState("mcpEnabled", mcpEnabled) + const currentMcpEnabled = getGlobalState("mcpEnabled") ?? true - // Delegate MCP enable/disable logic to McpHub - const mcpHubInstance = provider.getMcpHub() - if (mcpHubInstance) { - await mcpHubInstance.handleMcpEnabledChange(mcpEnabled) + // Only update and refresh if the value actually changed + if (currentMcpEnabled !== mcpEnabled) { + await updateGlobalState("mcpEnabled", mcpEnabled) + + // Delegate MCP enable/disable logic to McpHub + const mcpHubInstance = provider.getMcpHub() + if (mcpHubInstance) { + await mcpHubInstance.handleMcpEnabledChange(mcpEnabled) + } + } else { + // Just update the state without triggering refresh + await updateGlobalState("mcpEnabled", mcpEnabled) } await provider.postStateToWebview()