// desktop only

Презентации лучше смотреть с десктопа

Слайды рассчитаны на широкий экран, клавиатуру и формат 16:9. Откройте эту страницу на ноутбуке или компьютере.

Вернуться на сайт
// proto · mcp · kubernetes · deckhouse

Как дать агенту управлять
кластером вашей инфры?

Эдгар Сипки//Founder EasyP && SIPKI Tech

// speaker.bio

Кто я и где мы

01

Эдгар Сипки

Senior golang developer, open-source. Founder EasyP.

02

Наш контекст

Маленький стартап. Мало денег, нет инфраструктурной команды.

// agenda

О чём поговорим?

  1. 01Агент и MCP за пять минут
  2. 02Стартап против инфраструктуры
  3. 03Deckhouse и первый MCP-сервер
  4. 04spec-first и protoc-gen-mcp
  5. 05Сценарии и живое демо
// chapter 01 / starting

О чём поговорим?

  • 01Агент и MCP за пять минут
  • 02Стартап против инфраструктуры
  • 03Deckhouse и первый MCP-сервер
  • 04spec-first и protoc-gen-mcp
  • 05Сценарии и живое демо
// chapter 01

АГЕНТ
И MCP

// agent.intro

LLM умна, но безрука

  • Модель отлично рассуждает
  • Но сама по себе ничего не делает в реальном мире
  • → чтобы действовать, ей нужны руки
// agent.anatomy

Анатомия агента

LLM

рассуждает и принимает решения

Цикл

план → действие → наблюдение

Инструменты

руки во внешний мир

Контекст

что модель видит сейчас

// mcp.what

MCP = USB-C для интеграций

  • Один протокол вместо зоопарка кастомных коннекторов
  • Агент видит и вызывает внешние действия через один стандарт
  • MCP-сервер = руки агента
// mcp.primitives

Три примитива

Tools 🔧

действия

Resources 📄

чтение

Prompts 💬

шаблоны

// mcp.flow

Как агент вызывает tool

Agent (LLM)MCP Servertools/list// какие есть инструменты?[ { name, description, inputSchema }, ... ]Выбор tool по descriptionи JSON Schematools/call { name, arguments }result / isError

→ description и JSON Schema решают, сможет ли агент вообще вызвать tool

// chapter 02 / starting

О чём поговорим?

  • 01Агент и MCP за пять минут
  • 02Стартап против инфраструктуры
  • 03Deckhouse и первый MCP-сервер
  • 04spec-first и protoc-gen-mcp
  • 05Сценарии и живое демо
// chapter 02

СТАРТАП ПРОТИВ
ИНФРАСТРУКТУРЫ

// task

Наша задача

  • Нужно управлять Kubernetes-кластером
  • Инфраструктурной экспертизы нет
  • Денег на DevOps-команду — тоже нет
// economics

Вилка ресурсов

// конкурент
$93M

инвестиций

// мы
500к ₽

и то мои личные

// the.bet

Единственная разумная ставка

Не нанимать DevOps, а переложить управление кластером на агента.

// attempt.01

Попытка №1: голый k8s-MCP

Agent (LLM)

MCP Server

k8s-mcp

kube-apiserver

Кластер

// тулы:
kubectl_applyget_podscreate_namespace...

→ выглядит просто... но только на первый взгляд

// why.fail

Почему не взлетело

  • Чтобы управлять k8s-MCP, надо самому знать k8s
  • CRD, RBAC, манифесты, неймспейсы
  • → инструмент переложил сложность на нас, а не убрал её ❌
// chapter 03 / starting

О чём поговорим?

  • 01Агент и MCP за пять минут
  • 02Стартап против инфраструктуры
  • 03Deckhouse и первый MCP-сервер
  • 04spec-first и protoc-gen-mcp
  • 05Сценарии и живое демо
// chapter 03

DECKHOUSE И
ПЕРВЫЙ MCP-СЕРВЕР

// deckhouse.what

Услышали про Deckhouse

  • Готовая Kubernetes-платформа
  • Берёт много инфраструктурной рутины на себя
  • «А почему бы и нет?» — взяли, потестили
// deckhouse.verdict

Вердикт

🙂

Мы

инструмент хороший, но мы для него ещё слишком глупы

🤖

Агент

а агент — умный

// deckhouse.idea

Новая идея

Deckhouse держит платформу, агент разговаривает с ней за нас.

→ нужен мост: MCP-сервер для Deckhouse

// build.start

Пишем MCP-сервер с агентом

  • Сели писать MCP-сервер для Deckhouse
  • Агент помогает кодить
  • Иии?
// build.problem

Барьер не там, где ждали

Не инфраструктура, а инженерия: агенту не хватало структуры.

// build.symptom

Симптом

// без жёсткого контракта
агент лезет переписывать уже готовые куски

регрессии · дрейф · «я тут немного поправил»

// build.diagnosis

Диагноз

  • Нужен источник истины, который агент не имеет права трогать
  • Код для этого — плохое место
// chapter 04 / starting

О чём поговорим?

  • 01Агент и MCP за пять минут
  • 02Стартап против инфраструктуры
  • 03Deckhouse и первый MCP-сервер
  • 04spec-first и protoc-gen-mcp
  • 05Сценарии и живое демо
