mcp-k8s-context-server
MCP K8s Context Server
FastMCP-сервер, который предоставляет Kubernetes в виде набора инструментов только для чтения, доступных для LLM, а также слой аналитики для анализа состояния подов и отслеживания трендов ресурсов.
Возможности
Инструмент | Описание |
| Список подов в пространстве имен с информацией о фазе и перезапусках |
| Детальный статус пода, условия и состояния контейнеров |
| Хвост последних логов пода |
| Полная спецификация развертывания в формате JSON |
| Аналитика: сканирование логов, обнаружение шаблонов ошибок, ранжирование нездоровых подов |
| Аналитика: CPU/память из Metrics API с постоянным хранением исторических данных в SQLite |
Related MCP server: Kubernetes Read Only MCP Server
Структура проекта
mcp-k8s-context-server/
├── k8s_mcp_server.py # FastMCP server (all tools)
├── requirements.txt # Python dependencies
├── Dockerfile # Container image definition
├── k8s/
│ ├── serviceaccount.yaml # ServiceAccount + Namespace
│ ├── role.yaml # Least-privilege ClusterRole (read-only)
│ ├── rolebinding.yaml # ClusterRoleBinding
│ └── deployment.yaml # Deployment + Service
└── .github/
└── workflows/
└── ci.yml # Build + kubeconform validationЛокальная разработка
# Create and activate a virtual environment
python -m venv .venv && source .venv/bin/activate
# Install dependencies
pip install -r requirements.txt
# Run with local kubeconfig (falls back automatically from in-cluster config)
python k8s_mcp_server.pyРазвертывание в кластере (minikube)
Предварительные требования
# Install minikube, kubectl, docker
minikube version # >= 1.32
kubectl version # >= 1.28
docker version # >= 24Шаг 1 — Запуск minikube
minikube start --cpus=2 --memory=4096Шаг 2 — Включение metrics-server (требуется для get_resource_trends)
minikube addons enable metrics-serverШаг 3 — Сборка и загрузка образа в minikube
# Build locally
docker build -t mcp-k8s-server:latest .
# Load into minikube's image registry (no registry push needed)
minikube image load mcp-k8s-server:latest
# Verify the image is available
minikube image ls | grep mcp-k8s-serverШаг 4 — Применение манифестов Kubernetes
# Apply in dependency order: SA → Role → Binding → Deployment
kubectl apply -f k8s/serviceaccount.yaml
kubectl apply -f k8s/role.yaml
kubectl apply -f k8s/rolebinding.yaml
kubectl apply -f k8s/deployment.yamlШаг 5 — Проверка работы пода
kubectl get pods -n mcp-system
# Expected:
# NAME READY STATUS RESTARTS AGE
# mcp-k8s-server-xxxxxxxxx-xxxxx 1/1 Running 0 30s
kubectl logs -n mcp-system deploy/mcp-k8s-server
# Expected: "Using in-cluster Kubernetes config (ServiceAccount token)"Шаг 6 — Тестирование инструментов только для чтения в кластере
# Port-forward to access the server from your laptop
kubectl port-forward -n mcp-system svc/mcp-k8s-server 8000:8000 &
# Create a test pod to query
kubectl run nginx-test --image=nginx --restart=Never
# Test list_pods
curl -s http://localhost:8000/tools/list_pods \
-H 'Content-Type: application/json' \
-d '{"namespace":"default"}' | jq .
# Test get_pod_logs
curl -s http://localhost:8000/tools/get_pod_logs \
-H 'Content-Type: application/json' \
-d '{"pod_name":"nginx-test","namespace":"default","tail_lines":20}' | jq .
# Test analyze_pod_health
curl -s http://localhost:8000/tools/analyze_pod_health \
-H 'Content-Type: application/json' \
-d '{"namespace":"default","hours":1}' | jq .Шаг 7 — Доказательство блокировки операций записи RBAC
У ServiceAccount нет глаголов записи. Чтобы подтвердить это:
# Exec into the pod and try to delete another pod using the SA token
MCP_POD=$(kubectl get pod -n mcp-system -l app=mcp-k8s-server -o jsonpath='{.items[0].metadata.name}')
kubectl exec -n mcp-system $MCP_POD -- \
kubectl delete pod nginx-test --namespace=default \
--token=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token) \
--server=https://kubernetes.default.svc \
--certificate-authority=/var/run/secrets/kubernetes.io/serviceaccount/ca.crtОжидаемый вывод:
Error from server (Forbidden): pods "nginx-test" is forbidden:
User "system:serviceaccount:mcp-system:mcp-server-sa" cannot delete
resource "pods" in API group "" in the namespace "default"Этот ответ 403 Forbidden от сервера API является прямым доказательством того, что область действия RBAC работает — ServiceAccount может читать, но не может изменять ни один ресурс.
Дизайн минимальных привилегий RBAC
Философия
Предоставляйте только то, что необходимо, явно отказывайте во всем остальном.
Сервер MCP — это инструмент наблюдения — он читает состояние кластера, чтобы помочь операторам и AI-системам понять, что происходит. У него нет законных оснований создавать, изменять или удалять какие-либо ресурсы.
Что предоставлено
Ресурс | Глаголы | Причина |
|
|
|
|
|
|
|
|
|
|
|
|
Что явно НЕ предоставлено
Глагол | Причина исключения |
| Ни один инструмент не создает никаких ресурсов |
| Ни один инструмент не изменяет никаких ресурсов |
| Катастрофично при неправильном использовании; ни одному инструменту чтения это не нужно |
| Предотвращает повышение привилегий |
Это означает, что скомпрометированный сервер MCP не может удалять поды, масштабировать развертывания до нуля, изменять секреты или влиять на любую выполняемую рабочую нагрузку. Радиус поражения скомпрометированного сервера MCP ограничен чтением информации, а не ее нарушением.
Слой аналитики
analyze_pod_health
Выводит список всех подов в пространстве имен.
Извлекает до 500 строк логов на под.
Сопоставляет с шаблонами по каталогу известных индикаторов сбоев:
OOMKilled,CrashLoopBackOffИсключения Python/Java (Traceback, RuntimeError и т.д.)
Panic, SIGSEGV/SIGKILL, Ошибки соединения, Отказано в доступе
Сбои проверок Liveness/Readiness
Вычисляет оценку здоровья для каждого пода (ниже = хуже).
Возвращает поды, отсортированные от худших к лучшим, с подсчетом частоты ошибок.
Сохраняет результаты в SQLite для исторического анализа.
get_resource_trends
Разрешает селектор подов из спецификации развертывания.
Считывает лимиты ресурсов из спецификаций подов.
Запрашивает Kubernetes Metrics API (
metrics.k8s.io/v1beta1) для получения текущих данных CPU/памяти.Вычисляет: среднее, пиковое значение и процент от лимита как для CPU, так и для памяти.
Сохраняет каждый снимок в
mcp_analytics.db, чтобы тренды накапливались между вызовами.
Требуется аддон
metrics-server:minikube addons enable metrics-server
CI / Непрерывная интеграция
Рабочий процесс GitHub Actions (.github/workflows/ci.yml) запускается при каждом пуше и PR:
Docker Build — собирает образ без отправки (проверяет Dockerfile + зависимости).
kubeconform — проверяет все манифесты
k8s/*.yamlна соответствие схеме Kubernetes 1.29 в строгом режиме.ruff — проверяет
k8s_mcp_server.pyна ошибки Python и стиль.
Переменные окружения
Переменная | По умолчанию | Описание |
|
| Путь к базе данных SQLite аналитики |
Лицензия
MIT
This server cannot be deployed
Maintenance
Related MCP Connectors
Provides read access to your GKE and Kubernetes resources.
Fail-closed policy guardrails for AI agents running kubectl, terraform, helm, and argocd.
The Google GKE MCP server is a managed Model Context Protocol server that provides AI applications with tools to manage Google Kubernetes Engine (GKE) clusters and Kubernetes resources. It exposes a structured, discoverable interface that allows AI agents to interact with GKE and Kubernetes APIs, enabling them to inspect cluster configurations, retrieve Kubernetes resource YAMLs, monitor operations like cluster upgrades, diagnose issues, and optimize costs—all without needing to parse text output or use complex kubectl commands.
Read and write KukGit repositories, files, issues and pull requests from an AI assistant.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides read-only access to Kubernetes clusters for AI assistants.24MIT
- AlicenseAqualityCmaintenanceEnables safe, read-only interaction with Kubernetes clusters, allowing users to list resources and fetch logs without any create/update/delete operations.116Apache 2.0
- FlicenseNot gradedqualityBmaintenanceProvides read-only Kubernetes cluster operations via MCP, enabling LLMs to query nodes, pods, logs, events, and watch real-time status for troubleshooting.2-
- AlicenseNot gradedqualityCmaintenanceLets AI agents inspect Kubernetes clusters in plain English, exposing read-only tools for pods, deployments, services, events, and logs, with mock and real backend support.MIT