Files
millerson-overlay.nix/tasks/kubernetes-mcp-server.md
Alexander Miroshnichenko 67b8add3d1 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.

- 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
2026-05-08 19:43:55 +03:00

6.7 KiB
Raw Blame History

Требования для добавления пакета 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-пакетов в nixpkgs
  • vendorHash — хеш зависимостей Go (будет уточнён при первой сборке)
  • CGO_ENABLED = 0 — проект собирается без CGo (статическая линковка, кроссплатформенность)
  • subPackages = [ "cmd/kubernetes-mcp-server" ] — указывает точку входа
  • doCheck = false — тесты требуют доступ к реальному Kubernetes-кластеру, что невозможно в sandbox Nix
  • ldflags — передача версии в бинарник (-s -w для уменьшения размера)
  • passthru.updateScript — поддержка nix-update для автоматического обновления версии
  • meta.mainProgramkubernetes-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