Most Kubernetes MCP servers run with whatever the kubeconfig on the host allows. Tying MCP execution to the signed-in user's own multi-cluster authorization is what makes it safe to expose on a shared cluster — and every call is recorded.
A lightweight Kubernetes dashboard built in Go with an AMIS front end, shipped as one executable. It manages several clusters at once and doubles as an MCP server so a model can operate them.
- 49 built-in multi-cluster Kubernetes MCP tools, combinable into a much larger set of cluster operations, usable from other LLM software as well as from k8m itself
- MCP calls that inherit the caller's own cluster authorization — whoever is using the model executes with their own permissions, so a tool call cannot exceed what that person could do by hand
- A per-call record of every MCP invocation
- Multi-cluster management with InCluster detection, automatic scanning of kubeconfig files alongside the configured path, heartbeat checks and reconnection
- Per-cluster authorization for users and groups at three levels — read-only, exec, and cluster administrator — with namespace allow and deny lists
- Pod file management from a right-click file tree, live log viewing with download and highlighted search, and shell execution inside a pod
- CRD discovery listed as a tree, a Helm repository market with one-click install, uninstall and upgrade, scheduled multi-cluster inspection with Lua rule scripts, and Kubernetes Event forwarding to webhooks filtered by cluster, namespace, name or keyword
- Cross-platform builds for Linux, macOS and Windows on x86 and ARM, with SQLite, MySQL or PostgreSQL behind it
Download a release and run `./k8m`, then open http://127.0.0.1:3618 — the default username and password are both `k8m`, and changing them plus enabling two-step verification is the first thing to do on a shared install. `--kubeconfig` sets the config path, defaulting to `/root/.kube/config`, and `--in-cluster` registers the host cluster automatically. Docker Compose is the recommended path, mounting `./data` for persistence. For in-cluster deployment, apply the published manifest; the single-instance service definition must not carry the leader label, and the multi-instance one must. Kubectl Shell and Node Shell pull `bitnami/kubectl:latest` and `alpine:latest` by default, and those images must contain `kubectl` and `nsenter` respectively. MIT licensed.
