diff --git a/packages/core/src/tools/mcp-client.test.ts b/packages/core/src/tools/mcp-client.test.ts index 4aa9bef289..4d682c52c2 100644 --- a/packages/core/src/tools/mcp-client.test.ts +++ b/packages/core/src/tools/mcp-client.test.ts @@ -1244,9 +1244,15 @@ describe('mcp-client', () => { await client.disconnect(); expect(mockedClient.close).toHaveBeenCalledOnce(); - expect(mockedToolRegistry.removeMcpToolsByServer).toHaveBeenCalledOnce(); - expect(mockedPromptRegistry.removePromptsByServer).toHaveBeenCalledOnce(); - expect(resourceRegistry.removeResourcesByServer).toHaveBeenCalledOnce(); + expect(mockedToolRegistry.removeMcpToolsByServer).toHaveBeenCalledWith( + 'test-server', + ); + expect(mockedPromptRegistry.removePromptsByServer).toHaveBeenCalledWith( + 'test-server', + ); + expect(resourceRegistry.removeResourcesByServer).toHaveBeenCalledWith( + 'test-server', + ); }); }); @@ -1570,8 +1576,8 @@ describe('mcp-client', () => { // Trigger notification - should fail internally but catch the error await notificationCallback(); - // Should try to remove tools - expect(mockedToolRegistry.removeMcpToolsByServer).toHaveBeenCalled(); + // Should NOT try to remove tools because discovery failed (atomic refresh) + expect(mockedToolRegistry.removeMcpToolsByServer).not.toHaveBeenCalled(); // Should NOT emit success feedback expect(coreEvents.emitFeedback).not.toHaveBeenCalledWith( diff --git a/packages/core/src/tools/mcp-client.ts b/packages/core/src/tools/mcp-client.ts index a50549e435..47048526d2 100644 --- a/packages/core/src/tools/mcp-client.ts +++ b/packages/core/src/tools/mcp-client.ts @@ -1404,6 +1404,7 @@ export async function discoverTools( error, mcpServerName, ); + throw error; } return []; }