Containerization Assist

io.github.Azure由 GitHub 帳號 Azure 發布v1.5.0更新於 Oct 24, 2026

TypeScript MCP server for AI-powered containerization workflows with Docker and Kubernetes support

概覽

AI 產生的概覽

一個本機 MCP 伺服器,讓助理分析程式碼倉庫、產生 Dockerfile、建置、掃描、標記與推送映像,並產生及部署 Kubernetes 清單。

可以做什麼
分析倉庫結構,辨識語言、框架與 monorepo 模組,並產生或修正 Dockerfile,附帶策略驗證與知識庫建議。準備建置脈絡、建置映像、掃描漏洞、標記並推送到映像倉庫。產生 Kubernetes、Helm、Kustomize 或 ACA 清單,準備叢集並驗證部署。執行引導式工作流程,例如本機 Kind 迴圈、AKS 迴圈,或撰寫自訂 OPA Rego 策略。查詢伺服器狀態,並為長時間操作送出進度通知。
適用情境
適合在容器化應用程式時,讓助理依分析、產生 Dockerfile、建置與掃描映像、部署到 Kubernetes 的順序走完整個流程。最適合一位工程師一次容器化一個應用程式,也支援含多個服務的 monorepo。
執行需求
透過 npm 套件以 stdio 在本機執行,需要 Node.js 20 或更新版本。需要執行中的 Docker 守護程序與可存取的 socket;Kubernetes 部署功能需要 kubeconfig、叢集存取權限與相應的 RBAC 權限。漏洞掃描可選裝 Trivy。選用環境變數包括 DOCKER_SOCKET、DOCKER_HOST、KUBECONFIG、K8S_NAMESPACE、LOG_LEVEL 與 CUSTOM_POLICY_PATH。
安裝前請注意
它會建置映像、推送到映像倉庫,並準備及部署到 Kubernetes 叢集,會改變遠端狀態;操作前請確認目標倉庫、命名空間與脈絡。它需要存取 Docker socket,這在主機上幾乎等同 root 權限。選用的工具執行日誌會把工具輸入與輸出寫入磁碟上的 JSON 檔案。推送映像可能產生映像倉庫或雲端費用。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Containerization Assist,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

Containerization Assist MCP Server

[Test Pipeline] [Version] [MCP SDK] [Node] [TypeScript] [License] [Docs]

An AI-powered containerization assistant that helps you build, scan, and deploy Docker containers through VS Code and other MCP-compatible tools.

Full documentation →

Install

[Install in VS Code] [Install in VS Code Insiders]

Features

Core Capabilities

  • 🐳 Docker Integration: Build, scan, and deploy container images
  • ☸️ Kubernetes Support: Generate manifests and deploy applications
  • 🤖 AI-Powered: Intelligent Dockerfile generation and optimization
  • 🧠 Knowledge Enhanced: AI-driven content improvement with security and performance best practices
  • 🔄 Intelligent Tool Routing: Automatic dependency resolution and execution
  • 📊 Progress Tracking: Real-time progress updates via MCP notifications
  • 🔒 Security Scanning: Built-in vulnerability scanning with AI-powered suggestions
  • ✨ Smart Analysis: Context-aware recommendations
  • Policy-Driven System (v3.0)
    • Pre-generation configuration
    • Knowledge filtering and weighting
    • Template injection
    • Semantic validation
    • Cross-tool consistency

Policy System (v3.0)

Full control over containerization through Rego policies:

  • Configure Before Generation: Set defaults for resources, base images, build strategy
  • Guide During Generation: Filter knowledge base, inject templates automatically
  • Validate After Generation: Semantic checks, security scoring, cross-tool consistency

Example Policies Included:

  • Environment-based strategy (dev/staging/prod)
  • Cost control by team tier
  • Security-first organization
  • Multi-cloud registry governance
  • Speed-optimized development

See Policy Authoring Guide for details.

System Requirements

  • Node.js 20+
  • Docker or Docker Desktop
  • Optional: Trivy (for security scanning features)
  • Optional: Kubernetes (for deployment features)

Manual Install

Add the following to your VS Code settings or create .vscode/mcp.json in your project:

