Skip to main content
Glama
uninstall.tsโ€ข3.93 kB
/** * Uninstall Command * Removes Iris MCP server from Claude's configurations */ import { readFileSync, writeFileSync, existsSync, copyFileSync } from "fs"; import { join, dirname } from "path"; import { homedir, platform } from "os"; import { getChildLogger } from "../../utils/logger.js"; const logger = getChildLogger("cli:uninstall"); export interface UninstallOptions { desktop?: boolean; cli?: boolean; } /** * Get Claude Desktop config path based on OS */ function getClaudeDesktopConfigPath(): string { const plat = platform(); switch (plat) { case "darwin": return join(homedir(), "Library", "Application Support", "Claude", "claude_desktop_config.json"); case "linux": return join(homedir(), ".config", "Claude", "claude_desktop_config.json"); case "win32": const appData = process.env.APPDATA; if (!appData) { throw new Error("APPDATA environment variable not found on Windows"); } return join(appData, "Claude", "claude_desktop_config.json"); default: throw new Error(`Unsupported platform: ${plat}`); } } /** * Uninstall Iris from a specific config file */ function uninstallFromConfig(configPath: string, configType: string): boolean { if (!existsSync(configPath)) { logger.info(`${configType} configuration not found: ${configPath}`); return false; } let config: any; try { const content = readFileSync(configPath, "utf-8"); config = JSON.parse(content); } catch (error) { logger.error({ err: error instanceof Error ? error : new Error(String(error)) }, `Failed to read ${configType} configuration`); return false; } // Check if iris is installed if (!config.mcpServers?.iris) { logger.info(`Iris MCP not found in ${configType} configuration`); return false; } // Create backup before modifying try { const backupPath = `${configPath}.bak`; copyFileSync(configPath, backupPath); logger.info(`๐Ÿ“ฆ Created backup: ${backupPath}`); } catch (error) { logger.warn(`Failed to create backup: ${error}`); // Continue anyway } // Remove iris entry delete config.mcpServers.iris; // Write updated config try { writeFileSync(configPath, JSON.stringify(config, null, 2) + "\n", "utf-8"); logger.info(`โœ… Removed Iris MCP from ${configType} configuration`); logger.info(` Config file: ${configPath}`); return true; } catch (error) { logger.error({ err: error instanceof Error ? error : new Error(String(error)) }, `Failed to write ${configType} configuration`); return false; } } export async function uninstall(options: UninstallOptions): Promise<void> { const cliConfigPath = join(homedir(), ".claude.json"); // const desktopConfigPath = getClaudeDesktopConfigPath(); // DISABLED: Desktop support disabled // DISABLED: Desktop support - only uninstall from CLI config const uninstallCli = true; // Always uninstall from CLI // const uninstallDesktop = options.desktop || (!options.desktop && !options.cli); // DISABLED let cliRemoved = false; // let desktopRemoved = false; // DISABLED logger.info("๐Ÿ—‘๏ธ Uninstalling Iris MCP from Claude CLI...\n"); if (uninstallCli) { logger.info("Checking Claude CLI configuration..."); cliRemoved = uninstallFromConfig(cliConfigPath, "Claude CLI"); console.error(""); // blank line } // DISABLED: Desktop support // if (uninstallDesktop) { // logger.info("Checking Claude Desktop configuration..."); // desktopRemoved = uninstallFromConfig(desktopConfigPath, "Claude Desktop"); // console.error(""); // blank line // } // Summary if (cliRemoved) { logger.info("โœ… Successfully removed Iris MCP from Claude CLI configuration"); logger.info("\n๐Ÿ’ก To reinstall:"); logger.info(" iris install"); } else { logger.info("โ„น๏ธ Iris MCP was not installed in Claude CLI configuration"); } }

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jenova-marie/iris-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server