Because it speaks to the API server directly there is nothing to install alongside it and no command output to parse — results come back structured, and `resources_list` and `resources_get` reach any kind in the cluster rather than a curated subset. Everything a debugging session needs is present: pod logs, exec, kubelet-level node stats, and events filtered by field selector.
A Go MCP server that talks to the Kubernetes API server directly rather than shelling out to `kubectl`. It ships as a single native binary for Linux, macOS and Windows, and also as an npm package, a Python package and a container image. It reads your kubeconfig, picks up changes to it, and can address several clusters at once.
- Pods in full: `pods_list`, `pods_list_in_namespace`, `pods_get`, `pods_log`, `pods_exec`, `pods_top`, `pods_run`, `pods_delete`
- Any resource at all by apiVersion and kind, CRDs included — `resources_list`, `resources_get`, `resources_create_or_update`, `resources_delete`, `resources_scale`
- The cluster's own account of what went wrong: `events_list` narrowed by field selector, `nodes_log` straight from the kubelet, `nodes_stats_summary` for CPU, memory, filesystem and network per node, pod and container
- Namespaces and OpenShift projects — `namespaces_list`, `projects_list`
- Kubeconfig without leaving the conversation: `configuration_view`, `configuration_contexts_list`, `targets_list`
- Optional toolsets behind `--toolsets`: `helm` for `helm_install`, `helm_list` and `helm_uninstall`, plus `tekton`, `kubevirt`, `kiali`, `netobserv` and `kcp`
- Two switches worth setting deliberately: `--read-only` blocks every write, `--disable-destructive` keeps creates but blocks deletes and updates
- Sensitive values — tokens, keys, passwords, cloud credentials — redacted out of the log messages sent to clients
Access to a Kubernetes cluster. That is the whole list: no account, no key, and no external CLI, because the binary speaks to the API server itself. Run it with `npx -y kubernetes-mcp-server@latest`, `uvx kubernetes-mcp-server@latest`, the release binary, or the `ghcr.io/containers/kubernetes-mcp-server` image with your kubeconfig mounted and `KUBECONFIG` pointed at it. `--port` switches from stdio to Streamable HTTP on `/mcp`; longer-lived setups go in a TOML config file, reloadable on SIGHUP, where you can also deny whole resource kinds such as Secret. The `config` and `core` toolsets are on by default and everything else is opt-in.
One command — npx -y kubernetes-mcp-server@latest
