The Central Pilot for Your Kubernetes Fleets ✈️✈️
k8s_pilot
is a lightweight, centralized control plane server for managing multiple Kubernetes clusters at once.
With powerful tools and intuitive APIs, you can observe and control all your clusters from one cockpit.
🚀 Overview
- 🔄 Supports multi-cluster context switching
- 🔧 Enables CRUD operations on most common Kubernetes resources
- 🔒 Readonly mode for safe cluster inspection
- ⚙️ Powered by MCP for Claude AI and beyond
🧰 Prerequisites
- Python 3.13 or higher
uv
package manager- Access to Kubernetes clusters (
~/.kube/config
or in-cluster config)
# Install uv (if not installed)
# For MacOS
brew install uv
# For Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
Installation
# Clone the repository
git clone https://github.com/bourbonkk/k8s-pilot.git
cd k8s-pilot
# Launch with uv + MCP
uv run --with mcp[cli] mcp run k8s_pilot.py
Usage
Normal Mode (Full Access)
# Start with full read/write access
uv run --with mcp[cli] mcp run k8s_pilot.py
Readonly Mode (Safe Inspection)
# Start in readonly mode - only read operations allowed
uv run --with mcp[cli] python k8s_pilot.py --readonly
Command Line Options
# Show help
uv run --with mcp[cli] python k8s_pilot.py --help
Readonly Mode
The --readonly
flag enables a safety mode that prevents any write operations to your Kubernetes clusters. This is perfect for:
- Cluster inspection without risk of accidental changes
- Audit scenarios where you need to view but not modify
- Learning environments where you want to explore safely
- Production monitoring with zero risk of modifications
Protected Operations (Blocked in Readonly Mode)
pod_create
,pod_update
,pod_delete
deployment_create
,deployment_update
,deployment_delete
service_create
,service_update
,service_delete
configmap_create
,configmap_update
,configmap_delete
secret_create
,secret_update
,secret_delete
namespace_create
,namespace_delete
- All other create/update/delete operations
Allowed Operations (Always Available)
pod_list
,pod_detail
,pod_logs
deployment_list
,deployment_get
service_list
,service_get
configmap_list
,configmap_get
secret_list
,secret_get
namespace_list
,namespace_get
- All other list/get operations
Usage with Claude Desktop
Use this config to run k8s_pilot MCP server from within Claude:
{
"mcpServers": {
"k8s_pilot": {
"command": "uv",
"args": [
"--directory",
"<path-to-cloned-repo>/k8s-pilot",
"run",
"--with",
"mcp[cli]",
"mcp",
"run",
"k8s_pilot.py"
]
}
}
}
For readonly mode, use this configuration:
{
"mcpServers": {
"k8s_pilot_readonly": {
"command": "uv",
"args": [
"--directory",
"<path-to-cloned-repo>/k8s-pilot",
"run",
"--with",
"mcp[cli]",
"python",
"k8s_pilot.py",
"--readonly"
]
}
}
}
Replace with the actual directory where you cloned the repo.
Scenario
Create a Deployment using the nginx:latest image in the pypy namespace, and also create a Service that connects to it.
Key Features
Multi-Cluster Management
- Seamlessly interact with multiple Kubernetes clusters
- Perform context-aware operations
- Easily switch between clusters via MCP prompts
Resource Control
- View, create, update, delete:
- Deployments, Services, Pods
- ConfigMaps, Secrets, Ingresses
- StatefulSets, DaemonSets
- Roles, ClusterRoles
- PersistentVolumes & Claims
Namespace Operations
- Create/delete namespaces
- List all resources in a namespace
- Manage labels and resource quotas
Node Management
- View node details and conditions
- Cordon/uncordon, label/taint nodes
- List pods per node
License
This project is licensed under the MIT License. See the LICENSE file for details.