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
This commit is contained in:
@@ -16,6 +16,7 @@ A custom Nix overlay and flake providing additional packages not found in upstre
|
|||||||
| `goose-cli` | CLI for Goose - a local, extensible, open source AI agent that automates engineering tasks | AI Coding Agents |
|
| `goose-cli` | CLI for Goose - a local, extensible, open source AI agent that automates engineering tasks | AI Coding Agents |
|
||||||
| `mcp-gateway` | Universal Model Context Protocol gateway that sits between AI client and MCP tools/servers | MCP Servers |
|
| `mcp-gateway` | Universal Model Context Protocol gateway that sits between AI client and MCP tools/servers | MCP Servers |
|
||||||
| `skillsmcp` | MCP server that exposes Agent Skills to AI agents via the Model Context Protocol | MCP Servers |
|
| `skillsmcp` | MCP server that exposes Agent Skills to AI agents via the Model Context Protocol | MCP Servers |
|
||||||
|
| `kubernetes-mcp-server` | Model Context Protocol (MCP) server for Kubernetes and OpenShift | MCP Servers |
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
|
|||||||
1
packages/kubernetes-mcp-server/default.nix
Normal file
1
packages/kubernetes-mcp-server/default.nix
Normal file
@@ -0,0 +1 @@
|
|||||||
|
{ pkgs, ... }: pkgs.callPackage ./package.nix { }
|
||||||
50
packages/kubernetes-mcp-server/package.nix
Normal file
50
packages/kubernetes-mcp-server/package.nix
Normal file
@@ -0,0 +1,50 @@
|
|||||||
|
{
|
||||||
|
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-m4oM8KMcDmXwIGaFw+VdnW22kLjt2SaD7qZV4kgTiu8=";
|
||||||
|
};
|
||||||
|
|
||||||
|
vendorHash = "sha256-JNeYn/IfzQ2VLDbHgrkserh3wrXYOWXBczBn2DUO6NM=";
|
||||||
|
|
||||||
|
env.CGO_ENABLED = 0;
|
||||||
|
|
||||||
|
subPackages = [ "cmd/kubernetes-mcp-server" ];
|
||||||
|
|
||||||
|
# Tests require access to a live Kubernetes cluster
|
||||||
|
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;
|
||||||
|
};
|
||||||
|
}
|
||||||
182
tasks/kubernetes-mcp-server.md
Normal file
182
tasks/kubernetes-mcp-server.md
Normal file
@@ -0,0 +1,182 @@
|
|||||||
|
# Требования для добавления пакета `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
|
||||||
Reference in New Issue
Block a user