json
{  "servers": {    "ca": {      "command": "npx",      "args": ["-y", "containerization-assist-mcp", "start"],      "env": {         "LOG_LEVEL": "info"      }    }  }}

Restart VS Code to enable the MCP server in GitHub Copilot.

SDK Usage (Without MCP)

For direct tool usage without MCP protocol (e.g., VS Code extensions, programmatic access):

typescript
import { analyzeRepo, buildImageContext, scanImage } from 'containerization-assist-mcp/sdk';import { execSync } from 'child_process';
// Simple function calls - no MCP server neededconst analysis = await analyzeRepo({ repositoryPath: './myapp' });if (analysis.ok) {  console.log('Detected:', analysis.value.modules);}
// buildImageContext returns build context with security analysis and commandsconst buildContext = await buildImageContext({ path: './myapp', imageName: 'myapp:v1', platform: 'linux/amd64' });if (buildContext.ok) {  const { securityAnalysis, nextAction } = buildContext.value;  console.log('Security risk:', securityAnalysis.riskLevel);    // Execute the generated build command from the build context directory  execSync(nextAction.buildCommand.command, {    cwd: buildContext.value.context.buildContextPath,    env: { ...process.env, ...nextAction.buildCommand.environment }  });}
const scan = await scanImage({ imageId: 'myapp:v1' });

See the SDK integration examples for full SDK documentation.

Windows Users

For Windows, use the Windows Docker pipe:

json
"DOCKER_SOCKET": "//./pipe/docker_engine"

Quick Start

The easiest way to understand the containerization workflow is through an end-to-end example:

Single-App Containerization Journey

This MCP server guides you through a complete containerization workflow for a single application. The journey follows this sequence:

  1. Analyze Repository → Understand your application's language, framework, and dependencies
  2. Generate Dockerfile → Create an optimized, security-hardened container configuration
  3. Build Image → Compile your application into a Docker image
  4. Scan Image → Identify security vulnerabilities and get remediation guidance
  5. Tag Image → Apply appropriate version tags to your image
  6. Generate K8s Manifests → Create deployment configurations for Kubernetes
  7. Prepare Cluster → Set up namespace and prerequisites, then deploy with kubectl apply
  8. Verify → Confirm deployment health and readiness

Prerequisites

Before starting, ensure you have:

  • Docker: Running Docker daemon with accessible socket (docker ps should work)
    • Linux/Mac: /var/run/docker.sock accessible
    • Windows: Docker Desktop with //./pipe/docker_engine accessible
  • Kubernetes (optional, for deployment features):
    • Valid kubeconfig at ~/.kube/config
    • Cluster connectivity (kubectl cluster-info should work)
    • Appropriate RBAC permissions for deployments, services, namespaces
  • Node.js: Version 20 or higher
  • MCP Client: VS Code with Copilot, Claude Desktop, or another MCP-compatible client

Example Workflow with Natural Language

Once configured in your MCP client (VS Code Copilot, Claude Desktop, etc.), use natural language:

Starting the Journey:

"Analyze my Java application for containerization"

Building the Container:

"Generate an optimized Dockerfile with security best practices""Build a Docker image tagged myapp:v1.0.0""Scan the image for vulnerabilities"

Deploying to Kubernetes:

"Generate Kubernetes manifests for this application""Prepare my cluster and deploy to the default namespace""Verify the deployment is healthy"

Single-Operator Model

This server is optimized for one engineer containerizing one application at a time. Key characteristics:

  • Sequential execution: Each tool builds on the results of previous steps
  • Fast-fail validation: Clear, actionable error messages if Docker/Kubernetes are unavailable
  • Deterministic AI generation: Tools provide reproducible outputs through built-in prompt engineering
  • Real-time progress: MCP notifications surface progress updates to clients during long-running operations

Multi-Module/Monorepo Support

The server detects and supports monorepo structures with multiple independently deployable services:

  • Automatic Detection: analyze-repo identifies monorepo patterns (npm workspaces, services/, apps/ directories)
  • Automated Multi-Module Generation: generate-dockerfile and generate-k8s-manifests support multi-module workflows
  • Conservative Safeguards: Excludes shared libraries and utility folders from containerization

Multi-Module Workflow Example:

