diff --git a/bootstrap.sh b/bootstrap.sh index b66952a..e0cfe45 100755 --- a/bootstrap.sh +++ b/bootstrap.sh @@ -390,6 +390,36 @@ SSHEOF fi fi +# -------- mcp CLI install (workstations) -------- +# `homelab mcp ` shells out to the `mcp` python CLI. Install it via +# pipx for the enrolling user. Skip on LXCs / VMs. +if [ "$HKIND" != "lxc" ] && [ "$HKIND" != "vm" ]; then + if [ "$DRY_RUN" -eq 1 ]; then + echo "+ would install 'mcp[cli]' via pipx for the enrolling user" + elif command -v mcp >/dev/null 2>&1; then + echo "[bootstrap] mcp CLI already on PATH (skip)" + else + # Make sure pipx is available; OS-specific install. + if ! command -v pipx >/dev/null 2>&1; then + if [ "$OS" = "Darwin" ] && command -v brew >/dev/null 2>&1; then + sudo -u "${SUDO_USER:-$USER}" brew install pipx 2>&1 | tail -2 || true + elif command -v dnf >/dev/null 2>&1; then + dnf install -y pipx 2>&1 | tail -2 || true + elif command -v apt-get >/dev/null 2>&1; then + DEBIAN_FRONTEND=noninteractive apt-get install -y pipx 2>&1 | tail -2 || true + fi + fi + if command -v pipx >/dev/null 2>&1; then + INVOKING_USER="${SUDO_USER:-$USER}" + sudo -u "$INVOKING_USER" -- bash -lc "pipx install 'mcp[cli]'" 2>&1 | tail -3 || true + sudo -u "$INVOKING_USER" -- bash -lc "pipx ensurepath" >/dev/null 2>&1 || true + echo "[bootstrap] mcp CLI installed for $INVOKING_USER via pipx" + else + echo "[bootstrap] WARNING: pipx unavailable; install manually: pipx install 'mcp[cli]'" >&2 + fi + fi +fi + # -------- done -------- cat <