mcp-k8s-context-server
MCP K8s Context Server
FastMCP-сервер, который предоставляет Kubernetes в виде набора инструментов только для чтения, доступных для LLM, а также слой аналитики для анализа состояния подов и отслеживания трендов ресурсов.
Возможности
Инструмент | Описание |
| Список подов в пространстве имен с информацией о фазе и перезапусках |
| Детальный статус пода, условия и состояния контейнеров |
| Хвост последних логов пода |
| Полная спецификация развертывания в формате JSON |
| Аналитика: сканирование логов, обнаружение шаблонов ошибок, ранжирование нездоровых подов |
| Аналитика: CPU/память из Metrics API с постоянным хранением исторических данных в SQLite |
Related MCP server: Kube MCP
Структура проекта
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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityBmaintenanceProvides read-only access to Kubernetes clusters for AI assistants.23MIT
- AlicenseAqualityCmaintenanceEnables AI assistants to interact with and manage Kubernetes clusters, supporting operations on pods, deployments, services, configmaps, secrets, namespaces, metrics, and events with built-in safety features for destructive actions.9141MIT
- AlicenseAqualityAmaintenanceEnables safe, read-only interaction with Kubernetes clusters, allowing users to list resources and fetch logs without any create/update/delete operations.116Apache 2.0
- Flicense-qualityCmaintenanceExposes Kubernetes cluster management tools to LLMs, enabling querying pods, deployments, logs, metrics, and managing port forwards via natural language.1
Related MCP Connectors
Read-only bank access for your AI agent. Connects Claude, ChatGPT, Cursor, Gemini, Codex.
Read-only access to Auralogs production logs: search logs, inspect errors, review AI analyses.
Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Krishna1704M/mcp-k8s-context-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server