pod_createLABSCO SUMMARY
Register it twice: read-only for production, full access for everything else.
The readonly flag is enforced by the server, so a client configured that way cannot create, update or delete anything — node modifications included. Because the flag is set at launch rather than per call, two entries pointed at the same script with different arguments is the clean way to run it.
What it is
A Python control-plane server for Kubernetes: multi-cluster context switching, CRUD on the common resources, guided prompts, and a readonly mode that blocks every write.
What you get
- CRUD across the usual resources — Deployments, Services, Pods, ConfigMaps, Secrets, Ingresses, StatefulSets, DaemonSets, Roles, ClusterRoles, PersistentVolumes and Claims
- Multi-cluster context switching, so one connection reaches every cluster in your kubeconfig
--readonlyrefusespod_create,deployment_delete,secret_updateand every other write, whilepod_list,pod_logs,deployment_get,secret_getand the rest of the reads stay available- Namespace work — create and delete namespaces, list everything inside one, manage labels and resource quotas
- Node work — read details and conditions, cordon and uncordon, label and taint, list the pods on a node
- Guided prompts:
troubleshoot_pod,deployment_guide,cluster_health_check,namespace_cleanup - Streamable HTTP transport as well as stdio, for managing clusters remotely
Requirements
Python 3.13 or higher, the uv package manager, and cluster access through ~/.kube/config or in-cluster config. Run uv run --with "mcp[cli]>=1.28.0,<2" python k8s_pilot.py, adding --readonly for safe inspection or --transport streamable-http for remote use. Or mount your kubeconfig into ghcr.io/bourbonkk/k8s-pilot:latest.
Setup effort
One command — docker run -i --rm -v ~/.kube/config:/root/.kube/config ghcr.io/bourbonkk/k8s-pilot:latest
USE CASES
Working out why a pod won't start
List the pods, read the one that's failing and pull its logs — the troubleshooting prompt walks the sequence.
Looking at production without any risk of changing it
Run the readonly entry: every create, update and delete is refused at the server, so inspection stays inspection.
Shipping a change across clusters
Switch context and create or update the deployment and its service, without juggling kubectl contexts by hand.
Draining a node for maintenance
Read the node's conditions, list what's running on it, then cordon it.
30 tools
Listed in project docs. Your client may show a different list.
pod_updatepod_deletedeployment_createdeployment_updatedeployment_deleteservice_createservice_updateservice_deleteconfigmap_createconfigmap_updateconfigmap_deletesecret_createsecret_updatesecret_deletenamespace_createnamespace_deletepod_listpod_detailpod_logsdeployment_listdeployment_getservice_listservice_getconfigmap_listconfigmap_getsecret_listsecret_getnamespace_listnamespace_getBEFORE YOU INSTALL
What to know first
Tools you get
30 tools named in the project's documentation.
Requires
Python 3.13 or later
INSTALLATION
Connect your client
Server setup
docker run -i --rm \
-v ~/.kube/config:/root/.kube/config \
ghcr.io/bourbonkk/k8s-pilot:latestMCP Clients
Claude Desktop
Install uv, then clone the repository:
git clone https://github.com/bourbonkk/k8s-pilot.gitAdd this block; <YOUR_PATH_TO_CLONED_REPO> is the directory where you cloned the repo:
{
"mcpServers": {
"k8s_pilot": {
"command": "uv",
"args": [
"--directory",
"<YOUR_PATH_TO_CLONED_REPO>/k8s-pilot",
"run",
"--with",
"mcp[cli]>=1.28.0,<2",
"python",
"k8s_pilot.py"
]
}
}
}Claude Desktop — read-only
Install uv, then clone the repository:
git clone https://github.com/bourbonkk/k8s-pilot.gitAdd this block; <YOUR_PATH_TO_CLONED_REPO> is the directory where you cloned the repo:
{
"mcpServers": {
"k8s_pilot_readonly": {
"command": "uv",
"args": [
"--directory",
"<YOUR_PATH_TO_CLONED_REPO>/k8s-pilot",
"run",
"--with",
"mcp[cli]>=1.28.0,<2",
"python",
"k8s_pilot.py",
"--readonly"
]
}
}
}Claude Desktop — Docker
{
"mcpServers": {
"k8s_pilot_docker": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-v",
"/Users/<YOUR_USERNAME>/.kube/config:/root/.kube/config",
"ghcr.io/bourbonkk/k8s-pilot:latest"
]
}
}
}