Skip to content

Commit bfa73fb

Browse files
author
Roo Code
committed
Does that work?
1 parent 7bb8edf commit bfa73fb

File tree

2 files changed

+56
-60
lines changed

2 files changed

+56
-60
lines changed

src/core/webview/ClineProvider.ts

Lines changed: 3 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -948,69 +948,12 @@ export class ClineProvider implements vscode.WebviewViewProvider {
948948

949949
try {
950950
this.outputChannel.appendLine(`Attempting to delete MCP server: ${message.serverName}`)
951-
952-
const settingsPath = await this.mcpHub?.getMcpSettingsFilePath()
953-
if (!settingsPath) {
954-
throw new Error("Could not get MCP settings file path")
955-
}
956-
957-
// Ensure the settings file exists and is accessible
958-
try {
959-
await fs.access(settingsPath)
960-
} catch (error) {
961-
this.outputChannel.appendLine("Settings file not accessible")
962-
throw new Error("Settings file not accessible")
963-
}
964-
965-
this.outputChannel.appendLine(`Reading MCP settings from: ${settingsPath}`)
966-
const content = await fs.readFile(settingsPath, "utf-8")
967-
const config = JSON.parse(content)
968-
969-
// Validate the config structure
970-
if (!config || typeof config !== "object") {
971-
throw new Error("Invalid config structure")
972-
}
973-
974-
if (!config.mcpServers || typeof config.mcpServers !== "object") {
975-
config.mcpServers = {}
976-
}
977-
978-
// Remove the server from the settings
979-
if (config.mcpServers[message.serverName]) {
980-
this.outputChannel.appendLine(
981-
`Removing server ${message.serverName} from configuration`,
982-
)
983-
delete config.mcpServers[message.serverName]
984-
985-
// Write the entire config back
986-
const updatedConfig = {
987-
mcpServers: config.mcpServers,
988-
}
989-
990-
await fs.writeFile(settingsPath, JSON.stringify(updatedConfig, null, 2))
991-
992-
// Update server connections through McpHub
993-
this.outputChannel.appendLine("Updating server connections")
994-
await this.mcpHub?.updateServerConnections(config.mcpServers)
995-
996-
this.outputChannel.appendLine(`Successfully deleted MCP server: ${message.serverName}`)
997-
vscode.window.showInformationMessage(`Deleted MCP server: ${message.serverName}`)
998-
} else {
999-
this.outputChannel.appendLine(`Server ${message.serverName} not found in configuration`)
1000-
vscode.window.showWarningMessage(
1001-
`Server "${message.serverName}" not found in configuration`,
1002-
)
1003-
}
951+
await this.mcpHub?.deleteServer(message.serverName)
952+
this.outputChannel.appendLine(`Successfully deleted MCP server: ${message.serverName}`)
1004953
} catch (error) {
1005-
console.error("Failed to delete MCP server:", error)
1006-
if (error instanceof Error) {
1007-
console.error("Error details:", error.message, error.stack)
1008-
}
1009954
const errorMessage = error instanceof Error ? error.message : String(error)
1010955
this.outputChannel.appendLine(`Failed to delete MCP server: ${errorMessage}`)
1011-
vscode.window.showErrorMessage(
1012-
`Failed to delete MCP server: ${error instanceof Error ? error.message : String(error)}`,
1013-
)
956+
// Error messages are already handled by McpHub.deleteServer
1014957
}
1015958
break
1016959
}

src/services/mcp/McpHub.ts

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -576,6 +576,59 @@ export class McpHub {
576576
}
577577
}
578578

579+
public async deleteServer(serverName: string): Promise<void> {
580+
try {
581+
const settingsPath = await this.getMcpSettingsFilePath()
582+
583+
// Ensure the settings file exists and is accessible
584+
try {
585+
await fs.access(settingsPath)
586+
} catch (error) {
587+
throw new Error("Settings file not accessible")
588+
}
589+
590+
const content = await fs.readFile(settingsPath, "utf-8")
591+
const config = JSON.parse(content)
592+
593+
// Validate the config structure
594+
if (!config || typeof config !== "object") {
595+
throw new Error("Invalid config structure")
596+
}
597+
598+
if (!config.mcpServers || typeof config.mcpServers !== "object") {
599+
config.mcpServers = {}
600+
}
601+
602+
// Remove the server from the settings
603+
if (config.mcpServers[serverName]) {
604+
delete config.mcpServers[serverName]
605+
606+
// Write the entire config back
607+
const updatedConfig = {
608+
mcpServers: config.mcpServers,
609+
}
610+
611+
await fs.writeFile(settingsPath, JSON.stringify(updatedConfig, null, 2))
612+
613+
// Update server connections
614+
await this.updateServerConnections(config.mcpServers)
615+
616+
vscode.window.showInformationMessage(`Deleted MCP server: ${serverName}`)
617+
} else {
618+
vscode.window.showWarningMessage(`Server "${serverName}" not found in configuration`)
619+
}
620+
} catch (error) {
621+
console.error("Failed to delete MCP server:", error)
622+
if (error instanceof Error) {
623+
console.error("Error details:", error.message, error.stack)
624+
}
625+
vscode.window.showErrorMessage(
626+
`Failed to delete MCP server: ${error instanceof Error ? error.message : String(error)}`,
627+
)
628+
throw error
629+
}
630+
}
631+
579632
async readResource(serverName: string, uri: string): Promise<McpResourceResponse> {
580633
const connection = this.connections.find((conn) => conn.server.name === serverName)
581634
if (!connection) {

0 commit comments

Comments
 (0)