samcolon/k8s_mcp_server_prod
If you are the rightful owner of k8s_mcp_server_prod and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
This project sets up an AI-powered Kubernetes MCP server using Minikube, Google Gemini, and kubectl-ai on an EC2 instance, enabling natural-language interaction with Kubernetes.
kubectl-ai
Google's CLI for AI-driven Kubernetes commands.
Gemini API
Natural language LLM for interpreting user inputs.
π§ AI-Powered Kubernetes MCP Server (Minikube + Gemini + kubectl-ai)
This project deploys an AI-connected Kubernetes MCP (Model-Controller-Prompt) server on an EC2 instance using Minikube, Google Gemini, and kubectl-ai. The MCP server allows natural-language interaction with Kubernetes β powered by a custom schema and FastAPI backend.
π Full Guide Available
π Check out the full Medium article walkthrough here:
π Read on Medium
π§± Architecture Overview
- EC2 Ubuntu Instance (T2.Medium, 30 GiB EBS)
- Minikube (Docker driver)
- kubectl-ai β Googleβs CLI for AI-driven Kubernetes commands
- Gemini API (1.5 Flash) β Natural language LLM
- FastAPI MCP Server β Hosts custom
mcp-schema.json
for command interpretation - NodePort Service β Exposes MCP server endpoint
- Demo App β
my-website-app
deployed for live testing
π¦ Prerequisites
Tool | Required |
---|---|
Ubuntu 22.04 EC2 | β |
Docker (non-root) | β |
Minikube | β |
Go 1.22+ | β |
kubectl | β |
Gemini API Key | β |
βοΈ Setup Steps
π 1. Create Security Group
- Allow SSH (22)
- Allow NodePort range:
30000β32767
(TCP) - Allow HTTP (80)
βοΈ 2. Launch EC2 Instance
- AMI: Ubuntu 22.04+
- Type:
t2.medium
or higher - Disk:
30 GiB
- User-data:
#!/bin/bash
set -e
Update system and install essentials
apt-get update -y && apt-get upgrade -y apt-get install -y curl wget git ca-certificates gnupg lsb-release apt-transport-https software-properties-common
---- Python ----
apt-get install -y python3 python3-pip update-alternatives --install /usr/bin/python python /usr/bin/python3 1 update-alternatives --install /usr/bin/pip pip /usr/bin/pip3 1
---- Docker ----
apt-get install -y docker.io systemctl enable docker systemctl start dockeru
---
### π§βπ» 3. Initial Setup After SSH
```bash
sudo usermod -aG docker ubuntu
sudo reboot
π¦ 4. Install Requirements
# kubectl
# Go
Follow official Minikube install guide:
π https://minikube.sigs.k8s.io/docs/start/
π 5. Clone Repos
git clone https://github.com/your-username/k8s-mcp-server-prod.git
cd k8s-mcp-server-prod
git clone https://github.com/GoogleCloudPlatform/kubectl-ai.git
cd kubectl-ai
go build -o kubectl-ai ./cmd/kubectl-ai
sudo mv kubectl-ai /usr/local/bin/
βΈοΈ 6. Start Minikube
minikube start --driver=docker
π 7. Deploy MCP + App
kubectl apply -f rbac.yaml
kubectl apply -f my-website-app.yaml
kubectl apply -f mcp-deployment.yaml
kubectl apply -f mcp-service.yaml
π 8. Test MCP Server
minikube ip # e.g. 192.168.49.2
kubectl get svc mcp-service # Note NodePort, e.g. 31390
curl http://192.168.49.2:31390/mcp-schema.json
β Should return your schema in JSON.
π 9. Configure kubectl-ai
mkdir -p ~/.kube/kubectl-ai
nano ~/.kube/kubectl-ai/config.yaml
Paste:
mcp:
endpoint: http://192.168.49.2:31390/mcp-schema.json
name: mcp-server
llm:
provider: gemini
model: gemini-1.5-flash
π 10. Create Gemini Secret
kubectl create secret generic gemini-api-key --from-literal=GEMINI_API_KEY=your-key
export GEMINI_API_KEY=your-key
echo 'export GEMINI_API_KEY=your-key' >> ~/.bashrc
source ~/.bashrc
π§ 11. Use kubectl ai
kubectl ai --model gemini-1.5-flash
π¬ Demo Prompts
You can now ask kubectl ai
things like:
Prompt | Action |
---|---|
List all pods in the default namespace | list_pods |
Restart the my-website-app deployment | restart_deployment |
Scale the my-website-app to 5 replicas | scale_deployment |
Delete pod my-website-app-xyz | delete_pod |
Get logs from pod in default namespace | get_pod_logs |
List all nodes | get_nodes |
Get cluster namespaces | get_namespaces |
Get events in default namespace | get_events |
π§Ή Cleanup
kubectl delete -f mcp-service.yaml
kubectl delete -f mcp-deployment.yaml
kubectl delete -f my-website-app.yaml
kubectl delete -f rbac.yaml
kubectl delete secret gemini-api-key
π Acknowledgements
π Next Steps
- Add HTTPS ingress controller with TLS
- Package MCP as a Helm chart
- Add multi-model support for OpenAI or Anthropic