1. "Analyze my monorepo at ./my-monorepo"   → Detects 3 modules: api-gateway, user-service, notification-service
2. "Generate Dockerfiles"   → Automatically creates Dockerfiles for all 3 modules:     - services/api-gateway/Dockerfile     - services/user-service/Dockerfile     - services/notification-service/Dockerfile
3. "Generate K8s manifests"   → Automatically creates manifests for all 3 modules
4. Optional: "Generate Dockerfile for user-service module"   → Creates module-specific deployment manifests

Detection Criteria:

  • Workspace configurations (npm, yarn, pnpm workspaces, lerna, nx, turborepo, cargo workspace)
  • Separate package.json, pom.xml, go.mod, Cargo.toml per service
  • Independent entry points and build configs
  • EXCLUDES: shared/, common/, lib/, packages/utils directories

Available Tools

The server provides 11 MCP tools organized by functionality:

Analysis & Planning

ToolDescription
analyze-repoAnalyze repository structure and detect technologies by parsing config files

Dockerfile Operations

ToolDescription
generate-dockerfileGather insights from knowledge base and return requirements for Dockerfile creation
fix-dockerfileAnalyze Dockerfile for issues including organizational policy validation and return knowledge-based fix recommendations

Image Operations

ToolDescription
build-image-contextPrepare Docker build context with security analysis and return build commands
scan-imageScan Docker images for security vulnerabilities with remediation guidance (uses Trivy CLI)
tag-imageTag Docker images with version and registry information
push-imagePush Docker images to a registry

Kubernetes Operations

ToolDescription
generate-k8s-manifestsGather insights and return requirements for Kubernetes/Helm/ACA/Kustomize manifest creation
prepare-clusterPrepare Kubernetes cluster for deployment
verify-deployVerify Kubernetes deployment status

Utilities

ToolDescription
opsOperational utilities for ping and server status

Workflow Tools

Interactive workflow tools that return step-by-step plans (output is collapsed by default in VS Code Copilot Chat):

ToolDescriptionInputs
create-containerization-policyStep-by-step guidance for authoring a custom OPA Rego policyNone
kind-loopLocal dev loop: analyze → build → scan → deploy to Kindnamespace (optional), imageName (optional)
aks-loopRemote dev loop: analyze → build → push → deploy to AKSregistry, resourceGroup, clusterName (required); namespace, imageName (optional)

Version Tracking

All generated artifacts include version metadata so you can track which version of containerization-assist produced them.

Dockerfiles (generate-dockerfile):

The tool output includes attributionLabels.labels with a version label, included as a LABEL instruction in the generated Dockerfile:

LabelValuePurpose
com.azure.containerizationassist.versionPackage version (e.g., 1.4.0)Version of containerization-assist used

Kubernetes Manifests (generate-k8s-manifests):

The tool output includes attributionLabels.annotations applied to all generated Kubernetes resource metadata:

TypeKeyValuePurpose
Annotationcom.azure.containerizationassist/versionPackage version (e.g., 1.4.0)Version of containerization-assist used

Organizations can add custom labels via the policy system's orgStandards.requiredLabels configuration.

Supported Technologies

Languages & Frameworks

  • Java: Spring Boot, Quarkus, Micronaut (Java 8-21)
  • .NET: ASP.NET Core, Blazor (.NET 6.0+)

Build Systems

  • Maven, Gradle (Java)
  • dotnet CLI (.NET)

Configuration

Environment Variables

The following environment variables control server behavior:

