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
183 lines
6.7 KiB
Markdown
183 lines
6.7 KiB
Markdown
# Требования для добавления пакета `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. Создать структуру директорий
|
||
|
||
```bash
|
||
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.mainProgram`** — `kubernetes-mcp-server`
|
||
|
||
Примерный код `package.nix`:
|
||
|
||
```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:
|
||
|
||
```nix
|
||
{ pkgs, ... }:
|
||
pkgs.callPackage ./package.nix { }
|
||
```
|
||
|
||
### 4. Первая сборка и получение хешей
|
||
|
||
```bash
|
||
# Первая попытка сборки (ожидаемо упадёт с неверным хешем)
|
||
nix build .#kubernetes-mcp-server 2>&1 | grep -E "(hash|Hash)"
|
||
|
||
# Подставить правильные значения hash и vendorHash в package.nix
|
||
```
|
||
|
||
Альтернативно, использовать `nix-update`:
|
||
|
||
```bash
|
||
nix-update kubernetes-mcp-server --version=0.0.62
|
||
```
|
||
|
||
### 5. Проверка
|
||
|
||
```bash
|
||
# Сборка
|
||
nix build .#kubernetes-mcp-server
|
||
|
||
# Запуск (проверка справки)
|
||
nix run .#kubernetes-mcp-server -- --help
|
||
|
||
# Проверка всех пакетов
|
||
nix flake check
|
||
```
|
||
|
||
### 6. Обновить README.md
|
||
|
||
Добавить строку в таблицу «Available Packages»:
|
||
|
||
```markdown
|
||
| `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
|