Skip to content

Commit 583c86b

Browse files
committed
fix: prevent disabled MCP servers from starting processes and show correct status
- Added disabled state checks in updateServerConnections() to prevent disabled servers from being connected - Updated frontend getStatusColor() to show grey for disabled servers - Modified UI rendering to show minimal interface for disabled servers without error messages or retry buttons - Added translation for disabled server status Fixes #6036
1 parent 2b8228e commit 583c86b

File tree

3 files changed

+33
-7
lines changed

3 files changed

+33
-7
lines changed

src/services/mcp/McpHub.ts

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -976,7 +976,10 @@ export class McpHub {
976976
// New server
977977
try {
978978
this.setupFileWatcher(name, validatedConfig, source)
979-
await this.connectToServer(name, validatedConfig, source)
979+
if (!validatedConfig.disabled) {
980+
// Only connect if not disabled
981+
await this.connectToServer(name, validatedConfig, source)
982+
}
980983
} catch (error) {
981984
this.showErrorMessage(`Failed to connect to new MCP server ${name}`, error)
982985
}
@@ -985,7 +988,10 @@ export class McpHub {
985988
try {
986989
this.setupFileWatcher(name, validatedConfig, source)
987990
await this.deleteConnection(name, source)
988-
await this.connectToServer(name, validatedConfig, source)
991+
if (!validatedConfig.disabled) {
992+
// Only reconnect if not disabled
993+
await this.connectToServer(name, validatedConfig, source)
994+
}
989995
} catch (error) {
990996
this.showErrorMessage(`Failed to reconnect MCP server ${name}`, error)
991997
}

webview-ui/src/components/mcp/McpView.tsx

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -218,6 +218,11 @@ const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowM
218218
]
219219

220220
const getStatusColor = () => {
221+
// Always show grey for disabled servers regardless of connection status
222+
if (server.disabled) {
223+
return "var(--vscode-descriptionForeground)"
224+
}
225+
221226
switch (server.status) {
222227
case "connected":
223228
return "var(--vscode-testing-iconPassed)"
@@ -229,7 +234,8 @@ const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowM
229234
}
230235

231236
const handleRowClick = () => {
232-
if (server.status === "connected") {
237+
// Only allow expansion for connected servers that are not disabled
238+
if (server.status === "connected" && !server.disabled) {
233239
setIsExpanded(!isExpanded)
234240
}
235241
}
@@ -270,12 +276,12 @@ const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowM
270276
alignItems: "center",
271277
padding: "8px",
272278
background: "var(--vscode-textCodeBlock-background)",
273-
cursor: server.status === "connected" ? "pointer" : "default",
279+
cursor: server.status === "connected" && !server.disabled ? "pointer" : "default",
274280
borderRadius: isExpanded || server.status === "connected" ? "4px" : "4px 4px 0 0",
275281
opacity: server.disabled ? 0.6 : 1,
276282
}}
277283
onClick={handleRowClick}>
278-
{server.status === "connected" && (
284+
{server.status === "connected" && !server.disabled && (
279285
<span
280286
className={`codicon codicon-chevron-${isExpanded ? "down" : "right"}`}
281287
style={{ marginRight: "8px" }}
@@ -342,7 +348,20 @@ const ServerRow = ({ server, alwaysAllowMcp }: { server: McpServer; alwaysAllowM
342348
</div>
343349
</div>
344350

345-
{server.status === "connected" ? (
351+
{server.disabled ? (
352+
// Minimal UI for disabled servers - no error messages or retry buttons
353+
<div
354+
style={{
355+
fontSize: "13px",
356+
background: "var(--vscode-textCodeBlock-background)",
357+
borderRadius: "0 0 4px 4px",
358+
padding: "10px",
359+
color: "var(--vscode-descriptionForeground)",
360+
fontStyle: "italic",
361+
}}>
362+
{t("mcp:serverStatus.disabled")}
363+
</div>
364+
) : server.status === "connected" ? (
346365
isExpanded && (
347366
<div
348367
style={{

webview-ui/src/i18n/locales/en/mcp.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,8 @@
5555
},
5656
"serverStatus": {
5757
"retrying": "Retrying...",
58-
"retryConnection": "Retry Connection"
58+
"retryConnection": "Retry Connection",
59+
"disabled": "Server is disabled"
5960
},
6061
"execution": {
6162
"running": "Running",

0 commit comments

Comments
 (0)