VariableDescriptionDefaultRequired
DOCKER_SOCKETDocker socket path/var/run/docker.sock (Linux/Mac)
//./pipe/docker_engine (Windows)
No
DOCKER_HOSTDocker host URI (unix://, tcp://, http://, https://, npipe://)Auto-detectedNo
DOCKER_TIMEOUTDocker operation timeout in milliseconds60000 (60s)No
KUBECONFIGPath to Kubernetes config file~/.kube/configNo
K8S_NAMESPACEDefault Kubernetes namespacedefaultNo
LOG_LEVELLogging levelinfoNo
WORKSPACE_DIRWorking directory for operationsCurrent directoryNo
MCP_MODEEnable MCP protocol mode (logs to stderr)falseNo
MCP_QUIETSuppress non-essential output in MCP modefalseNo
CONTAINERIZATION_ASSIST_TOOL_LOGS_DIR_PATHDirectory path for tool execution logs (JSON format)DisabledNo
CUSTOM_POLICY_PATHDirectory path for custom policies (highest priority)Not setNo

Progress Notifications: Long-running operations (build, deploy, scan-image) emit real-time progress updates via MCP notifications. MCP clients can subscribe to these notifications to display progress to users.

Tool Execution Logging

Enable detailed logging of all tool executions to JSON files for debugging and auditing:

bash
export CONTAINERIZATION_ASSIST_TOOL_LOGS_DIR_PATH=/path/to/logs

Log File Format:

  • Filename: ca-tool-logs-${timestamp}.jsonl
  • Example: ca-tool-logs-2025-10-13T14-30-15-123Z.jsonl

Log Contents:

json
{  "timestamp": "2025-10-13T14:30:15.123Z",  "toolName": "analyze-repo",  "input": { "path": "/workspace/myapp" },  "output": { "language": "typescript", "framework": "express" },  "success": true,  "durationMs": 245,  "error": "Error message if failed",  "errorGuidance": {    "hint": "Suggested fix",    "resolution": "Step-by-step instructions"  }}

The logging directory is validated at startup to ensure it's writable.

Policy System

The policy system uses OPA Rego for security, quality, and compliance enforcement. Rego is the industry-standard policy language from Open Policy Agent, providing expressive rules with rich built-in functions.

Default Behavior (No Configuration Needed): By default, all policies in the policies/ directory are automatically discovered and merged:

  • policies/security-baseline.rego - Essential security rules (root user prevention, secrets detection, privileged containers)
  • policies/base-images.rego - Base image governance (Microsoft Azure Linux recommendation, no :latest tag, deprecated versions)
  • policies/container-best-practices.rego - Docker best practices (HEALTHCHECK, multi-stage builds, layer optimization)

This provides comprehensive out-of-the-box security and quality enforcement.

Policy Customization

The policy system supports four priority-ordered search paths for easy customization:

Priority Order (highest to lowest):

  1. Custom directory via CUSTOM_POLICY_PATH environment variable (highest priority)
  2. Project directory at <git-root>/.containerization-assist/policy/ (tracked in git)
  3. Global directory at ~/.config/containerization-assist/policy/ (XDG-compliant)
  4. Built-in policies/ (shipped with package, lowest priority)

Migration Note: The policies.user/ directory is deprecated. For project-specific policies, use .containerization-assist/policy/ at your git root. For user-wide policies, use ~/.config/containerization-assist/policy/. The old directory still works but will log a deprecation warning.

Quick Start
bash
# Option 1: Global policies (no env var needed)mkdir -p ~/.config/containerization-assist/policy
# Copy example policy from the npm packagecp node_modules/containerization-assist-mcp/policies.user.examples/allow-all-registries.rego \   ~/.config/containerization-assist/policy/
# Policies are auto-reloaded on the next tool execution — no restart needed

Or set a custom location in .vscode/mcp.json:

json
{  "servers": {    "ca": {      "env": {        "CUSTOM_POLICY_PATH": "/path/to/policies"      }    }  }}
Pre-Built Example Policies

The policies.user.examples/ directory (included in the npm package) provides three ready-to-use examples:

ExamplePurposeUse Case
allow-all-registries.regoOverride MCR preferenceDocker Hub, GCR, ECR, private registries
warn-only-mode.regoAdvisory-only enforcementTesting, gradual adoption, dev environments
custom-organization-template.regoOrganization templateCustom labels, registries, compliance

See policies.user.examples/README.md for detailed usage.

Built-In Policies

Three production-ready Rego policies are included by default:

  • policies/security-baseline.rego - Essential security rules (root user prevention, secrets detection, privileged containers)
  • policies/base-images.rego - Base image governance (Microsoft Azure Linux recommendation, no :latest tag, deprecated versions)
  • policies/container-best-practices.rego - Docker best practices (HEALTHCHECK, multi-stage builds, layer optimization)

User policies override built-in policies by package namespace.

Policy File Format (Rego):

rego
package containerization.custom_policy
# Blocking violationsviolations contains result if {  input_type == "dockerfile"  regex.match(`FROM\s+[^:]+:latest`, input.content)
  result := {    "rule": "block-latest-tag",    "category": "quality",    "priority": 80,    "severity": "block",    "message": "Using :latest tag is not allowed. Specify explicit version tags.",    "description": "Prevent :latest for reproducibility",  }}
