summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMo Moadeli <[email protected]>2025-08-04 17:20:49 -0400
committerGitHub <[email protected]>2025-08-04 21:20:49 +0000
commite7b468e122a29341a6e2e2ca67366e6d62014a6d (patch)
treeded9f3730d8d66219a0e6a88711e3211b54ae26e
parentdca040908affc6277884514b4c726365359fd10b (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.ts26
-rw-r--r--packages/cli/src/ui/commands/mcpCommand.ts21
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