// chapter 04

SPEC-FIRST И
PROTOC-GEN-MCP

// spec.search

Идём за spec-first

Хотим: спека как контракт, который агент не может сломать.

// spec.candidates

Нашли два варианта

// что хотели
  • Полная поддержка примитивов MCP
  • Аннотации и валидация
  • Типизация
// что получили
  • Сильно ограничены в поддержке спецификации
  • Нет части примитивов
  • Не покрывают наш кейс
// spec.solution

Делаем свой

  • Мы проектируем спецификацию (proto-контракт аннотаций)
  • Генератор пишет агент
// the.meta-thesis

Агент ужасно проектирует,
но неплохо кодит

человек держит спеку и архитектуру · агент пишет реализацию

// protoc-gen-mcp.idea

protoc-gen-mcp

  • protobuf — единственный источник истины
  • Аннотации в .proto описывают tools / prompts / resources
  • Генератор → типизированные MCP-биндинги + JSON Schema
// options.proto

Аннотации в .proto

service DiagnosticsAPI {
  option (mcp.options.v1.service) = { namespace: "deckhouse" };

  // Агрегированный статус кластера: ноды, модули, релизы.
  rpc GetClusterStatus(google.protobuf.Empty)
      returns (GetClusterStatusResponse) {
    option (mcp.options.v1.method) = {
      annotations: { read_only_hint: true }
    };
  }
}

→ read_only_hint, валидация и description — всё в контракте

// why.it.works

Почему это лечит «структуру»

  • Контракт живёт в .proto, а не в редактируемом коде
  • случайной правкой структуру не разнести
// deckhose-mcp / handler

Сгенерированный интерфейс

// Сгенерированный интерфейс — агент его не трогает.
type DiagnosticsAPIToolHandler interface {
    GetClusterStatus(ctx context.Context,
        req *emptypb.Empty) (*GetClusterStatusResponse, error)
    ListNodes(ctx context.Context,
        req *ListNodesRequest) (*ListNodesResponse, error)
    // ...
}
// easyp.yaml

Генерация через easyp

generate:
  inputs:
    - directory: { path: proto, root: "." }
  plugins:
    - name: go
      out: .
      opts: { paths: source_relative }
    - command: ["go", "run",
        "github.com/easyp-tech/protoc-gen-mcp/cmd/protoc-gen-mcp@latest"]
      out: .
      opts: { paths: source_relative }

task generate = easyp mod download + easyp generate

// main.go

Бизнес-логика — в хендлере

server := mcp.NewServer("deckhouse-mcp", "v1")
deckhousev1.RegisterDiagnosticsAPITools(server, handler)
server.ServeSSE(":8080")
// chapter 05 / starting

О чём поговорим?

  • 01Агент и MCP за пять минут
  • 02Стартап против инфраструктуры
  • 03Deckhouse и первый MCP-сервер
  • 04spec-first и protoc-gen-mcp
  • 05Сценарии и живое демо
// chapter 05

СЦЕНАРИИ
И ДЕМО

// scenario.a / diagnostics

Сценарий A — диагностика

Разработчик 🧑Агент (LLM) 🤖Deckhouse API ☸️🧑 "Покажи статус кластера"GetClusterStatus()Status: Ready, but Unhealthy Pods exist?ListUnhealthyPods()0 Unhealthy Pods🤖 "Всё ок! 3 ноды Ready, 0 нездоровых подов"
// scenario.c / ingress-tls

Сценарий C — HTTPS Ingress + TLS

Разработчик 🧑Агент (LLM) 🤖CertManager 🔒Let's Encrypt ✍️🧑 "Опубликуй app.domain.ru по HTTPS"CreateIngressWithTLS()Request CertificateACME Challenge validationIssue Signed TLS CertTLS Certificate Active🤖 "Сайт доступен по HTTPS с SSL!"
// live demo

АГЕНТ УПРАВЛЯЕТ
КЛАСТЕРОМ

// demo.discussion

Что важно заметить

// где сработала спека
  • Агент сделал ровно то, что описано
  • Нет импровизации в схемах
// где помог контракт
  • Структура в .proto не даёт разнести код
  • Регенерация вместо ручных правок
// summary

5 тезисов

  1. Агенту нужны руки
  2. MCP — это руки
  3. Готовая платформа (Deckhouse) бьёт самописную интеграцию
  4. Агент без структуры разносит код
  5. spec-first (protoc-gen-mcp) = контракт, который агент не сломает
// when

Когда этот путь оправдан

// да
  • Маленькая команда без инфры
  • Нужно много, ресурса мало
// спорно
  • Зрелый DevOps с экспертизой
  • Критичные destructive-операции без человека
// roadmap

ЧТО
ДАЛЬШЕ?

// roadmap

Куда движемся

now
Tools / Prompts / Resources · Go, Python, Kotlin, Java, TypeScript
next
Больше валидации и ToolAnnotations по MCP spec 2025-11-25
later
Resources для всех языков · Agent Skill для авторинга
// спасибо · вопросы · github

protoc-gen-mcp

Эдгар Сипки//Founder EasyP