docker2k8s-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| DEBUG | No | Include tracebacks in tool errors. | false |
| LOG_LEVEL | No | Standard logging level. | INFO |
| KUBECTL_PATH | No | Path to the kubectl binary. | kubectl |
| KUBE_CONTEXT | No | kubectl context to use. Defaults to the current context. | |
| ALLOWED_ROOTS | No | Filesystem sandbox. OS-path-separator delimited. | cwd + project root |
| GENERATED_DIR | No | Where manifests are written. | ./generated |
| KUBE_NAMESPACE | No | Default target namespace. | default |
| KUBECTL_TIMEOUT | No | Seconds before a kubectl call is aborted. | 120 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| inspect_projectA | Start here. Given a project directory, report which Docker artefacts it contains: Dockerfile(s), a Compose file, .env files, source directories, dependency files and the names of the Compose services. Secret values are never returned. |
| inspect_dockerfileA | Parse a Dockerfile into the facts a migration needs: base images and build stages, EXPOSE ports, WORKDIR, USER, ENTRYPOINT/CMD, declared ENV keys and the HEALTHCHECK. Use it to learn which port an image actually listens on. |
| inspect_composeA | Parse a Compose file into normalised services: images, build contexts, port mappings, environment, env_file, volumes, depends_on, healthchecks, restart policy, networks and resource limits. Values that look like credentials are returned as and listed by key in secret_keys. |
| inspect_environmentA | List the environment variables the project uses, from .env files and from Compose, and classify each as configuration or secret. Secret VALUES are never returned -- only the key names -- so this is safe to call on a project with real credentials. |
| analyze_projectA | Explain how this project's Docker concepts map to Kubernetes: containers to Deployments or StatefulSets, port mappings to Services, environment to ConfigMaps and Secrets, volumes to PersistentVolumeClaims, HEALTHCHECK to readiness and liveness probes, and Compose service names to Service DNS. Also reports what cannot be migrated automatically (bind mounts, depends_on ordering, locally built images) as warnings and blockers. |
| create_migration_planA | Build the concrete, reviewable migration plan: per-service workload kind, replicas, images, ports, ConfigMap/Secret split, volumes, probes and resources, plus flat summaries of resources, ports, environment variables, secrets, volumes and healthchecks, with warnings and manual_steps. SHOW THIS PLAN TO THE USER before generating or deploying anything. Nothing is written to disk and no cluster is touched. |
| generate_manifestsA | Write Kubernetes YAML for the project into a per-project directory under the server's generated/ folder. Only the resources the application actually needs are produced: a stateless service gets a Deployment, Service and ConfigMap, while a database also gets a StatefulSet with volumeClaimTemplates and a headless Service. Secrets are written with placeholders, never real credentials. The plan is re-derived from the project, so pass the same namespace/image_registry you passed to create_migration_plan. Writes files only -- it does not touch a cluster. |
| validate_manifestsA | Check manifests for the mistakes that survive 'kubectl apply' but break the application: selectors that match no pods, a Service targetPort no container listens on, probes aimed at the wrong port, references to a ConfigMap, Secret or PVC that does not exist, undefined volume mounts, duplicate resources, wrong apiVersion, invalid names and out-of-range nodePorts. ALWAYS run this before deploying. Returns valid=false with human-readable errors when the manifests would break. |
| get_cluster_infoA | Confirm a Kubernetes cluster is reachable and list its nodes and namespaces. Call this before deploying so a connection problem is not mistaken for a deployment failure. |
| apply_manifestsA | DEPLOY. This writes to the cluster and changes running workloads. Requires approved=true, which you may only pass after the user has seen the migration plan and its warnings and has explicitly said to deploy. Do not infer approval from the original request. Run validate_manifests first; this tool refuses to apply manifests that fail validation. Use dry_run=true to have the API server check the manifests without changing anything -- a dry run needs no approval. |
| get_deployment_statusA | Report desired vs ready replicas and the rollout conditions for a Deployment, falling back to a StatefulSet of the same name. |
| get_podsA | List pods with phase, ready count, restart count and any detected problem (CrashLoopBackOff, ImagePullBackOff, Pending, OOMKilled, CreateContainerConfigError). Use this first when a deployment looks unhealthy. |
| get_pod_logsA | Read a pod's container logs. For a crash-looping pod set previous=true to read the instance that already died -- that is where the real error is. |
| get_servicesA | List Services with their type, ports, selector and endpoint count. A Service with zero endpoints is the usual reason an application is unreachable even though its pods look fine. |
| get_eventsA | Return recent Kubernetes events, oldest first. Events explain scheduling failures, image pull errors, probe failures and volume mount problems that the pod status alone does not. |
| verify_deploymentA | Run the post-deployment checks in one call: the workload exists, ready replicas match desired, pods are Running and Ready, restart counts are zero, Services exist and have endpoints, and optionally that a health endpoint responds through the API server proxy. Never assume a deployment succeeded -- call this. If healthy is false, call diagnose_deployment. |
| diagnose_deploymentA | Gather pods, container states, Services and warning events, and return a diagnosis: what is wrong, the evidence, the likely cause and a suggested fix. Recognises CrashLoopBackOff, ImagePullBackOff, Pending, OOMKilled, CreateContainerConfigError, failing probes, Services without endpoints and PVC problems. Call this whenever verify_deployment reports healthy=false. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
| migrate | Run the full inspect - analyze - plan - generate - validate - deploy workflow. |
| diagnose | Investigate why workloads in a namespace are unhealthy. |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 17 tools
Each tool targets a distinct phase or resource: inspection, planning, generation, validation, deployment, and specific Kubernetes status checks. The descriptions clearly differentiate overlapping-looking tools like inspect_project, inspect_dockerfile, and inspect_compose by specifying their exact scope.
All tool names follow a consistent snake_case verb_noun pattern, with verbs like get, inspect, create, generate, validate, apply, verify, and diagnose. This makes the toolset highly predictable and easy for an agent to navigate.
17 tools is slightly above the typical 3-15 range, but the count is justified by the full migration-and-operations lifecycle the server covers. Each tool appears to serve a necessary, non-overlapping purpose, so the set feels slightly heavy yet reasonable.
The toolset covers the complete Docker-to-Kubernetes workflow from artifact inspection, analysis, planning, manifest generation, validation, deployment, and post-deployment verification/diagnosis. Minor gaps such as no explicit rollback or cleanup tool are present, but the core migration lifecycle has no dead ends.