mcpx (latest)

Published 2026-06-04 20:18:07 +08:00 by kstenhouse

Installation

docker pull git.flexiblyrigid.au/kstenhouse/mcpx:latest
sha256:20064dd45ec62165154a735d938e17682984fb0d613cee8a9f1306c9e933ac99

Image layers

ADD alpine-minirootfs-3.22.1-x86_64.tar.gz / # buildkit
CMD ["/bin/sh"]
RUN /bin/sh -c apk add --no-cache ca-certificates openssh-client git # buildkit
RUN /bin/sh -c [ -e /etc/nsswitch.conf ] && grep '^hosts: files dns' /etc/nsswitch.conf # buildkit
RUN /bin/sh -c set -eux; addgroup -g 2375 -S docker # buildkit
ENV DOCKER_VERSION=28.3.2
RUN /bin/sh -c set -eux; apkArch="$(apk --print-arch)"; case "$apkArch" in 'x86_64') url='https://download.docker.com/linux/static/stable/x86_64/docker-28.3.2.tgz'; ;; 'armhf') url='https://download.docker.com/linux/static/stable/armel/docker-28.3.2.tgz'; ;; 'armv7') url='https://download.docker.com/linux/static/stable/armhf/docker-28.3.2.tgz'; ;; 'aarch64') url='https://download.docker.com/linux/static/stable/aarch64/docker-28.3.2.tgz'; ;; *) echo >&2 "error: unsupported 'docker.tgz' architecture ($apkArch)"; exit 1 ;; esac; wget -O 'docker.tgz' "$url"; tar --extract --file docker.tgz --strip-components 1 --directory /usr/local/bin/ --no-same-owner 'docker/docker' ; rm docker.tgz; docker --version # buildkit
ENV DOCKER_BUILDX_VERSION=0.26.1
RUN /bin/sh -c set -eux; apkArch="$(apk --print-arch)"; case "$apkArch" in 'x86_64') url='https://github.com/docker/buildx/releases/download/v0.26.1/buildx-v0.26.1.linux-amd64'; sha256='9451034b6ca5354e8bf88a2002a413aedabf110fd0f12ebb0b2f2cc241be8e41'; ;; 'armhf') url='https://github.com/docker/buildx/releases/download/v0.26.1/buildx-v0.26.1.linux-arm-v6'; sha256='e9f89ed92231e937b380afc8f0105dc57e1fd5a3949a1545e863312706bf2947'; ;; 'armv7') url='https://github.com/docker/buildx/releases/download/v0.26.1/buildx-v0.26.1.linux-arm-v7'; sha256='92fe156e22eabbb58fb6b44aa3c59c2c06a820b66913158ed209ef5e18abc356'; ;; 'aarch64') url='https://github.com/docker/buildx/releases/download/v0.26.1/buildx-v0.26.1.linux-arm64'; sha256='b610d3c24836b2e7fecab5ef2c9466239a0f0156993a0406ea58943b87bff918'; ;; 'ppc64le') url='https://github.com/docker/buildx/releases/download/v0.26.1/buildx-v0.26.1.linux-ppc64le'; sha256='74a9c8856ef7e742b5193358b43c8dbea9dc739009e4894c840fdb0a9c746d0d'; ;; 'riscv64') url='https://github.com/docker/buildx/releases/download/v0.26.1/buildx-v0.26.1.linux-riscv64'; sha256='698496a08f9c008230e858c63590aeb44b4806df2d6f02cd0b382137ce9394c6'; ;; 's390x') url='https://github.com/docker/buildx/releases/download/v0.26.1/buildx-v0.26.1.linux-s390x'; sha256='6b561cb99d105114484897a3bc3f105dead11d4c14f28ffbf0873ce7fd1fe2d6'; ;; *) echo >&2 "warning: unsupported 'docker-buildx' architecture ($apkArch); skipping"; exit 0 ;; esac; wget -O 'docker-buildx' "$url"; echo "$sha256 *"'docker-buildx' | sha256sum -c -; plugin='/usr/local/libexec/docker/cli-plugins/docker-buildx'; mkdir -p "$(dirname "$plugin")"; mv -vT 'docker-buildx' "$plugin"; chmod +x "$plugin"; docker buildx version # buildkit
ENV DOCKER_COMPOSE_VERSION=2.39.1
RUN /bin/sh -c set -eux; apkArch="$(apk --print-arch)"; case "$apkArch" in 'x86_64') url='https://github.com/docker/compose/releases/download/v2.39.1/docker-compose-linux-x86_64'; sha256='a5ea28722d5da628b59226626f7d6c33c89a7ed19e39f750645925242044c9d2'; ;; 'armhf') url='https://github.com/docker/compose/releases/download/v2.39.1/docker-compose-linux-armv6'; sha256='14a8a2fd5ca75cf87a9c33f79eea5b51701d3a2039387ae48440c9d78b2c83c2'; ;; 'armv7') url='https://github.com/docker/compose/releases/download/v2.39.1/docker-compose-linux-armv7'; sha256='a97c785b148cf744e4f91835fa981dc93d6ced5132d42dab934947e33032af98'; ;; 'aarch64') url='https://github.com/docker/compose/releases/download/v2.39.1/docker-compose-linux-aarch64'; sha256='7b2627ed76f7dcb0d93f649f185af912372229b4c09762a3cd1db5be5255632b'; ;; 'ppc64le') url='https://github.com/docker/compose/releases/download/v2.39.1/docker-compose-linux-ppc64le'; sha256='a2c76f4ea8cbba5906cfe9e97fc67463ad954813dfbddf341bf5062c5c0c93ec'; ;; 'riscv64') url='https://github.com/docker/compose/releases/download/v2.39.1/docker-compose-linux-riscv64'; sha256='3e54325b4019398e058be3cd8589b9ecc98a1a97b7fe8f3280ee4e25281091e2'; ;; 's390x') url='https://github.com/docker/compose/releases/download/v2.39.1/docker-compose-linux-s390x'; sha256='87e75c7ffd019507c823c49d83fac62eda239e55544bb56d7707c817f52acc69'; ;; *) echo >&2 "warning: unsupported 'docker-compose' architecture ($apkArch); skipping"; exit 0 ;; esac; wget -O 'docker-compose' "$url"; echo "$sha256 *"'docker-compose' | sha256sum -c -; plugin='/usr/local/libexec/docker/cli-plugins/docker-compose'; mkdir -p "$(dirname "$plugin")"; mv -vT 'docker-compose' "$plugin"; chmod +x "$plugin"; ln -sv "$plugin" /usr/local/bin/; docker-compose --version; docker compose version # buildkit
COPY modprobe.sh /usr/local/bin/modprobe # buildkit
COPY docker-entrypoint.sh /usr/local/bin/ # buildkit
ENV DOCKER_TLS_CERTDIR=/certs
RUN /bin/sh -c mkdir /certs /certs/client && chmod 1777 /certs /certs/client # buildkit
ENTRYPOINT ["docker-entrypoint.sh"]
CMD ["sh"]
RUN /bin/sh -c set -eux; apk add --no-cache btrfs-progs e2fsprogs e2fsprogs-extra git ip6tables iptables openssl pigz shadow-uidmap xfsprogs xz zfs ; # buildkit
RUN /bin/sh -c set -eux; apk add --no-cache iptables-legacy; mkdir -p /usr/local/sbin/.iptables-legacy; for f in iptables iptables-save iptables-restore ip6tables ip6tables-save ip6tables-restore ; do b="$(command -v "${f/tables/tables-legacy}")"; "$b" --version; ln -svT "$b" "/usr/local/sbin/.iptables-legacy/$f"; done; export PATH="/usr/local/sbin/.iptables-legacy:$PATH"; iptables --version | grep legacy # buildkit
RUN /bin/sh -c set -eux; addgroup -S dockremap; adduser -S -G dockremap dockremap; echo 'dockremap:165536:65536' >> /etc/subuid; echo 'dockremap:165536:65536' >> /etc/subgid # buildkit
RUN /bin/sh -c set -eux; apkArch="$(apk --print-arch)"; case "$apkArch" in 'x86_64') url='https://download.docker.com/linux/static/stable/x86_64/docker-28.3.2.tgz'; ;; 'armhf') url='https://download.docker.com/linux/static/stable/armel/docker-28.3.2.tgz'; ;; 'armv7') url='https://download.docker.com/linux/static/stable/armhf/docker-28.3.2.tgz'; ;; 'aarch64') url='https://download.docker.com/linux/static/stable/aarch64/docker-28.3.2.tgz'; ;; *) echo >&2 "error: unsupported 'docker.tgz' architecture ($apkArch)"; exit 1 ;; esac; wget -O 'docker.tgz' "$url"; tar --extract --file docker.tgz --strip-components 1 --directory /usr/local/bin/ --no-same-owner --exclude 'docker/docker' ; rm docker.tgz; dockerd --version; containerd --version; ctr --version; runc --version # buildkit
ENV DIND_COMMIT=8d9e3502aba39127e4d12196dae16d306f76993d
RUN /bin/sh -c set -eux; wget -O /usr/local/bin/dind "https://raw.githubusercontent.com/docker/docker/${DIND_COMMIT}/hack/dind"; chmod +x /usr/local/bin/dind # buildkit
COPY dockerd-entrypoint.sh /usr/local/bin/ # buildkit
VOLUME [/var/lib/docker]
EXPOSE map[2375/tcp:{} 2376/tcp:{}]
ENTRYPOINT ["dockerd-entrypoint.sh"]
CMD []
ARG UI_PORT
ARG MCPX_SERVER_PORT
ARG SERVE_METRICS_PORT
ARG MCPX_PORT
ARG TARGETPLATFORM=linux/amd64
ARG BUILDPLATFORM=linux/amd64
ARG LOKI_HOST=log-collector.lunar.dev
ARG LOKI_USER=lunar
ARG LOKI_PASSWORD=Pq7JBeP1d70UwI
ENV UI_PORT=5173
ENV UI_URL=http://127.0.0.1:5173
ENV LUNAR_USER=lunar
ENV LUNAR_USER_UID=1002
ENV LUNAR_USER_GID=1002
ENV LUNAR_USER_GROUP=lunar:lunar
ENV HOME=/lunar
ENV MCPX_SERVER_PORT=9000
ENV BUILD_SCOPE=mcpx
ENV LUNAR_TELEMETRY=true
ENV LUNAR_CONSUMER_NAME=mcpx-anonymous
ENV LUNAR_URL=https://hosted-gateway.lunar.dev
ENV LUNAR_API_KEY=
ENV EXCLUDED_DESTINATIONS=log-collector.lunar.dev,log-collector-stg.lunar.dev,log-collector-dev.lunar.dev,dl-cdn.alpinelinux.org,deb.debian.org,security.debian.org,registry.npmjs.org,auth.docker.io,registry-1.docker.io,production0.cloudflare.docker.com,mcpx-ui,pypi.org,files.pythonhosted.org,archive.ubuntu.com,security.ubuntu.com,mirrors.ubuntu.com,mirrorlist.centos.org,mirror.centos.org,vault.centos.org,cdn.redhat.com,access.redhat.com,mirrors.fedoraproject.org
ENV SERVE_METRICS_PORT=3000
ENV MCPX_PORT=9000
ENV ENABLE_CONTROL_PLANE_STREAMING=true
ENV ENABLE_CONTROL_PLANE_REST=true
ENV MCPX_SERVER_URL=
ENV MITM_PROXY_LISTEN_PORT=8081
ENV MITM_PROXY_LISTEN_HOST=0.0.0.0
ENV VERSION=
ENV INSTANCE_ID=
ENV INTERCEPTION_USER=lunar_interception
ENV INTERCEPTION_USER_UID=1001
ENV INTERCEPTION_USER_GID=1001
ENV SHARED_GROUP_NAME=lunar_group
ENV SHARED_GROUP_GID=1050
ENV LUNAR_USER_SHARED_GROUP=lunar:lunar_group
ENV LOKI_HOST=log-collector.lunar.dev
ENV LOKI_USER=lunar
ENV LOKI_PASSWORD=Pq7JBeP1d70UwI
ENV MITM_PROXY_CONF_DIR=/home/lunar_interception/.proxy
ENV GITHUB_OAUTH_CLIENT_ID=Ov23liD20079SUBdPqvh
ENV PYTHONWARNINGS=ignore::UserWarning
ENV UV_CACHE_DIR=/lunar/.cache/uv
ENV UV_DATA_DIR=/lunar/.local/share/uv
ENV UV_TOOL_DIR=/lunar/.local/bin
ENV UV_PYTHON_INSTALL_DIR=/lunar/.local/share/uv/python
ENV NPM_CONFIG_USERCONFIG=/lunar/.npm/
ENV NPM_CONFIG_CACHE=/lunar/.npm/
ENV DOCKER_CONFIG=/lunar/.docker
ENV PIP_NO_CACHE_DIR=1
ENV PIP_USE_PEP517=1
ENV CARGO_HOME=/tmp/cargo
ENV RUSTUP_HOME=/tmp/rustup
ENV PATH=/tmp/cargo/bin:/lunar/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
ENV DIND_ENABLED=true
ENV INTERCEPTION_ENABLED=true
WORKDIR /lunar
RUN |9 UI_PORT=5173 MCPX_SERVER_PORT=9000 SERVE_METRICS_PORT=3000 MCPX_PORT=9000 TARGETPLATFORM=linux/amd64 BUILDPLATFORM=linux/amd64 LOKI_HOST=log-collector.lunar.dev LOKI_USER=lunar LOKI_PASSWORD=Pq7JBeP1d70UwI /bin/sh -c apk add --no-cache "nodejs~=22" npm=11.6.4-r0 # buildkit
RUN |9 UI_PORT=5173 MCPX_SERVER_PORT=9000 SERVE_METRICS_PORT=3000 MCPX_PORT=9000 TARGETPLATFORM=linux/amd64 BUILDPLATFORM=linux/amd64 LOKI_HOST=log-collector.lunar.dev LOKI_USER=lunar LOKI_PASSWORD=Pq7JBeP1d70UwI /bin/sh -c echo "Building on: $BUILDPLATFORM for: $TARGETPLATFORM" && echo "Architecture: $(uname -m)" && echo "Kernel: $(uname -r)" # buildkit
RUN |9 UI_PORT=5173 MCPX_SERVER_PORT=9000 SERVE_METRICS_PORT=3000 MCPX_PORT=9000 TARGETPLATFORM=linux/amd64 BUILDPLATFORM=linux/amd64 LOKI_HOST=log-collector.lunar.dev LOKI_USER=lunar LOKI_PASSWORD=Pq7JBeP1d70UwI /bin/sh -c apk add --no-cache python3=3.12.13-r0 py3-pip=25.1.1-r0 uv=0.7.22-r0 iptables=1.8.11-r1 ipset=7.24-r0 libcap=2.78-r0 su-exec=0.2-r3 ca-certificates=20250619-r0 mitmproxy=11.0.0-r0 gcc=14.2.0-r6 python3-dev=3.12.13-r0 musl-dev=1.2.5-r12 linux-headers=6.14.2-r0 rust=1.87.0-r1 cargo=1.87.0-r1 libexpat=2.7.5-r0 # buildkit
RUN |9 UI_PORT=5173 MCPX_SERVER_PORT=9000 SERVE_METRICS_PORT=3000 MCPX_PORT=9000 TARGETPLATFORM=linux/amd64 BUILDPLATFORM=linux/amd64 LOKI_HOST=log-collector.lunar.dev LOKI_USER=lunar LOKI_PASSWORD=Pq7JBeP1d70UwI /bin/sh -c pip3 install --no-cache-dir --break-system-packages 'setuptools<81' supervisor==4.2.5 # buildkit
RUN |9 UI_PORT=5173 MCPX_SERVER_PORT=9000 SERVE_METRICS_PORT=3000 MCPX_PORT=9000 TARGETPLATFORM=linux/amd64 BUILDPLATFORM=linux/amd64 LOKI_HOST=log-collector.lunar.dev LOKI_USER=lunar LOKI_PASSWORD=Pq7JBeP1d70UwI /bin/sh -c addgroup -g ${LUNAR_USER_GID} -S ${LUNAR_USER} && adduser -u ${LUNAR_USER_UID} -S -D -G ${LUNAR_USER} -h ${HOME} -s /sbin/nologin ${LUNAR_USER} && addgroup -S docker || true && addgroup -g ${INTERCEPTION_USER_GID} -S ${INTERCEPTION_USER} && adduser -u ${INTERCEPTION_USER_UID} -S -D -G ${INTERCEPTION_USER} -h ${HOME}/${INTERCEPTION_USER} -s /sbin/nologin ${INTERCEPTION_USER} && addgroup -g ${SHARED_GROUP_GID} -S ${SHARED_GROUP_NAME} && addgroup ${LUNAR_USER} ${SHARED_GROUP_NAME} && addgroup ${INTERCEPTION_USER} ${SHARED_GROUP_NAME} && addgroup ${LUNAR_USER} docker || true # buildkit
RUN |9 UI_PORT=5173 MCPX_SERVER_PORT=9000 SERVE_METRICS_PORT=3000 MCPX_PORT=9000 TARGETPLATFORM=linux/amd64 BUILDPLATFORM=linux/amd64 LOKI_HOST=log-collector.lunar.dev LOKI_USER=lunar LOKI_PASSWORD=Pq7JBeP1d70UwI /bin/sh -c mkdir -p ${UV_CACHE_DIR} ${UV_DATA_DIR} ${UV_TOOL_DIR} ${UV_PYTHON_INSTALL_DIR} ${NPM_CONFIG_USERCONFIG} ${MITM_PROXY_CONF_DIR} ${DOCKER_CONFIG} && mkdir -p /var/log/${LUNAR_USER} ${HOME} ${HOME}/${INTERCEPTION_USER} && chown -R root:${SHARED_GROUP_NAME} /var/log/${LUNAR_USER} || true && chown -R ${LUNAR_USER}:${LUNAR_USER} ${HOME} && chown -R ${INTERCEPTION_USER}:${INTERCEPTION_USER} ${HOME}/${INTERCEPTION_USER} # buildkit
RUN |9 UI_PORT=5173 MCPX_SERVER_PORT=9000 SERVE_METRICS_PORT=3000 MCPX_PORT=9000 TARGETPLATFORM=linux/amd64 BUILDPLATFORM=linux/amd64 LOKI_HOST=log-collector.lunar.dev LOKI_USER=lunar LOKI_PASSWORD=Pq7JBeP1d70UwI /bin/sh -c mkdir -p ${UV_CACHE_DIR} ${UV_DATA_DIR} ${UV_TOOL_DIR} ${UV_PYTHON_INSTALL_DIR} && mkdir -p ${HOME}/${INTERCEPTION_USER}/.lunar/mitmproxy_conf && chown -R ${INTERCEPTION_USER}:${INTERCEPTION_USER} ${HOME}/${INTERCEPTION_USER}/.lunar && chmod -R 755 ${NPM_CONFIG_USERCONFIG} # buildkit
WORKDIR /lunar
COPY /tmp/version.env /tmp/version.env # buildkit
COPY --chown=lunar:lunar_group /lunar/packages/shared-model/dist packages/shared-model/dist # buildkit
COPY --chown=lunar:lunar_group /lunar/packages/shared-model/package.json packages/shared-model/package.json # buildkit
COPY --chown=lunar:lunar_group /lunar/packages/toolkit-core/dist packages/toolkit-core/dist # buildkit
COPY --chown=lunar:lunar_group /lunar/packages/toolkit-core/package.json packages/toolkit-core/package.json # buildkit
COPY --chown=lunar:lunar_group /lunar/packages/webapp-protocol/dist packages/webapp-protocol/dist # buildkit
COPY --chown=lunar:lunar_group /lunar/packages/webapp-protocol/package.json packages/webapp-protocol/package.json # buildkit
COPY --chown=lunar:lunar_group /lunar/packages/toolkit-ui/dist packages/toolkit-ui/dist # buildkit
COPY --chown=lunar:lunar_group /lunar/packages/toolkit-ui/package.json packages/toolkit-ui/package.json # buildkit
COPY --chown=lunar:lunar_group /lunar/packages/mcpx-server/dist/src packages/mcpx-server/dist # buildkit
COPY --chown=lunar:lunar_group /lunar/packages/mcpx-server/package.json packages/mcpx-server/package.json # buildkit
COPY --chown=lunar:lunar_group /lunar/node_modules node_modules # buildkit
COPY --chown=lunar:lunar_group /lunar/rootfs / # buildkit
EXPOSE [9000/tcp 3000/tcp]
ENTRYPOINT ["/usr/local/bin/entrypoint.sh"]
CMD ["/usr/local/bin/startup.sh"]
ENV BUILD_SCOPE=all
COPY --chown=lunar:lunar_group /lunar/scripts/generate-config.sh /usr/local/bin/generate-config.sh # buildkit
COPY --chown=lunar:lunar_group /lunar/packages/ui/dist packages/ui # buildkit
RUN |9 UI_PORT=5173 MCPX_SERVER_PORT=9000 SERVE_METRICS_PORT=3000 MCPX_PORT=9000 TARGETPLATFORM=linux/amd64 BUILDPLATFORM=linux/amd64 LOKI_HOST=log-collector.lunar.dev LOKI_USER=lunar LOKI_PASSWORD=Pq7JBeP1d70UwI /bin/sh -c npm install -g serve --cache /tmp/empty-cache # buildkit
EXPOSE [5173/tcp]

Labels

Key Value
org.opencontainers.image.created 2026-06-04T12:16:31.702Z
org.opencontainers.image.description
org.opencontainers.image.licenses
org.opencontainers.image.revision 5bcec883774badd041bc3a83aaf44a59a850263f
org.opencontainers.image.source https://git.flexiblyrigid.au/kstenhouse/mcpx
org.opencontainers.image.title mcpx
org.opencontainers.image.url https://git.flexiblyrigid.au/kstenhouse/mcpx
org.opencontainers.image.version main
Details
Container
2026-06-04 20:18:07 +08:00
1
OCI / Docker
linux/amd64
568 MiB
Versions (1) View all
latest 2026-06-04