uninstall-mcp
Remove MCP server packages from your environment. Specify a package name to uninstall it, optionally forcing removal even if referenced by configurations.
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| packageName | Yes | Package name to uninstall | |
| force | No | Force uninstallation even if referenced by configs |
Implementation Reference
- src/tools/installation-tools.ts:150-186 (registration)Registration of the 'uninstall-mcp' MCP tool, including input schema (packageName, optional force) and the inline handler function that performs validation, safety checks, uninstallation via PackageManager, and structured response.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) } ] }; } );
- PackageManager.uninstallPackage helper method invoked by the tool handler. Executes package manager remove command, cleans up registry entry, returns success boolean.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; } }
- src/server.ts:33-33 (registration)Top-level call to registerInstallationTools function during server initialization, which includes registration of the 'uninstall-mcp' tool.registerInstallationTools(server, configService, packageManager);