diff options
| author | Mo Moadeli <[email protected]> | 2025-08-04 17:20:49 -0400 |
|---|---|---|
| committer | GitHub <[email protected]> | 2025-08-04 21:20:49 +0000 |
| commit | e7b468e122a29341a6e2e2ca67366e6d62014a6d (patch) | |
| tree | ded9f3730d8d66219a0e6a88711e3211b54ae26e | |
| parent | dca040908affc6277884514b4c726365359fd10b (diff) | |
feat(cli): Prevent redundant opening of browser tabs when zero MCP servers are configured (#5367)
Co-authored-by: Allen Hutchison <[email protected]>
| -rw-r--r-- | packages/cli/src/ui/commands/mcpCommand.test.ts | 26 | ||||
| -rw-r--r-- | packages/cli/src/ui/commands/mcpCommand.ts | 21 |
2 files changed, 8 insertions, 39 deletions
diff --git a/packages/cli/src/ui/commands/mcpCommand.test.ts b/packages/cli/src/ui/commands/mcpCommand.test.ts index afa71ba5..2a6401b3 100644 --- a/packages/cli/src/ui/commands/mcpCommand.test.ts +++ b/packages/cli/src/ui/commands/mcpCommand.test.ts @@ -14,15 +14,10 @@ import { getMCPDiscoveryState, DiscoveredMCPTool, } from '@google/gemini-cli-core'; -import open from 'open'; + import { MessageActionReturn } from './types.js'; import { Type, CallableTool } from '@google/genai'; -// Mock external dependencies -vi.mock('open', () => ({ - default: vi.fn(), -})); - vi.mock('@google/gemini-cli-core', async (importOriginal) => { const actual = await importOriginal<typeof import('@google/gemini-cli-core')>(); @@ -144,30 +139,15 @@ describe('mcpCommand', () => { mockConfig.getMcpServers = vi.fn().mockReturnValue({}); }); - it('should display a message with a URL when no MCP servers are configured in a sandbox', async () => { - process.env.SANDBOX = 'sandbox'; - - const result = await mcpCommand.action!(mockContext, ''); - - expect(result).toEqual({ - type: 'message', - messageType: 'info', - content: - 'No MCP servers configured. Please open the following URL in your browser to view documentation:\nhttps://goo.gle/gemini-cli-docs-mcp', - }); - expect(open).not.toHaveBeenCalled(); - }); - - it('should display a message and open a URL when no MCP servers are configured outside a sandbox', async () => { + it('should display a message with a URL when no MCP servers are configured', async () => { const result = await mcpCommand.action!(mockContext, ''); expect(result).toEqual({ type: 'message', messageType: 'info', content: - 'No MCP servers configured. Opening documentation in your browser: https://goo.gle/gemini-cli-docs-mcp', + 'No MCP servers configured. Please view MCP documentation in your browser: https://goo.gle/gemini-cli-docs-mcp or use the cli /docs command', }); - expect(open).toHaveBeenCalledWith('https://goo.gle/gemini-cli-docs-mcp'); }); }); diff --git a/packages/cli/src/ui/commands/mcpCommand.ts b/packages/cli/src/ui/commands/mcpCommand.ts index 709053b6..dc5442cc 100644 --- a/packages/cli/src/ui/commands/mcpCommand.ts +++ b/packages/cli/src/ui/commands/mcpCommand.ts @@ -21,7 +21,6 @@ import { mcpServerRequiresOAuth, getErrorMessage, } from '@google/gemini-cli-core'; -import open from 'open'; const COLOR_GREEN = '\u001b[32m'; const COLOR_YELLOW = '\u001b[33m'; @@ -60,21 +59,11 @@ const getMcpStatus = async ( if (serverNames.length === 0 && blockedMcpServers.length === 0) { const docsUrl = 'https://goo.gle/gemini-cli-docs-mcp'; - if (process.env.SANDBOX && process.env.SANDBOX !== 'sandbox-exec') { - return { - type: 'message', - messageType: 'info', - content: `No MCP servers configured. Please open the following URL in your browser to view documentation:\n${docsUrl}`, - }; - } else { - // Open the URL in the browser - await open(docsUrl); - return { - type: 'message', - messageType: 'info', - content: `No MCP servers configured. Opening documentation in your browser: ${docsUrl}`, - }; - } + return { + type: 'message', + messageType: 'info', + content: `No MCP servers configured. Please view MCP documentation in your browser: ${docsUrl} or use the cli /docs command`, + }; } // Check if any servers are still connecting |
