From a5283c565db6aadd176852822f5ba3fd23d07a31 Mon Sep 17 00:00:00 2001 From: Devvyn <22340871+opticon454@users.noreply.github.com> Date: Thu, 24 Sep 2026 21:04:18 +0800 Subject: [PATCH] feat(docker): install uv and uvx in server and agent images Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_01GuHtuPiHXdykq9T6rKQJ9n --- .changeset/uvxdocker1.md | 5 +++++ docker/agent.Dockerfile | 4 ++++ docker/server.Dockerfile | 4 ++++ 3 files changed, 13 insertions(+) create mode 100644 .changeset/uvxdocker1.md diff --git a/.changeset/uvxdocker1.md b/.changeset/uvxdocker1.md new file mode 100644 index 00000000..32e2d9b8 --- /dev/null +++ b/.changeset/uvxdocker1.md @@ -0,0 +1,5 @@ +--- +"aicodeman": patch +--- + +Install `uv` and `uvx` in the Compose server image and the agent image, so MCP servers launched with `uvx` (such as the Nginx Proxy Manager MCP) can be enabled by Codex instead of failing with `uvx` not found. The server image also carries `pnpm` for `dsh plugin`. diff --git a/docker/agent.Dockerfile b/docker/agent.Dockerfile index f7b46058..1082ee71 100644 --- a/docker/agent.Dockerfile +++ b/docker/agent.Dockerfile @@ -126,6 +126,10 @@ RUN set -eux; \ # A different order is a different RUN string, which is a different layer hash and # so a needless cache miss between a bare `docker build` and a scripted one. ARG CLI_NPM_PACKAGES="@anthropic-ai/claude-code opencode-ai @openai/codex @google/gemini-cli" +# uv/uvx: MCP servers are commonly launched with `uvx ` (e.g. the Nginx +# Proxy Manager MCP), and Codex failed to enable them with "uvx not found". Copied +# from the pinned upstream image into root-owned /usr/local/bin, never pip-installed. +COPY --from=ghcr.io/astral-sh/uv:0.9 /uv /uvx /usr/local/bin/ RUN npm install -g ${CLI_NPM_PACKAGES} \ && npm cache clean --force diff --git a/docker/server.Dockerfile b/docker/server.Dockerfile index 8e957d26..939cf3fa 100644 --- a/docker/server.Dockerfile +++ b/docker/server.Dockerfile @@ -212,6 +212,10 @@ RUN set -eux; \ # minimal image of this exact shape). The four CLIs live only in this prefix, # so they still resolve; entrypoint.sh additionally pins its own PATH to the # system directories for the root part of the start. +# uv/uvx: MCP servers are commonly launched with `uvx ` (e.g. the Nginx +# Proxy Manager MCP), and Codex failed to enable them with "uvx not found". Copied +# from the pinned upstream image into root-owned /usr/local/bin, never pip-installed. +COPY --from=ghcr.io/astral-sh/uv:0.9 /uv /uvx /usr/local/bin/ ENV NPM_CONFIG_PREFIX=/opt/codeman-cli ENV PATH=$PATH:/opt/codeman-cli/bin # pnpm is not an agent CLI: it is here because `dsh plugin` (DeepSeek Harness, which