Skip to main content
Glama

remove_package

Remove packages from Arch Linux systems using pacman. Choose between basic removal, dependency removal, or forced removal options to manage system packages.

Instructions

Remove a package from the system. Supports various removal strategies: basic removal, removal with dependencies, or forced removal. Only works on Arch Linux. Requires sudo access.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
package_nameYesName of the package to remove
remove_dependenciesNoRemove package and its dependencies (pacman -Rs). Default: false
forceNoForce removal ignoring dependencies (pacman -Rdd). Use with caution! Default: false

Implementation Reference

  • Core handler function that executes pacman removal commands (-R, -Rs, -Rdd) based on parameters, with error handling and logging.
    async def remove_package( package_name: str, remove_dependencies: bool = False, force: bool = False ) -> Dict[str, Any]: """ Remove a single package from the system. Args: package_name: Name of package to remove remove_dependencies: If True, remove unneeded dependencies (pacman -Rs) force: If True, force removal ignoring dependencies (pacman -Rdd) Returns: Dict with removal status and information """ if not IS_ARCH: return create_error_response( "NotSupported", "Package removal is only available on Arch Linux" ) if not check_command_exists("pacman"): return create_error_response( "CommandNotFound", "pacman command not found" ) logger.info(f"Removing package: {package_name} (deps={remove_dependencies}, force={force})") # Build command based on options cmd = ["sudo", "pacman"] if force: cmd.extend(["-Rdd"]) # Force remove, skip dependency checks elif remove_dependencies: cmd.extend(["-Rs"]) # Remove with unused dependencies else: cmd.extend(["-R"]) # Basic removal cmd.extend(["--noconfirm", package_name]) try: exit_code, stdout, stderr = await run_command( cmd, timeout=60, # Longer timeout for removal check=False, skip_sudo_check=True # We're using sudo in the command ) if exit_code != 0: logger.error(f"Package removal failed: {stderr}") return create_error_response( "RemovalError", f"Failed to remove {package_name}: {stderr}", f"Exit code: {exit_code}" ) logger.info(f"Successfully removed {package_name}") return { "success": True, "package": package_name, "removed_dependencies": remove_dependencies, "output": stdout } except Exception as e: logger.error(f"Package removal failed with exception: {e}") return create_error_response( "RemovalError", f"Failed to remove {package_name}: {str(e)}" )
  • MCP tool registration including name, description, and input schema definition.
    Tool( name="remove_package", description="[LIFECYCLE] Remove a package from the system. Supports various removal strategies: basic removal, removal with dependencies, or forced removal. Only works on Arch Linux. Requires sudo access.", inputSchema={ "type": "object", "properties": { "package_name": { "type": "string", "description": "Name of the package to remove" }, "remove_dependencies": { "type": "boolean", "description": "Remove package and its dependencies (pacman -Rs). Default: false", "default": False }, "force": { "type": "boolean", "description": "Force removal ignoring dependencies (pacman -Rdd). Use with caution! Default: false", "default": False } }, "required": ["package_name"] } ),
  • Tool dispatch handler in MCP server that calls the pacman remove_package function with parsed arguments.
    elif name == "remove_package": if not IS_ARCH: return [TextContent(type="text", text="Error: remove_package only available on Arch Linux systems")] package_name = arguments["package_name"] remove_dependencies = arguments.get("remove_dependencies", False) force = arguments.get("force", False) result = await remove_package(package_name, remove_dependencies, force) return [TextContent(type="text", text=json.dumps(result, indent=2))]
  • Tool metadata defining category, platform, permissions, workflow, and related tools.
    "remove_package": ToolMetadata( name="remove_package", category="lifecycle", platform="arch", permission="write", workflow="removal", related_tools=["remove_packages_batch", "list_orphan_packages"], prerequisite_tools=[]
  • Import exposing the remove_package function for use in the module.
    remove_package,

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/nihalxkumar/arch-mcp'

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