summaryrefslogtreecommitdiff
path: root/packages/core/src/tools/mcp-client-manager.test.ts
diff options
context:
space:
mode:
authorRamón Medrano Llamas <[email protected]>2025-08-19 21:03:19 +0200
committerGitHub <[email protected]>2025-08-19 19:03:19 +0000
commitb24c5887c45edde8690b4d73d8961e63eee13a34 (patch)
tree6136f1f6bcc61801edb9f6d6411966b3b6678984 /packages/core/src/tools/mcp-client-manager.test.ts
parent4828e4daf198a675ce118cec08dcfbd0bfbb28a6 (diff)
feat: restart MCP servers on /mcp refresh (#5479)
Co-authored-by: Brian Ray <[email protected]> Co-authored-by: N. Taylor Mullen <[email protected]>
Diffstat (limited to 'packages/core/src/tools/mcp-client-manager.test.ts')
-rw-r--r--packages/core/src/tools/mcp-client-manager.test.ts54
1 files changed, 54 insertions, 0 deletions
diff --git a/packages/core/src/tools/mcp-client-manager.test.ts b/packages/core/src/tools/mcp-client-manager.test.ts
new file mode 100644
index 00000000..3dba197f
--- /dev/null
+++ b/packages/core/src/tools/mcp-client-manager.test.ts
@@ -0,0 +1,54 @@
+/**
+ * @license
+ * Copyright 2025 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+import { afterEach, describe, expect, it, vi } from 'vitest';
+import { McpClientManager } from './mcp-client-manager.js';
+import { McpClient } from './mcp-client.js';
+import { ToolRegistry } from './tool-registry.js';
+import { PromptRegistry } from '../prompts/prompt-registry.js';
+import { WorkspaceContext } from '../utils/workspaceContext.js';
+
+vi.mock('./mcp-client.js', async () => {
+ const originalModule = await vi.importActual('./mcp-client.js');
+ return {
+ ...originalModule,
+ McpClient: vi.fn(),
+ populateMcpServerCommand: vi.fn(() => ({
+ 'test-server': {},
+ })),
+ };
+});
+
+describe('McpClientManager', () => {
+ afterEach(() => {
+ vi.restoreAllMocks();
+ });
+
+ it('should discover tools from all servers', async () => {
+ const mockedMcpClient = {
+ connect: vi.fn(),
+ discover: vi.fn(),
+ disconnect: vi.fn(),
+ getStatus: vi.fn(),
+ };
+ vi.mocked(McpClient).mockReturnValue(
+ mockedMcpClient as unknown as McpClient,
+ );
+ const manager = new McpClientManager(
+ {
+ 'test-server': {},
+ },
+ '',
+ {} as ToolRegistry,
+ {} as PromptRegistry,
+ false,
+ {} as WorkspaceContext,
+ );
+ await manager.discoverAllMcpTools();
+ expect(mockedMcpClient.connect).toHaveBeenCalledOnce();
+ expect(mockedMcpClient.discover).toHaveBeenCalledOnce();
+ });
+});