You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

76 lines
1.9 KiB

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"]