k3d_cluster_create
Create a new k3d cluster
Drive a local Kubernetes dev environment — k3d clusters, kubectl, Helm, Kustomize and Tilt — from one server, with production held out of reach.
LABSCO SUMMARY
Applies default to a dry run, contexts can be blocked by pattern, and the raw escape hatch is checked against a denylist. That is what makes handing an agent a cluster different from handing it a terminal.
A Go server for local Kubernetes development; its README counts 63 tools across eight groups: k3d clusters, kubectl operations, Helm charts, Kustomize overlays, Tilt workflows, Artifact Hub lookups, documentation search and composite CI routines. Helm and Kustomize run through their Go SDKs rather than the command line; kubectl, k3d and Tilt's lifecycle commands shell out.
kubectl_apply, kubectl_logs, kubectl_raw)helm_install, helm_upgrade)bootstrap_dev_env, debug_pod, deploy_and_verify, cluster_health_check, ci_run and more — and read-only resources for cluster info, namespaces, pods, services, deployments, events, Tilt status, kubeconfig, Helm releases and doc pagesGo 1.26 or newer to build, plus Docker, k3d, kubectl and tilt on the machine; Helm and Kustomize command-line tools are optional because their Go SDKs are embedded. It inherits your own kubeconfig and cluster credentials, and runs over stdio or with --http. Configuration is a JSON file with no comments allowed. Three safety behaviours are worth knowing before you wire it up: kubectl_apply defaults to dry_run: "client" so a real apply has to be asked for explicitly, blocked_contexts rejects operations against contexts matching patterns such as production or staging-*, and kubectl_raw is checked against a denylist that only unsafe: true overrides.
Build from source — git clone https://github.com/remiphilippe/mcp-devinfra.git
USE CASES
The apply runs as a client-side dry run unless you ask otherwise, so the diff and the validation errors come back before anything changes. Turning it into a real apply is a deliberate argument, not a default.
Describe the pod, pull its logs and read the recent events in the namespace, in one pass. The debug_pod prompt does exactly this sequence when you would rather not spell it out.
Look the chart up on Artifact Hub first and read its actual values and schema, then install. An automatic lookup before install can be turned on so this happens whether or not you remember.
Add glob patterns to the blocked contexts list and the safety layer refuses operations against anything matching, whatever the current kubeconfig context happens to be. This is the setting worth doing on day one.
One composite routine creates the k3d cluster, merges the kubeconfig, applies the Kustomize overlay and starts Tilt. The matching teardown reverses it, so an environment is cheap enough to throw away.
Search the bundled tilt, k3d, kubectl and Helm documentation from inside the session. The index ships with the server, so the answer does not depend on a search engine or on what the model remembers.
Listed in project docs. Your client may show a different list.
k3d_cluster_createCreate a new k3d cluster
k3d_cluster_deleteDelete a k3d cluster
k3d_cluster_listList k3d clusters with status
k3d_cluster_startStart a stopped k3d cluster
k3d_cluster_stopStop a running k3d cluster
k3d_node_listList k3d nodes
k3d_kubeconfig_getGet or merge kubeconfig for a k3d cluster
k3d_registry_createCreate a local container registry
k3d_image_importImport local images into a k3d cluster
kubectl_getGet Kubernetes resources as JSON
kubectl_applyApply a manifest (dry-run by default)
kubectl_deleteDelete Kubernetes resources
kubectl_describeDescribe a Kubernetes resource
kubectl_logsGet pod logs
kubectl_execExecute a command in a pod
kubectl_port_forwardForward ports to a pod or service
kubectl_rollout_statusCheck rollout status of a resource
kubectl_patchPatch a Kubernetes resource
kubectl_create_namespaceCreate a Kubernetes namespace
kubectl_config_viewView kubeconfig
kubectl_cluster_infoShow cluster info
kubectl_topShow resource usage for pods or nodes
kubectl_eventsGet Kubernetes events sorted by timestamp
kubectl_waitWait for a condition on a Kubernetes resource
kubectl_rawRun arbitrary kubectl command (escape hatch)
helm_repo_addAdd a Helm chart repository
helm_repo_updateUpdate Helm chart repositories
helm_installInstall a Helm chart
helm_upgradeUpgrade a Helm release
helm_uninstallUninstall a Helm release
helm_listList Helm releases
helm_templateTemplate a Helm chart locally
helm_statusGet status of a Helm release
helm_show_valuesShow default values for a chart
helm_show_chartShow chart metadata
kustomize_buildBuild a kustomization directory
kustomize_build_and_applyBuild kustomization and apply to cluster (dry-run by default)
kustomize_edit_imageEdit an image reference in a kustomization
kustomize_edit_namespaceSet the namespace in a kustomization
kustomize_list_resourcesList resources defined in a kustomization
tilt_upStart Tilt in dev mode
tilt_downStop Tilt
tilt_ciRun Tilt in CI mode (blocks until healthy or failure)
tilt_logsGet logs for a Tilt resource
tilt_argsUpdate Tilt args at runtime
tilt_statusQuery Tilt resource status
tilt_triggerTrigger an update for a Tilt resource
tilt_getQuery Tilt API objects
tilt_describeDescribe a Tilt API object
tilt_sessionGet Tilt Session object for CI monitoring
artifacthub_searchSearch Helm charts on Artifact Hub
artifacthub_get_packageGet full metadata for a Helm chart
artifacthub_get_valuesGet default values.yaml for a Helm chart
artifacthub_get_schemaGet values.schema.json for a Helm chart
artifacthub_get_readmeGet README for a Helm chart
artifacthub_get_templatesGet template files for a Helm chart
doc_searchSearch documentation for tilt, k3d, and kubectl
doc_search_rebuildRebuild the documentation search index
doc_getGet a specific documentation page by source and slug
doc_list_topicsList available documentation topics
ci_bootstrapCreate cluster, merge kubeconfig, and run tilt ci
ci_teardownStop tilt and delete cluster
ci_diagnosticsCollect pod status, events, and tilt session for debugging
BEFORE YOU INSTALL
63 tools named in the project's documentation.
INSTALLATION
git clone https://github.com/remiphilippe/mcp-devinfra.git
cd mcp-devinfra
make build{
"mcpServers": {
"devinfra-mcp": {
"command": "devinfra-mcp",
"args": [
"--config",
"<YOUR_PATH_TO_SETTINGS>"
]
}
}
}make build puts the binary at bin/devinfra-mcp inside your clone, not on your PATH: use its full path as "command" (or copy it onto your PATH). --config is optional — it points at a JSON file that overrides the defaults (no comments allowed); drop both arguments to run with defaults.
[mcp_servers.devinfra-mcp]
command = "devinfra-mcp"
args = ["--config", "<YOUR_PATH_TO_SETTINGS>"]make build puts the binary at bin/devinfra-mcp inside your clone, not on your PATH: use its full path as "command" (or copy it onto your PATH). --config is optional — it points at a JSON file that overrides the defaults (no comments allowed); drop both arguments to run with defaults.
./bin/devinfra-mcp --http --addr :8080 --config settings.json