FROM node:24.0.1-alpine # Install Node.js package supergateway RUN npm install -g supergateway # Install system dependencies including build tools RUN apk update && \ apk add --no-cache \ python3 \ py3-pip \ python3-dev \ bash \ screen \ rust \ cargo \ cmake \ make \ g++ \ clang \ llvm-dev \ clang-dev ### Python-based tools # Install bindgen-cli required by aws-lc-sys (dependency of uvx) RUN cargo install --force --locked bindgen-cli # Add cargo bin to PATH ENV PATH="/root/.cargo/bin:${PATH}" ENV LIBCLANG_PATH="/usr/lib/llvm19/lib/" # create venv RUN python3 -m venv /venv && \ echo "source /venv/bin/activate" >> /root/.profile && \ /venv/bin/pip install --no-cache-dir uvx uvenv mcp-server-fetch matplotlib numpy pyyaml ENV PATH="/venv/bin:${PATH}" ### Node-based tools # Clone, install dependencies, and build google-search-mcp-server RUN apk update && apk add --no-cache git RUN git clone https://github.com/ayush-rudani/google-search-mcp-server.git /opt/google-search-mcp-server && \ apk add --no-cache git && \ cd /opt/google-search-mcp-server && \ npm install && \ npm run build # Install global dependencies for Node.js-based MCP servers RUN npm install -g \ @modelcontextprotocol/server-google-maps \ @modelcontextprotocol/server-filesystem \ @upstash/context7-mcp \ @modelcontextprotocol/server-puppeteer \ @wonderwhy-er/desktop-commander@latest \ mcp-communicator-telegram \ mcp-cli-exec RUN npx @wonderwhy-er/desktop-commander@latest setup # chromium and x11 buffer (xvfb) for puppeteer RUN apk add chromium RUN apk add xvfb xvfb-run # Clean up apk cache RUN rm -rf /var/cache/apk/* # Ensure Python user binaries are in PATH ENV PATH="/root/.local/bin:${PATH}" WORKDIR /app EXPOSE 8000 ENTRYPOINT ["supergateway"] CMD ["--help"]