diff --git a/claude_desktop/rootfs/etc/cont-init.d/81-headroom_wrapper.sh b/claude_desktop/rootfs/etc/cont-init.d/81-headroom_wrapper.sh new file mode 100644 index 0000000000..ef12900220 --- /dev/null +++ b/claude_desktop/rootfs/etc/cont-init.d/81-headroom_wrapper.sh @@ -0,0 +1,43 @@ +#!/usr/bin/with-contenv bashio +# shellcheck shell=bash +set -e + +# Keep every existing Headroom CLI command unchanged, but intercept the MCP +# server entrypoint so it uses the add-on's single-runtime adapter. The real +# binary is intentionally outside /usr/local/bin; writing the wrapper there +# makes it the command 82-claude_tools.sh registers in Claude Desktop/Code. +REAL_HEADROOM="" +for candidate in /usr/bin/headroom /lsiopy/bin/headroom; do + if [ -x "$candidate" ]; then + REAL_HEADROOM="$candidate" + break + fi +done + +if [ -z "$REAL_HEADROOM" ]; then + bashio::log.warning "Headroom executable was not found; MCP adapter wrapper was not installed" + exit 0 +fi + +wrapper="$(mktemp /usr/local/bin/.headroom-wrapper.XXXXXX)" +cleanup() { + rm -f "$wrapper" +} +trap cleanup EXIT + +cat > "$wrapper" <