Model Context Protocol (MCP) server for Kubernetes and OpenShift. Native Go implementation that interacts directly with the Kubernetes API server without external dependencies like kubectl or helm. - Added package.nix using buildGoModule (CGO_ENABLED=0, static build) - Added default.nix wrapper for blueprint auto-discovery - Updated README.md with the new package entry - Added task requirements document in tasks/kubernetes-mcp-server.md
6.7 KiB
Требования для добавления пакета kubernetes-mcp-server
Общая информация
| Параметр | Значение |
|---|---|
| Название пакета | kubernetes-mcp-server |
| Репозиторий | https://github.com/containers/kubernetes-mcp-server |
| Язык | Go (91.6%) |
| Модуль | github.com/containers/kubernetes-mcp-server |
| Бинарный файл | kubernetes-mcp-server |
| Точка входа | ./cmd/kubernetes-mcp-server |
| Версия | v0.0.62 (latest) |
| Лицензия | Apache-2.0 |
| Категория | MCP Servers |
Описание
Model Context Protocol (MCP) сервер для Kubernetes и OpenShift. Это нативная Go-реализация, которая напрямую взаимодействует с Kubernetes API без необходимости в kubectl или helm. Позволяет AI-агентам управлять ресурсами Kubernetes (поды, деплойменты, неймспейсы, события, Helm-чарты, Tekton-пайплайны и др.) через стандартизированный протокол MCP.
Шаги по добавлению
1. Создать структуру директорий
mkdir -p packages/kubernetes-mcp-server
2. Создать packages/kubernetes-mcp-server/package.nix
Шаблон основан на buildGoModule (аналогично пакету container-use):
buildGoModule— стандартный билдер для Go-пакетов в nixpkgsvendorHash— хеш зависимостей Go (будет уточнён при первой сборке)CGO_ENABLED = 0— проект собирается без CGo (статическая линковка, кроссплатформенность)subPackages = [ "cmd/kubernetes-mcp-server" ]— указывает точку входаdoCheck = false— тесты требуют доступ к реальному Kubernetes-кластеру, что невозможно в sandbox Nixldflags— передача версии в бинарник (-s -wдля уменьшения размера)passthru.updateScript— поддержкаnix-updateдля автоматического обновления версииmeta.mainProgram—kubernetes-mcp-server
Примерный код package.nix:
{
lib,
buildGoModule,
fetchFromGitHub,
}:
buildGoModule rec {
pname = "kubernetes-mcp-server";
version = "0.0.62";
src = fetchFromGitHub {
owner = "containers";
repo = "kubernetes-mcp-server";
rev = "v${version}";
hash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; # Будет уточнён при сборке
};
vendorHash = "sha256-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA="; # Будет уточнён при сборке
env.CGO_ENABLED = 0;
subPackages = [ "cmd/kubernetes-mcp-server" ];
# Тесты требуют доступ к Kubernetes-кластеру
doCheck = false;
ldflags = [
"-s"
"-w"
];
passthru = {
category = "MCP Servers";
updateScript = [
"nix-update"
"--flake"
".#kubernetes-mcp-server"
];
};
meta = with lib; {
description = "Model Context Protocol (MCP) server for Kubernetes and OpenShift";
homepage = "https://github.com/containers/kubernetes-mcp-server";
changelog = "https://github.com/containers/kubernetes-mcp-server/releases/tag/v${version}";
license = licenses.asl20;
sourceProvenance = with sourceTypes; [ fromSource ];
mainProgram = "kubernetes-mcp-server";
platforms = platforms.all;
};
}
3. Создать packages/kubernetes-mcp-server/default.nix
Стандартная обёртка для blueprint:
{ pkgs, ... }:
pkgs.callPackage ./package.nix { }
4. Первая сборка и получение хешей
# Первая попытка сборки (ожидаемо упадёт с неверным хешем)
nix build .#kubernetes-mcp-server 2>&1 | grep -E "(hash|Hash)"
# Подставить правильные значения hash и vendorHash в package.nix
Альтернативно, использовать nix-update:
nix-update kubernetes-mcp-server --version=0.0.62
5. Проверка
# Сборка
nix build .#kubernetes-mcp-server
# Запуск (проверка справки)
nix run .#kubernetes-mcp-server -- --help
# Проверка всех пакетов
nix flake check
6. Обновить README.md
Добавить строку в таблицу «Available Packages»:
| `kubernetes-mcp-server` | Model Context Protocol (MCP) server for Kubernetes and OpenShift | MCP Servers |
7. Коммит
Использовать conventional-commit skill для создания коммита с сообщением типа:
feat: add kubernetes-mcp-server package
Или более детально:
feat(packages): add kubernetes-mcp-server v0.0.62
Model Context Protocol (MCP) server for Kubernetes and OpenShift.
Native Go implementation that interacts directly with the Kubernetes
API server without external dependencies like kubectl or helm.
Особенности пакета
| Особенность | Детали |
|---|---|
| Тип сборки | Go module (buildGoModule) |
| CGo | Отключено (CGO_ENABLED = 0) |
| Тесты | Отключены (нужен Kubernetes-кластер) |
| Платформы | Все (platforms.all) |
| Версионирование | Стандартные теги v0.0.X |
| Обновление | nix-update kubernetes-mcp-server |
Зависимости (уже в nixpkgs)
Пакет использует только стандартные Go-зависимости, указанные в go.mod и go.sum. Никаких дополнительных системных зависимостей не требуется благодаря CGO_ENABLED = 0.
Критерии приёмки
- Пакет собирается:
nix build .#kubernetes-mcp-server - Бинарник запускается и выводит справку:
nix run .#kubernetes-mcp-server -- --help nix flake checkпроходит без ошибок- Пакет виден в списке: пакет появляется в выводе
nix flake show - README.md обновлён
- Коммит создан с использованием conventional commits