# Non-blocking warningswarnings contains result if {  input_type == "dockerfile"  not regex.match(`HEALTHCHECK`, input.content)
  result := {    "rule": "suggest-healthcheck",    "category": "quality",    "priority": 70,    "severity": "warn",    "message": "Consider adding HEALTHCHECK instruction for container monitoring",    "description": "HEALTHCHECK improves container lifecycle management",  }}
# Policy decisiondefault allow := falseallow if count(violations) == 0
# Result structureresult := {  "allow": allow,  "violations": violations,  "warnings": warnings,  "suggestions": [],  "summary": {    "total_violations": count(violations),    "total_warnings": count(warnings),    "total_suggestions": 0,  },}

Priority Levels:

  • 90-100: Security rules (highest priority)
  • 70-89: Quality rules
  • 50-69: Performance rules
  • 30-49: Compliance rules

Using Policies:

bash
# List discovered policiesnpx containerization-assist-mcp list-policies
# List policies and show merged resultnpx containerization-assist-mcp list-policies --show-merged
# Validate Dockerfile with policies (automatic discovery)npx containerization-assist-mcp fix-dockerfile --path ./Dockerfile

Creating Custom Policies:

See Policy Customization Guide and existing policies in policies/ for examples.

Testing Policies:

bash
# Validate policy syntaxopa check .containerization-assist/policy/my-policy.rego
# Run policy testsopa test .containerization-assist/policy/
# Test with MCP Inspectornpx @modelcontextprotocol/inspector containerization-assist-mcp start

MCP Inspector (Testing)

bash
npx @modelcontextprotocol/inspector containerization-assist-mcp start

Troubleshooting

Docker Connection Issues

bash
# Check Docker is runningdocker ps
# Check socket permissions (Linux/Mac)ls -la /var/run/docker.sock
# For Windows, ensure Docker Desktop is running

MCP Connection Issues

bash
# Test with MCP Inspectornpx @modelcontextprotocol/inspector containerization-assist-mcp start
# Check logs with debug levelnpx -y containerization-assist-mcp start --log-level debug

Kubernetes Connection Issues

The server performs fast-fail validation when Kubernetes tools are used. If you encounter Kubernetes errors:

Kubeconfig Not Found

bash
# Check if kubeconfig existsls -la ~/.kube/config
# Verify kubectl can connectkubectl cluster-info
# If using cloud providers, update kubeconfig:# AWS EKSaws eks update-kubeconfig --name <cluster-name> --region <region>
# Google GKEgcloud container clusters get-credentials <cluster-name> --zone <zone>
# Azure AKSaz aks get-credentials --resource-group <rg> --name <cluster-name>

Connection Timeout or Refused

bash
# Verify cluster is runningkubectl get nodes
# Check API server addresskubectl config view
# Test connectivity to API serverkubectl cluster-info dump
# Verify firewall rules allow connection to API server port (typically 6443)

Authentication or Authorization Errors

bash
# Check current context and userkubectl config current-contextkubectl config view --minify
# Test permissionskubectl auth can-i create deployments --namespace defaultkubectl auth can-i create services --namespace default
# If using cloud providers, refresh credentials:# AWS EKS: re-run update-kubeconfig# GKE: run gcloud auth login# AKS: run az login

Invalid or Missing Context

bash
# List available contextskubectl config get-contexts
# Set a contextkubectl config use-context <context-name>
# View current configurationkubectl config view

License

MIT License - See LICENSE file for details.

Support

See SUPPORT.md for information on how to get help with this project.

Trademarks

This project may contain trademarks or logos for projects, products, or services. Authorized use of Microsoft trademarks or logos is subject to and must follow Microsoft’s Trademark & Brand Guidelines. Use of Microsoft trademarks or logos in modified versions of this project must not cause confusion or imply Microsoft sponsorship. Any use of third-party trademarks or logos are subject to those third-party’s policies.

來源:README.md,提交 c724271

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v1.5.0最新Sep 16, 2026

評分

已滿足適用檢查項的 50%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分