MCP-сервер Kubernetes
✨ Функции | 🚀 Начало работы | 🎥 Демонстрации | ⚙️ Конфигурация | 🛠️ Инструменты | 🧑💻 Разработка
https://github.com/user-attachments/assets/be2b67b3-fc1c-4d11-ae46-93deba8ed98e
✨ Особенности
Мощная и гибкая реализация сервера Kubernetes Model Context Protocol (MCP) с поддержкой Kubernetes и OpenShift .
- ✅ Конфигурация :
- Автоматически обнаруживайте изменения в конфигурации Kubernetes и обновляйте сервер MCP.
- Просмотр и управление текущей конфигурацией Kubernetes
.kube/config
или внутрикластерной конфигурацией.
- ✅ Универсальные ресурсы Kubernetes : выполнение операций на любом ресурсе Kubernetes или OpenShift.
- Любая CRUD-операция (создание или обновление, получение, вывод списка, удаление).
- ✅ Поды : выполнение операций, специфичных для подов.
- Вывести список модулей во всех пространствах имен или в определенном пространстве имен.
- Получить модуль по имени из указанного пространства имен.
- Удалить модуль по имени из указанного пространства имен.
- Показать журналы для модуля по имени из указанного пространства имен.
- Войдите в модуль и выполните команду.
- Запустите образ контейнера в модуле и при необходимости опубликуйте его.
- ✅ Пространства имен : список пространств имен Kubernetes.
- ✅ События : просмотр событий Kubernetes во всех пространствах имен или в определенном пространстве имен.
- ✅ Проекты : список проектов OpenShift.
- ☸️ Шлем :
- Установите диаграмму Helm в текущем или предоставленном пространстве имен.
- Вывод списка релизов Helm во всех пространствах имен или в определенном пространстве имен.
- Удалить выпуск Helm в текущем или предоставленном пространстве имен.
В отличие от других реализаций сервера Kubernetes MCP, это НЕ просто оболочка вокруг инструментов командной строки kubectl
или helm
. Это собственная реализация на основе Go, которая напрямую взаимодействует с сервером API Kubernetes.
НЕТ НЕОБХОДИМОСТИ устанавливать внешние зависимости или инструменты в системе. Если вы используете собственные двоичные файлы, вам не нужно устанавливать Node или Python в вашей системе.
- ✅ Легковесность : сервер распространяется как единый двоичный файл для Linux, macOS и Windows.
- ✅ Высокая производительность/низкая задержка : напрямую взаимодействует с сервером API Kubernetes без накладных расходов на вызов и ожидание внешних команд.
- ✅ Кроссплатформенность : доступен в виде собственного двоичного файла для Linux, macOS и Windows, а также в виде пакета npm, пакета Python и образа контейнера/Docker.
- ✅ Настраиваемость : поддерживает аргументы командной строки для настройки поведения сервера.
- ✅ Тщательно протестировано : сервер имеет обширный набор тестов, гарантирующий его надежность и корректность в различных средах Kubernetes.
🚀 Начало работы
Требования
- Доступ к кластеру Kubernetes.
Клод Десктоп
Использование npx
Если у вас установлен npm, это самый быстрый способ начать работу с kubernetes-mcp-server
на Claude Desktop.
Откройте claude_desktop_config.json
и добавьте сервер mcp в список mcpServers
:
VS Code / Инсайдеры VS Code
Установите расширение сервера Kubernetes MCP в VS Code Insiders, нажав на следующую ссылку:
Кроме того, вы можете установить расширение вручную, выполнив следующую команду:
Гусь CLI
Goose CLI — самый простой (и дешевый) способ начать работу с агентами искусственного интеллекта (ИИ).
Использование npm
Если у вас установлен npm, это самый быстрый способ начать работу с kubernetes-mcp-server
.
Откройте файл goose config.yaml
и добавьте сервер mcp в список mcpServers
:
🎥 Демоверсии
Диагностика и автоматическое исправление развертывания OpenShift
Демонстрация того, как сервер Kubernetes MCP используется Claude Desktop для автоматической диагностики и исправления развертывания в OpenShift без какой-либо помощи пользователя.
https://github.com/user-attachments/assets/a576176d-a142-4c19-b9aa-a83dc4b8d941
Vibe Кодирование простой игры и ее развертывание в OpenShift
В этой демонстрации я покажу вам процесс Vibe-кодирования простой игры с использованием VS Code и то, как использовать сервер Podman MCP и сервер Kubernetes MCP для ее развертывания в OpenShift.
Ускорьте работу GitHub Copilot с сервером Kubernetes MCP в VS Code — настройка в один клик!
В этой демонстрации я покажу вам, как настроить сервер Kubernetes MCP в VS Code, просто нажав на ссылку.
⚙️ Конфигурация
Сервер Kubernetes MCP можно настроить с помощью аргументов командной строки (CLI).
Вы можете запустить исполняемый файл CLI, используя npx
, uvx
или загрузив последнюю версию двоичного файла .
Параметры конфигурации
Вариант | Описание |
---|---|
--sse-port | Запускает сервер MCP в режиме Server-Sent Event (SSE) и прослушивает указанный порт. |
--log-level | Устанавливает уровень ведения журнала (значения от 0 до 9 ). Аналогично уровням ведения журнала kubectl . |
--kubeconfig | Путь к файлу конфигурации Kubernetes. Если не указан, будет предпринята попытка разрешить конфигурацию (в кластере, расположение по умолчанию и т. д.). |
--read-only | Если установлено, сервер MCP будет работать в режиме только для чтения, то есть он не будет разрешать никаких операций записи (создание, обновление, удаление) в кластере Kubernetes. Это полезно для отладки или проверки кластера без внесения изменений. |
--disable-destructive | Если установлено, сервер MCP отключит все деструктивные операции (удаление, обновление и т. д.) в кластере Kubernetes. Это полезно для отладки или проверки кластера без случайного внесения изменений. Эта опция не действует, если используется --read-only . |
🛠️ Инструменты
configuration_view
Получите текущее содержимое конфигурации Kubernetes в виде YAML-файла kubeconfig
Параметры:
minified
(boolean
, необязательный, по умолчанию:true
)- Верните уменьшенную версию конфигурации.
- Если
true
, сохраняет только текущий контекст и соответствующие части конфигурации. - Если
false
, возвращает все контексты, кластеры, информацию об аутентификации и пользователей.
events_list
Перечислите все события Kubernetes в текущем кластере из всех пространств имен.
Параметры:
namespace
(string
, необязательно)- Пространство имен для извлечения событий. Если не указано, будут выведены события из всех пространств имен
helm_install
Установить Helm-чарт в текущем или указанном пространстве имен с указанным именем и чартом.
Параметры:
chart
(string
, обязательно)- Название устанавливаемой диаграммы Helm
- Может быть локальным путем или удаленным URL-адресом.
- Пример:
./my-chart.tgz
илиhttps://example.com/my-chart.tgz
values
(object
, необязательно)- Значения для передачи в диаграмму Helm
- Пример:
{"key": "value"}
name
(string
, необязательно)- Название релиза Helm
- Случайное имя, если не указано
namespace
(string
, необязательно)- Пространство имен для установки чарта Helm
- Если не указано, будет использоваться настроенное пространство имен.
helm_list
Перечислите все выпуски Helm в текущем или указанном пространстве имен (или во всех пространствах имен, если указано)
Параметры:
namespace
(string
, необязательно)- Пространство имен для списка релизов Helm
- Если не указано, будет использоваться настроенное пространство имен.
all_namespaces
(boolean
, необязательно)- Если
true
, выведет список релизов Helm из всех пространств имен - Если
false
, выведет список релизов Helm из указанного пространства имен.
- Если
helm_uninstall
Удалить выпуск Helm в текущем или предоставленном пространстве имен с предоставленным именем
Параметры:
name
(string
, обязательно)- Название версии Helm для удаления
namespace
(string
, необязательно)- Пространство имен для удаления релиза Helm
- Если не указано, будет использоваться настроенное пространство имен.
namespaces_list
Перечислите все пространства имен Kubernetes в текущем кластере
Параметры: Нет
pods_delete
Удалить модуль Kubernetes в текущем или предоставленном пространстве имен с предоставленным именем
Параметры:
name
(string
, обязательно)- Имя удаляемого модуля
namespace
(string
, обязательно)- Пространство имен, из которого нужно удалить Pod
pods_exec
Выполнить команду в модуле Kubernetes в текущем или указанном пространстве имен с указанным именем и командой
Параметры:
command
(string[]
, обязательно)- Команда для выполнения в контейнере Pod
- Первый элемент — команда, остальные — аргументы.
- Пример:
["ls", "-l", "/tmp"]
name
(строка, обязательно)- Название стручка
namespace
(строка, обязательно)- Пространство имен Pod
container
(string
, необязательно)- Имя контейнера Pod, из которого нужно получить журналы
pods_get
Получить Kubernetes Pod в текущем или предоставленном пространстве имен с предоставленным именем
Параметры:
name
(string
, обязательно)- Название стручка
namespace
(string
, обязательно)- Пространство имен, из которого нужно получить Pod
pods_list
Перечислите все модули Kubernetes в текущем кластере из всех пространств имен.
Параметры:
labelSelector
(string
, необязательно)- Селектор меток Kubernetes (например, 'app=myapp,env=prod' или 'app in (myapp,yourapp)'). Используйте эту опцию для фильтрации модулей по метке
pods_list_in_namespace
Перечислить все модули Kubernetes в указанном пространстве имен в текущем кластере.
Параметры:
namespace
(string
, обязательно)- Пространство имен для перечисления модулей
labelSelector
(string
, необязательно)- Селектор меток Kubernetes (например, 'app=myapp,env=prod' или 'app in (myapp,yourapp)'). Используйте эту опцию для фильтрации модулей по метке
pods_log
Получить журналы Kubernetes Pod в текущем или указанном пространстве имен с указанным именем
Параметры:
name
(string
, обязательно)- Имя Pod, из которого нужно получить логи
namespace
(string
, обязательно)- Пространство имен, из которого нужно получить журналы Pod
container
(string
, необязательно)- Имя контейнера Pod, из которого нужно получить журналы
pods_run
Запустите Kubernetes Pod в текущем или предоставленном пространстве имен с предоставленным образом контейнера и необязательным именем.
Параметры:
image
(string
, обязательно)- Образ контейнера для запуска в Pod
namespace
(string
, обязательно)- Пространство имен для запуска Pod
name
(string
, необязательно)- Название Pod (произвольное название, если не указано)
port
(number
, необязательно)- Порт TCP/IP для предоставления из контейнера Pod
- Если порт не предусмотрен, он не отображается
projects_list
Список всех проектов OpenShift в текущем кластере
resources_create_or_update
Создайте или обновите ресурс Kubernetes в текущем кластере, предоставив YAML- или JSON-представление ресурса.
Параметры:
resource
(string
, обязательно)- JSON или YAML, содержащий представление ресурса Kubernetes.
- Должны включать поля верхнего уровня, такие как apiVersion, kind, metadata и spec
Распространенные apiVersion и kind включают в себя:
- Модуль v1
- v1 Сервис
- Узел v1
- Развертывание apps/v1
- networking.k8s.io/v1 Вход
resources_delete
Удалить ресурс Kubernetes в текущем кластере
Параметры:
apiVersion
(string
, обязательно)- apiVersion ресурса (например,
v1
,apps/v1
,networking.k8s.io/v1
)
- apiVersion ресурса (например,
kind
(string
, обязательно)- тип ресурса (например,
Pod
,Service
,Deployment
,Ingress
)
- тип ресурса (например,
name
(string
, обязательно)- Название ресурса
namespace
(string
, необязательно)- Пространство имен, из которого необходимо удалить ресурс пространства имен
- Игнорируется для ресурсов кластера
- Использует настроенное пространство имен, если не указано иное
resources_get
Получить ресурс Kubernetes в текущем кластере
Параметры:
apiVersion
(string
, обязательно)- apiVersion ресурса (например,
v1
,apps/v1
,networking.k8s.io/v1
)
- apiVersion ресурса (например,
kind
(string
, обязательно)- тип ресурса (например,
Pod
,Service
,Deployment
,Ingress
)
- тип ресурса (например,
name
(string
, обязательно)- Название ресурса
namespace
(string
, необязательно)- Пространство имен для извлечения ресурса пространства имен
- Игнорируется для ресурсов кластера
- Использует настроенное пространство имен, если не указано иное
resources_list
Список ресурсов и объектов Kubernetes в текущем кластере
Параметры:
apiVersion
(string
, обязательно)- apiVersion ресурсов (например,
v1
,apps/v1
,networking.k8s.io/v1
)
- apiVersion ресурсов (например,
kind
(string
, обязательно)- тип ресурсов (например,
Pod
,Service
,Deployment
,Ingress
)
- тип ресурсов (например,
namespace
(string
, необязательно)- Пространство имен для извлечения ресурсов пространства имен
- Игнорируется для ресурсов кластера
- Перечисляет ресурсы из всех пространств имен, если они не указаны
labelSelector
(string
, необязательно)- Селектор меток Kubernetes (например, 'app=myapp,env=prod' или 'app in (myapp,yourapp)'). Используйте эту опцию для фильтрации модулей по метке.
🧑💻 Разработка
Работает с mcp-inspector
Скомпилируйте проект и запустите сервер Kubernetes MCP с помощью mcp-inspector для проверки сервера MCP.
This server cannot be installed
hybrid server
The server is able to function both locally and remotely, depending on the configuration or use case.
Мощная и гибкая реализация сервера Kubernetes MCP с поддержкой OpenShift. Не требует дополнительных инструментов CLI, таких как kubectl или helm.
Related Resources
Related MCP Servers
- -securityAlicense-qualityThis project is intended as a both MCP server connecting to Kubernetes and a library to build more servers for any custom resources in Kubernetes.Last updated -279GoMIT License
- -securityAlicense-qualityProvides MCP multi-cluster Kubernetes management and operations, featuring a management interface, logging, and nearly 50 built-in tools covering common DevOps and development scenarios. Supports both standard and CRD resources.Last updated -494GoMIT License
- -securityAlicense-qualityProvides MCP multi-cluster Kubernetes management and operations. It can be integrated as an SDK into your own project and includes nearly 50 built-in tools covering common DevOps and development scenarios. Supports both standard and CRD resources.Last updated -116GoMIT License
- -securityAlicense-qualityOpen source MCP server specializing in easy, fast, and secure tools for Databases.Last updated -1,462GoApache 2.0