summaryrefslogtreecommitdiff
path: root/packages/cli/src/commands/mcp/remove.ts
diff options
context:
space:
mode:
authorJack Wotherspoon <[email protected]>2025-08-06 11:52:29 -0400
committerGitHub <[email protected]>2025-08-06 15:52:29 +0000
commitca4c745e3b620e3ac4eca24b610cc7b936c0a50d (patch)
treeeb1b9cfb46bd4fa2e7f9631828b0704df1050eb7 /packages/cli/src/commands/mcp/remove.ts
parentb38f377c9a2672e88dd15119b38d908c0f00b54a (diff)
feat(mcp): add `gemini mcp` commands for `add`, `remove` and `list` (#5481)
Diffstat (limited to 'packages/cli/src/commands/mcp/remove.ts')
-rw-r--r--packages/cli/src/commands/mcp/remove.ts60
1 files changed, 60 insertions, 0 deletions
diff --git a/packages/cli/src/commands/mcp/remove.ts b/packages/cli/src/commands/mcp/remove.ts
new file mode 100644
index 00000000..80d66234
--- /dev/null
+++ b/packages/cli/src/commands/mcp/remove.ts
@@ -0,0 +1,60 @@
+/**
+ * @license
+ * Copyright 2025 Google LLC
+ * SPDX-License-Identifier: Apache-2.0
+ */
+
+// File for 'gemini mcp remove' command
+import type { CommandModule } from 'yargs';
+import { loadSettings, SettingScope } from '../../config/settings.js';
+
+async function removeMcpServer(
+ name: string,
+ options: {
+ scope: string;
+ },
+) {
+ const { scope } = options;
+ const settingsScope =
+ scope === 'user' ? SettingScope.User : SettingScope.Workspace;
+ const settings = loadSettings(process.cwd());
+
+ const existingSettings = settings.forScope(settingsScope).settings;
+ const mcpServers = existingSettings.mcpServers || {};
+
+ if (!mcpServers[name]) {
+ console.log(`Server "${name}" not found in ${scope} settings.`);
+ return;
+ }
+
+ delete mcpServers[name];
+
+ settings.setValue(settingsScope, 'mcpServers', mcpServers);
+
+ console.log(`Server "${name}" removed from ${scope} settings.`);
+}
+
+export const removeCommand: CommandModule = {
+ command: 'remove <name>',
+ describe: 'Remove a server',
+ builder: (yargs) =>
+ yargs
+ .usage('Usage: gemini mcp remove [options] <name>')
+ .positional('name', {
+ describe: 'Name of the server',
+ type: 'string',
+ demandOption: true,
+ })
+ .option('scope', {
+ alias: 's',
+ describe: 'Configuration scope (user or project)',
+ type: 'string',
+ default: 'project',
+ choices: ['user', 'project'],
+ }),
+ handler: async (argv) => {
+ await removeMcpServer(argv.name as string, {
+ scope: argv.scope as string,
+ });
+ },
+};