From 0bb6112257359ace911ad844da0a8ceeb9f3403f Mon Sep 17 00:00:00 2001 From: MuriloFP Date: Sun, 9 Feb 2025 19:15:01 -0300 Subject: [PATCH] fix: ensure disabled MCP servers appear in settings UI When the MCP server was initialized before opening RooCode, disabled servers would not appear in the settings UI. This was fixed by: 1. Using getAllServers() instead of getServers() in ClineProvider.ts for UI state updates, ensuring all servers (including disabled ones) are shown 2. Maintaining getServers() for operational use (AI prompts, tool calls) where disabled servers should be filtered out The fix maintains clean separation between UI display and operational server filtering. --- src/core/webview/ClineProvider.ts | 4 ++-- src/services/mcp/McpHub.ts | 5 +++++ 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/src/core/webview/ClineProvider.ts b/src/core/webview/ClineProvider.ts index ed02b7be03..ca8c45049c 100644 --- a/src/core/webview/ClineProvider.ts +++ b/src/core/webview/ClineProvider.ts @@ -628,7 +628,7 @@ export class ClineProvider implements vscode.WebviewViewProvider { if (this.mcpHub) { this.postMessageToWebview({ type: "mcpServers", - mcpServers: this.mcpHub.getServers(), + mcpServers: this.mcpHub.getAllServers(), }) } @@ -2259,7 +2259,7 @@ export class ClineProvider implements vscode.WebviewViewProvider { autoApprovalEnabled: autoApprovalEnabled ?? false, customModes: await this.customModesManager.getCustomModes(), experiments: experiments ?? experimentDefault, - mcpServers: this.mcpHub?.getServers() ?? [], + mcpServers: this.mcpHub?.getAllServers() ?? [], } } diff --git a/src/services/mcp/McpHub.ts b/src/services/mcp/McpHub.ts index dcbe4a94d0..209df3dbe6 100644 --- a/src/services/mcp/McpHub.ts +++ b/src/services/mcp/McpHub.ts @@ -67,6 +67,11 @@ export class McpHub { return this.connections.filter((conn) => !conn.server.disabled).map((conn) => conn.server) } + getAllServers(): McpServer[] { + // Return all servers regardless of state + return this.connections.map((conn) => conn.server) + } + async getMcpServersPath(): Promise { const provider = this.providerRef.deref() if (!provider) {