@@ -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