FROM node:20-slim # Install FreeCAD headless (freecad-cmd) and dependencies RUN apt-get update && apt-get install -y --no-install-recommends \ freecad \ ca-certificates \ && rm -rf /var/lib/apt/lists/* # Set headless Qt/FreeCAD env ENV QT_QPA_PLATFORM=offscreen ENV DISPLAY="" ENV FREECAD_USER_CONFIG=/tmp/.FreeCAD WORKDIR /app # Copy MCP server source COPY freecad-mcp-server/ . # Install Node deps + supergateway (stdio→HTTP bridge) RUN npm install && npm install -g supergateway # Ensure generated files dir exists RUN mkdir -p /data/files/generated EXPOSE 8808 # Use StreamableHttp (supports multiple concurrent connections, unlike SSE) CMD ["supergateway", "--stdio", "node build/index.js", "--port", "8808", "--outputTransport", "streamableHttp"]