finops-copilot
ИИ, который подбирает оптимальный размер вашего кластера, — и платформа, которая не даст ему сломать прод
Проблема: «позволить ИИ трогать нашу инфраструктуру» — отличный способ получить от уверенной модели масштабирование прода до одной реплики в 3 часа ночи. Интересная инженерная часть агентных операций — не модель, а ограничения. Решение: дайте ИИ типизированный, ограниченный интерфейс к вашему кластеру через MCP, и разместите логику безопасности на серверной стороне, где модель не сможет её обойти. ИИ решает, что менять; платформа решает, что ей разрешено делать — и отказывает во всём остальном, даже если её прямо просят.
Сервер Model Context Protocol (MCP) предоставляет пять FinOps-инструментов для живого
кластера Kubernetes. Claude (или любой MCP-клиент — Claude Desktop и т.д.) использует
их, чтобы находить избыточно выделенные рабочие нагрузки и предлагать оптимизацию размера. Каждый
изменяющий вызов проверяется политикой до каких-либо действий и по умолчанию
является пробным запуском (dry-run); небезопасные изменения — защищённое пространство имён prod,
нижняя граница ресурсов, слишком агрессивное сокращение — отклоняются сервером и
записываются в журнал аудита.
Работает полностью на ноутбуке: кластер kind, наполненный намеренно расточительными
рабочими нагрузками, MCP-сервер размером ~120 строк и драйвер-ассистент, который работает офлайн по
умолчанию (детерминированный мок, поэтому работает без API-ключа и в CI) или с
настоящим Claude, когда задан ANTHROPIC_API_KEY.
Что это делает
Claude / MCP client
│ calls typed tools
▼
┌─────────────── MCP server (finops-copilot) ───────────────┐
│ list_namespaces list_workloads estimate_cost │
│ recommend_rightsizing get_audit_log │
│ │
│ apply_rightsizing(…, dry_run=True) │
│ │ │
│ ▼ ┌─────────── policy.py (guardrails) ────────┐ │
│ every │ protected namespaces? resource floors? │ │
│ apply ─┤ max single-step cut? → REFUSE + audit │ │
│ └───────────────────────────────────────────┘ │
└────────────────────────┬──────────────────────────────────┘
│ kubectl (read specs / patch)
▼
kind cluster: staging (waste) · prod (protected)Компонент | Почему это важно | Как это работает здесь |
MCP, а не сырой kubectl | ИИ получает типизированные, проверяемые действия, а не открытую оболочку | Пять инструментов со схемами; только сервер взаимодействует с кластером |
Ограничения на стороне сервера | Безопасность, которую модель не может обойти промптами |
|
Пробный запуск по умолчанию | Безопасное поведение — это поведение по умолчанию |
|
Всё аудируется | «Что пытался сделать ИИ?» — есть ответ | Каждое применение — разрешённое, отклонённое или пробное — добавляется в журнал аудита, который может прочитать клиент |
Related MCP server: kube-lint-mcp
Запуск
make up # kind cluster seeded with waste + Python env (MCP deps)
make demo # the copilot finds & cuts waste — OFFLINE, no API key needed
make demo-claude # real Claude drives the same MCP tools (needs ANTHROPIC_API_KEY)
make test # unit-test the guardrail policy (no cluster needed)
make down # delete the clustermake demo запускает детерминированный мок-ассистент на настоящем MCP-сервере —
те же инструменты, те же ограничения, что и в пути Claude, — поэтому он работает без ключа и в
CI. make demo-claude заменяет мок на Claude, который агентно управляет инструментами
(официальный Anthropic SDK + его MCP tool-runner).
Что доказывает демо (реальный вывод)
Против пространства имён staging с четырьмя рабочими нагрузками (три — сильно
избыточно выделенные, одна — здоровая) и защищённым prod:
Находит расточительство.
stagingстоит ~$138/мес при текущих запросах; инструмент помечает три нагрузки с использованием CPU на уровне 1–4 % и предлагает сокращение CPU и реплик — ~$102/мес (73 %) прогнозируемой экономии.Сначала пробный запуск. Каждое изменение — это пробный запуск с показом точного diff и его месячной экономии. Ничто не применяется без явного вызова с отключённым пробным режимом.
Платформа отказывает для
prod. При попытке урезать иprodсервер отказывает —namespace 'prod' is protected. ИИ попросил; ограничение сказало нет. Никаких изменений, даже пробного запуска.Платформа отказывает в слишком агрессивном сокращении. При запросе урезать запрос CPU до
10mсервер отказывает — ниже нижней границы и более чем 90 % за один шаг.Каждое действие логируется. Журнал аудита показывает все пять попыток — три пробных запуска, два отказа — с причинами.
ИИ нашёл расточительство и предложил сокращения. Платформа решила, что ему разрешено делать. Именно в этом разделении труда и заключается суть.
Использование из Claude Desktop (настоящий MCP)
Это настоящий MCP-сервер — подключайте к нему любой MCP-клиент. Для Claude Desktop добавьте
в claude_desktop_config.json:
{
"mcpServers": {
"finops": {
"command": "/path/to/mcp-finops-copilot/.venv/bin/python",
"args": ["-m", "finops.server"],
"env": { "FINOPS_CTX": "kind-mcp-finops" }
}
}
}Затем спросите Claude: «Сколько стоит моё пространство имён staging и что я могу безопасно оптимизировать?»
Соответствие продакшену
Демо | Продакшн |
kind, рабочие нагрузки | EKS / AKS / GKE с вашими реальными Deployment |
использование из заранее заданной аннотации | Prometheus / metrics-server (меняется только чтение в |
нижние границы в | ограничения вашей организации — область действия RBAC, PodDisruptionBudgets, окна изменений |
журнал аудита в памяти | ваш приёмник аудита (stdout → Loki, таблица событий и т.д.) |
иллюстративные тарифы | реальные цены вашего провайдера за vCPU / ГБ |
Структура проекта
finops/policy.py the guardrail layer — pure, unit-tested (make test)
finops/cost.py cost model + right-sizing heuristic
finops/kube.py kubectl read/patch helpers
finops/server.py the MCP server: 5 tools, dry-run-by-default, audited
copilot/mock_agent.py deterministic offline copilot (CI-safe)
copilot/llm_agent.py real Claude via the Anthropic SDK's MCP tool-runner
copilot/driver.py picks mock vs Claude by ANTHROPIC_API_KEY
k8s/ staging (seeded waste) + prod (protected)Распространяется по лицензии MIT. Небольшое демо, запускаемое на ноутбуке и безопасное с точки зрения NDA, которое доказывает одну чёткую идею: агентные операции — это проблема ограничений. Дайте ИИ реальные действия, но сделайте платформу той, кто говорит «нет».
This server cannot be deployed
Maintenance
Related MCP Connectors
Hosted MCP server for AWS cloud spend: service breakdowns, anomalies, savings and forecasts.
FinOps MCP: query allocated, correlated cloud and AI cost across AWS, GCP, Azure and Snowflake.
Cloudflare Workers MCP server: ai-cost-optimizer
Hosted MCP server for LLM cost estimation, model comparison, and budget-aware routing.
Related MCP Servers
- AlicenseNot gradedqualityAmaintenanceA powerful and flexible Kubernetes MCP server implementation with support for OpenShift.2,141GoApache 2.0
- AlicenseNot gradedqualityCmaintenanceMCP server to lint and validate Kubernetes-related manifests(Helm, FluxCD, ArgoCD, Kustomize, etc.)95 PyPIMIT
- AlicenseNot gradedqualityDmaintenanceProduction-grade MCP server for enterprise Azure cost optimization, enabling spend anomaly detection, multi-tenant auditing, budget validation, and compliance-aware recommendations.1MIT
- AlicenseNot gradedqualityCmaintenanceAn open source MCP server empowering SREs with intelligent observability, predictive analytics, and AI-driven automation across Kubernetes, OpenShift, and Tekton environments.11Apache 2.0