Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

✨ 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 ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Draft
KemingHe wants to merge8 commits intochakra-ui:main
base:main
Choose a base branch
Loading
fromKemingHe:feat/containerize-mcp-server/KemingHe

Conversation

@KemingHe
Copy link

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)

  • MCP server only available via NPM (npx @chakra-ui/react-mcp)
  • Requires Node.js and pnpm setup for local development
  • No containerized deployment option for teams/organizations
  • Manual Docker builds needed for custom deployments

🚀 New behavior

  • Dual-mode containerization: stdio (local) and HTTP (remote) viaMCP_MODE env var
  • Automated multi-arch builds:linux/amd64 +linux/arm64 published to GHCR on MCP releases
  • Developer-friendly testing: Manual dispatch workflow with dry-run capabilities
  • Security-first design: Non-root user, optimized build context, minimal attack surface
  • Comprehensive documentation: Workflow architecture, Docker usage guides, developer onboarding

Key Features:

  • Pull from GHCR:docker pull ghcr.io/chakra-ui/chakra-ui/react-mcp:2.0.5
  • Local stdio usage: No NPM/Node.js setup required for end users
  • HTTP deployment: Team servers withdocker run -p 3000:3000 -e MCP_MODE=http
  • CI automation: Triggered by@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:

  • CI Configuration: Multi-arch workflow, GHCR integration, manual dispatch logic
  • Documentation:.github/workflows/README.md system architecture,apps/mcp/Docker.md usage guide
  • Security: Non-root container, optimized.dockerignore, minimal dependencies

Business Value:

  • Individual developers: Skip NPM setup, direct Docker usage for MCP tooling
  • Organizations: HTTP mode for shared team deployments and remote access
  • Maintainers: Automated Docker publishing aligned with existing MCP release process

gregboero reacted with thumbs up emoji
@vercel
Copy link

vercelbot commentedAug 4, 2025
edited
Loading

The latest updates on your projects. Learn more aboutVercel for GitHub.

ProjectDeploymentPreviewUpdated (UTC)
chakra-ui-storybookReadyReadyPreviewOct 19, 2025 5:15pm
chakra-v3-docsReadyReadyPreviewOct 19, 2025 5:15pm

💡Enable Vercel Agent with $100 free credit for automated AI reviews

@changeset-bot
Copy link

changeset-botbot commentedAug 4, 2025
edited
Loading

⚠️ No Changeset found

Latest commit:511deaf

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go.If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets

When changesets are added to this PR, you'll see the packages that this PR includes changesets for and the associated semver types

Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

@KemingHe
Copy link
Author

⚠️ No Changeset found

Latest commit:6b77975

Merging this PR will not cause a version bump for any packages. If these changes should not result in a new version, you're good to go.If these changes should result in a version bump, you need to add a changeset.

This PR includes no changesets
Click here to learn what changesets are, and how to add one.

Click here if you're a maintainer who wants to add a changeset to this PR

No changeset intended, this is not a core package update PR. The@chakra-ui/react-mcp has already been excluded according to.changeset/config.json.

@segunadebayo
Copy link
Member

Amazing work@KemingHe

Will review this shortly and get it merged

gregboero reacted with rocket emoji

@KemingHeKemingHeforce-pushed thefeat/containerize-mcp-server/KemingHe branch froma11484a to32c9b95CompareAugust 5, 2025 17:38
@KemingHeKemingHeforce-pushed thefeat/containerize-mcp-server/KemingHe branch from4c1e34a tob786995CompareAugust 6, 2025 17:42
@KemingHeKemingHeforce-pushed thefeat/containerize-mcp-server/KemingHe branch fromb786995 to4b703c8CompareAugust 6, 2025 19:36
@KemingHeKemingHeforce-pushed thefeat/containerize-mcp-server/KemingHe branch from4b703c8 tocc70f31CompareAugust 8, 2025 10:46
@KemingHeKemingHe marked this pull request as draftAugust 10, 2025 00:11
@KemingHeKemingHeforce-pushed thefeat/containerize-mcp-server/KemingHe branch from1d2edba to972d914CompareAugust 11, 2025 17:11
@KemingHeKemingHeforce-pushed thefeat/containerize-mcp-server/KemingHe branch from972d914 to8054ea0CompareAugust 15, 2025 21:33
@KemingHeKemingHeforce-pushed thefeat/containerize-mcp-server/KemingHe branch from8054ea0 to93dd813CompareAugust 18, 2025 22:26
@KemingHeKemingHeforce-pushed thefeat/containerize-mcp-server/KemingHe branch from93dd813 to29d74e7CompareAugust 19, 2025 14:59
@KemingHeKemingHeforce-pushed thefeat/containerize-mcp-server/KemingHe branch from29d74e7 to7cb090dCompareAugust 21, 2025 16:29
@gregboero
Copy link

Hello, any news on this feature? It’s something my team is really looking forward to.

@KemingHe
Copy link
Author

Hello, any news on this feature? It’s something my team is really looking forward to.

@gregboero

I will get this polished up by end of the week.

@segunadebayo

I will ping you when it's ready for review and publishing.

gregboero reacted with heart emoji

refschakra-ui#10204CHANGES- 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-mcpIMPACT- 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 optimizationsTECHNICAL NOTES- Foundation for part 1/2 ofchakra-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
refschakra-ui#10204CHANGES- 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 examplesIMPACT- HTTP mode now works correctly alongside stdio mode- Enhanced container security with non-root execution- Both modes tested and verified with secure setupTECHNICAL 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 documentationTECHNICAL 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 modesIMPACT- 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 clarityIMPACT- 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 workflowIMPACT- 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 linksTECHNICAL 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 variableIMPACT- Workflow now works seamlessly in any fork without configuration- Container images display proper metadata on GHCR package pages- Documentation provides clearer value proposition for usersTECHNICAL 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 docsIMPACT- 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 stagesTECHNICAL 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
@KemingHe
Copy link
Author

Hello, any news on this feature? It’s something my team is really looking forward to.

@gregboero

I will get this polished up by end of the week.

@segunadebayo

I will ping you when it's ready for review and publishing.

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-izedstdio plushttp transports of the MCP server. I encountered:

  • Behavioral inconsistencies between consumers:
    • Claude Code (mcp discovery failure)
    • Claude Desktop (lack of http transport support)
    • Cursor (pro tools discovery failure)
    • GitHub Copilot (yet to be tested)
  • Need for clear documentation for API key inhttp transport headers
  • Need for clear documentation for API key generation process
  • 4-stage full regression testing process until ready for production (each must test with and without API key):
    • Localnode stdio.js
    • Local docker stdio
    • Local docker http
    • Preview GHCR and docker pull, then stdio and http transports

I expect another 5-10 hours of additional work to fully and responsibly delivernot 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.

Sign up for freeto join this conversation on GitHub. Already have an account?Sign in to comment

Reviewers

1 more reviewer

@Ayokanmi-AdejolaAyokanmi-AdejolaAyokanmi-Adejola approved these changes

Reviewers whose approvals may not affect merge requirements

Assignees

No one assigned

Labels

None yet

Projects

None yet

Milestone

No milestone

Development

Successfully merging this pull request may close these issues.

4 participants

@KemingHe@segunadebayo@gregboero@Ayokanmi-Adejola

[8]ページ先頭

©2009-2025 Movatter.jp