-
-
Notifications
You must be signed in to change notification settings - Fork 3.5k
✨ feat(mcp): add Docker containerization with automated GHCR publishing #10220
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
✨ feat(mcp): add Docker containerization with automated GHCR publishing #10220
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
💡 Enable Vercel Agent with $100 free credit for automated AI reviews |
|
No changeset intended, this is not a core package update PR. The |
6b77975 to
d498904
Compare
|
Amazing work @KemingHe Will review this shortly and get it merged |
a11484a to
32c9b95
Compare
4c1e34a to
b786995
Compare
b786995 to
4b703c8
Compare
4b703c8 to
cc70f31
Compare
1d2edba to
972d914
Compare
972d914 to
8054ea0
Compare
8054ea0 to
93dd813
Compare
93dd813 to
29d74e7
Compare
29d74e7 to
7cb090d
Compare
|
Hello, any news on this feature? It’s something my team is really looking forward to. |
I will get this polished up by end of the week. I will ping you when it's ready for review and publishing. |
refs chakra-ui#10204 CHANGES - Add multi-stage Dockerfile with stdio/HTTP mode switching - Create comprehensive Docker.md with quick start guide - Implement optimized .dockerignore for efficient builds - Update README.md with Docker setup instructions - Align GHCR naming to ghcr.io/chakra-ui/chakra-ui/react-mcp IMPACT - Users can run MCP server in containers with same features as npx - Easy mode switching via MCP_MODE environment variable - Production-ready container with health checks and optimizations TECHNICAL NOTES - Foundation for part 1/2 of chakra-ui#10204 (GitHub Actions publishing next) - Uses main pnpm-lock.yaml with filtered workspace installation - Supports both stdio (default) and HTTP modes without functional changes - Clean separation of Docker concerns from core MCP functionality
refs chakra-ui#10204 CHANGES - Fix HTTP mode CMD path from dist/http.js to api/index.js - Add non-root mcpuser for container security - Copy missing api/ directory from build stage - Update Docker.md with local development examples IMPACT - HTTP mode now works correctly alongside stdio mode - Enhanced container security with non-root execution - Both modes tested and verified with secure setup TECHNICAL NOTES - Part 1/2 of Docker/GHCR implementation foundation - Maintains feature parity with npx version
CHANGES - Add multi-arch Docker workflow for GHCR publishing - Implement manual dispatch testing without disrupting auto releases - Create comprehensive workflows documentation system - Fix Docker.md version tag alignment (remove "v" prefix) IMPACT - MCP maintainers get automated Docker publishing on releases - Contributors can dry-run test Docker builds before merging - New developers have clear CI/CD system documentation TECHNICAL NOTES - Multi-platform builds: linux/amd64, linux/arm64 - Triggered by @chakra-ui/react-mcp@* tags + workflow_dispatch - SHOULD_PUSH env var controls push vs dry-run behavior - Complete system architecture in workflows README - Completes 2/2 Docker implementation (pending testing)
CHANGES - Fix stdio mode to use Docker args (-e) instead of NPM env field - Correct HTTP mode header name from CHAKRA_PRO_API_KEY to x-api-key - Add explicit CHAKRA_PRO_API_KEY environment variable to Dockerfile - Update documentation for both deployment modes IMPACT - Chakra UI Pro features now properly accessible in Docker deployments - Consistent API key handling across stdio and HTTP transport modes - Clear separation between host process (NPM) and container environment (Docker) TECHNICAL NOTES - Docker containers require -e flags for internal environment variables - NPM env field sets host process environment, not container environment - HTTP mode uses standard x-api-key header following REST conventions - Explicit ENV declaration improves Dockerfile transparency
CHANGES - Add comprehensive Docker Image Publishing section to workflows README - Document step-by-step manual workflow instructions with GitHub Actions links - Clarify Docker tag independence from internal @chakra-ui/react-mcp version - Reference apps/mcp/package.json for version info instead of hard-coding - Improve workflow input descriptions for manual dispatch clarity IMPACT - Core maintainers can confidently publish Docker images automatically or manually - Clear operational guidance for first release and testing scenarios - Eliminates confusion between Docker tags and internal package versions - Reduces maintenance burden with dynamic version references
CHANGES - Merge Docker.md content into README.md following DRY principles - Fix GHCR image name alignment across all documentation files - Replace hardcoded version with package.json import in http.ts - Add GitHub source links to tool documentation - Remove dead Docker.md references from workflows README - Add GHCR README copying step to mcp-docker.yml workflow IMPACT - Single source of truth for MCP Docker documentation - Consistent GHCR image references across all files - Dynamic versioning eliminates manual updates - Enhanced tool discoverability with direct source links TECHNICAL NOTES - Applied KISS principle: simplified version handling with JSON import - Applied DRY principle: eliminated duplicate Docker documentation - Corrected ghcr.io/chakra-ui/chakra-ui/react-mcp → ghcr.io/chakra-ui/react-mcp - Workflow now copies apps/mcp/README.md to root for GHCR display
CHANGES - Streamline MCP README description and features for clarity - Remove hard-coded repository restrictions from Docker workflow - Add OCI image metadata labels for proper GHCR presentation - Make image naming dynamic using repository_owner variable IMPACT - Workflow now works seamlessly in any fork without configuration - Container images display proper metadata on GHCR package pages - Documentation provides clearer value proposition for users TECHNICAL NOTES - Eliminated need to edit hard-coded values when testing in forks - Added org.opencontainers.image labels for description, source, and license
CHANGES - Implement dynamic container labels using GITHUB_REPOSITORY build arg - Add comprehensive Dockerfile documentation with stage organization - Enhance README with API key security guidance and usage clarity - Fix grammar and improve example consistency throughout docs IMPACT - Contributors can build fork-friendly images with correct metadata - End users gain clearer setup instructions and security best practices - Enhanced trust through GHCR-compliant container labeling - Improved maintainability with well-documented Docker stages TECHNICAL NOTES - Follows official GitHub Container Registry metadata standards - Dynamic labels replace hardcoded repository references - Multi-stage Dockerfile with clear separation of concerns - Enhanced security documentation for API key handling
7cb090d to
511deaf
Compare
Update to @gregboero, @segunadebayo, and the Chakra UI community: Over the weekend of 10-18, I've spent 10+ hours on the final polish and debugging of the Docker-ized
I expect another 5-10 hours of additional work to fully and responsibly deliver not just the Docker-ized MCP server, but more importantly design lineage, troubleshooting docs, and updated instructions in root README.md for quick onboarding. @segunadebayo I'm happy to continue maintaining this critical part of Chakra UI even after merging of this branch to main. Will keep you all posted! This is fun, believe it or not. |
Resolves #10204
📝 Description
Add complete Docker containerization for the Chakra UI MCP server with automated CI/CD publishing to GitHub Container Registry. This enables both individual developers and teams to deploy the MCP server without local dependency management.
⛳️ Current behavior (updates)
npx @chakra-ui/react-mcp)🚀 New behavior
MCP_MODEenv varlinux/amd64+linux/arm64published to GHCR on MCP releasesKey Features:
docker pull ghcr.io/chakra-ui/chakra-ui/react-mcp:2.0.5docker run -p 3000:3000 -e MCP_MODE=http@chakra-ui/react-mcp@*tags + manual testing💣 Is this a breaking change (Yes/No): No
All existing NPM usage remains unchanged. Docker is an additional deployment option.
📝 Additional Information
Testing Status: ✅ Workflow build passed successfully
Review Focus Areas:
.github/workflows/README.mdsystem architecture,apps/mcp/Docker.mdusage guide.dockerignore, minimal dependenciesBusiness Value: