diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..b0feda0 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,76 @@ +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"] diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..4bd217d --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,107 @@ +version: '3.8' + +# NOTE: remember to fill your .env + +services: + + mcp-fetch: + image: chodak166/mcp-supergateway + container_name: mcp-fetch + ports: + - "8001:8000" + command: --stdio "mcp-server-fetch --ignore-robots-txt" + restart: unless-stopped + + # mcp-google-search: + # image: chodak166/mcp-supergateway + # ports: + # - "8002:8000" + # env_file: + # - .env + # command: --stdio "node /opt/google-search-mcp-server/dist/index.js" + # restart: unless-stopped + + mcp-google-maps: + image: chodak166/mcp-supergateway + ports: + - "8003:8000" + env_file: + - .env + command: --stdio "npx -y @modelcontextprotocol/server-google-maps" + restart: unless-stopped + + mcp-context7: + image: chodak166/mcp-supergateway + ports: + - "8004:8000" + env_file: + - .env + command: --stdio "npx -y @upstash/context7-mcp@latest" + restart: unless-stopped + + # mcp-commander: + # image: chodak166/mcp-supergateway + # ports: + # - "8005:8000" + # volumes: + # - ./volumes/mcp/workspace:/app + # command: --stdio "npx -y @wonderwhy-er/desktop-commander@latest" + # restart: unless-stopped + + mcp-puppeteer: + image: chodak166/mcp-supergateway + ports: + - "8006:8000" + command: --stdio "xvfb-run --server-args='-screen 0 1920x1080x24' -a npx -y @modelcontextprotocol/server-puppeteer" + restart: unless-stopped + env_file: + - .env + + # mcp-telegram: + # image: chodak166/mcp-supergateway + # ports: + # - "8007:8000" + # env_file: + # - .env + # working_dir: /app + # volumes: + # - ./:/app + # command: --stdio "npx -y mcptelegram" + # restart: unless-stopped + + # mcp-filesystem: + # image: chodak166/mcp-supergateway + # ports: + # - "8008:8000" + # env_file: + # - .env + # working_dir: /app + # volumes: + # - ./:/app + # command: --stdio "npx -y @modelcontextprotocol/server-filesystem /app" + # restart: unless-stopped + + mcp-excel: + image: chodak166/mcp-supergateway + ports: + - "8009:8000" + volumes: + - ~/src/mcp-excel:/app + command: --stdio "npx -y @negokaz/excel-mcp-server" + restart: unless-stopped +# + # mcp-inspector: + # image: chodak166/mcp-supergateway + # container_name: mcp-inspector + # network_mode: host + # command: --stdio "npx -y @modelcontextprotocol/inspector" + # restart: unless-stopped + + mcp-brave-search: + image: chodak166/mcp-supergateway + ports: + - "8010:8000" + env_file: + - .env + command: --stdio "npx -y @brave/brave-search-mcp-server" + restart: unless-stopped