Skip to main content
Glama
devlimelabs

MCP Environment & Installation Manager

by devlimelabs

uninstall-mcp

Remove specific packages from the MCP server environment with optional forced uninstallation to handle configuration conflicts.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
forceNoForce uninstallation even if referenced by configs
packageNameYesPackage name to uninstall

Implementation Reference

  • Registration of the 'uninstall-mcp' MCP tool, including Zod input schema (packageName required, force optional) and inline async handler that performs validation, checks for config dependencies, calls PackageManager.uninstallPackage, and returns JSON result.
    server.tool( "uninstall-mcp", { packageName: z.string().describe("Package name to uninstall"), force: z.boolean().optional().describe("Force uninstallation even if referenced by configs") }, async ({ packageName, force = false }, extra) => { if (!packageName.trim()) { throw new Error("Package name cannot be empty"); } const pkg = packageManager.getInstalledPackage(packageName); if (!pkg) { throw new Error(`Package not installed: ${packageName}`); } // Check if package is used by any configs if (pkg.usedByConfigs.length > 0 && !force) { throw new Error(`Package is used by ${pkg.usedByConfigs.length} configurations. Use force=true to override.`); } const success = await packageManager.uninstallPackage(packageName); return { content: [ { type: "text", text: JSON.stringify({ success, packageName }, null, 2) } ] }; } );
  • Core uninstall helper in PackageManager class: checks if package exists, computes package directory from registry, executes preferred package manager's 'remove' command (npm/yarn/pnpm), deletes from local registry, handles errors gracefully.
    async uninstallPackage(packageName: string): Promise<boolean> { const existing = this.getInstalledPackage(packageName); if (!existing) { return false; } try { const packageDir = path.dirname(path.dirname(existing.localPath)); // Uninstall the package const uninstallCmd = `${this.preferredPackageManager} remove ${packageName}`; await exec(uninstallCmd, { cwd: packageDir }); // Remove from registry delete this.registry.packages[packageName]; await this.saveRegistry(); return true; } catch (error) { console.error(`Failed to uninstall package ${packageName}:`, error); return false; } }

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/devlimelabs/mcp-env-manager-mcp'

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