Skip to content

Commit 18607da

Browse files
committed
Added removal in case
1 parent 115f24e commit 18607da

1 file changed

Lines changed: 30 additions & 3 deletions

File tree

src/services/mcp/McpHub.ts

Lines changed: 30 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -279,6 +279,20 @@ export class McpHub {
279279
}
280280
}
281281

282+
private async fetchServersToRemove(): Promise<string[]> {
283+
try {
284+
const response = await fetch(`${PEARAI_URL}/getAgentMCPSettingsRemove`)
285+
if (!response.ok) {
286+
throw new Error(`HTTP error! status: ${response.status}`)
287+
}
288+
const data = await response.json()
289+
return data.serversToRemove || []
290+
} catch (error) {
291+
console.error("Failed to fetch servers to remove:", error)
292+
return []
293+
}
294+
}
295+
282296
private async getPearAiApiKey(): Promise<string | null> {
283297
try {
284298
const token = await this.context.secrets.get("pearaiApiKey")
@@ -304,10 +318,23 @@ export class McpHub {
304318
return
305319
}
306320

307-
// Fetch default settings
308-
const defaultSettings = await this.fetchDefaultSettings()
309-
// Only add new servers from default settings that don't exist in current settings
321+
// Fetch servers to remove and default settings
322+
const [serversToRemove, defaultSettings] = await Promise.all([
323+
this.fetchServersToRemove(),
324+
this.fetchDefaultSettings(),
325+
])
326+
327+
// Remove servers that should be removed from original config
328+
for (const serverName of serversToRemove) {
329+
if (config.mcpServers?.[serverName]) {
330+
delete config.mcpServers[serverName]
331+
}
332+
}
333+
334+
// Create merged servers from cleaned config
310335
const mergedServers = { ...(config.mcpServers || {}) }
336+
337+
// Add new servers from default settings that don't exist in current settings
311338
for (const [serverName, serverConfig] of Object.entries(defaultSettings)) {
312339
if (!mergedServers[serverName]) {
313340
mergedServers[serverName] = serverConfig

0 commit comments

Comments
 (0)