diff --git a/src/controllers/serverController.ts b/src/controllers/serverController.ts index 9e17f5e..46b2cc5 100644 --- a/src/controllers/serverController.ts +++ b/src/controllers/serverController.ts @@ -280,7 +280,7 @@ export const updateServer = async (req: Request, res: Response): Promise = const result = await addOrUpdateServer(name, config, true); // Allow override for updates if (result.success) { - notifyToolChanged(); + notifyToolChanged(name); res.json({ success: true, message: 'Server updated successfully', diff --git a/src/services/mcpService.ts b/src/services/mcpService.ts index 2c225e0..e23ac25 100644 --- a/src/services/mcpService.ts +++ b/src/services/mcpService.ts @@ -70,8 +70,8 @@ export const deleteMcpServer = (sessionId: string): void => { delete servers[sessionId]; }; -export const notifyToolChanged = async () => { - await registerAllTools(false); +export const notifyToolChanged = async (name?: string) => { + await registerAllTools(false, name); Object.values(servers).forEach((server) => { server .sendToolListChanged() @@ -323,7 +323,10 @@ const callToolWithReconnect = async ( }; // Initialize MCP server clients -export const initializeClientsFromSettings = async (isInit: boolean): Promise => { +export const initializeClientsFromSettings = async ( + isInit: boolean, + serverName?: string, +): Promise => { const settings = loadSettings(); const existingServerInfos = serverInfos; serverInfos = []; @@ -348,7 +351,7 @@ export const initializeClientsFromSettings = async (isInit: boolean): Promise s.name === name && s.status === 'connected', ); - if (existingServer) { + if (existingServer && (!serverName || serverName !== name)) { serverInfos.push({ ...existingServer, enabled: conf.enabled === undefined ? true : conf.enabled, @@ -359,7 +362,6 @@ export const initializeClientsFromSettings = async (isInit: boolean): Promise => { - await initializeClientsFromSettings(isInit); +export const registerAllTools = async (isInit: boolean, serverName?: string): Promise => { + await initializeClientsFromSettings(isInit, serverName); }; // Get all server information