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 | ИИ получает типизированные, проверяемые действия, а не открытую оболочку | Пять инструментов со схемами; только сервер взаимодействует с кластером |
Ограничения на стороне сервера | Безопасность, которую модель не может обойти промптами |
|
Пробный запуск по умолчанию | Безопасное поведение — это поведение по умолчанию |
|
Всё аудируется | «Что пытался сделать ИИ?» — есть ответ | Каждое применение — разрешённое, отклонённое или пробное — добавляется в журнал аудита, который может прочитать клиент |
Запуск
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 installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Hosted MCP server for LLM cost estimation, model comparison, and budget-aware routing.
MCP server for AI agents to plan, verify, and deploy Cloudflare-native apps.
Hosted MCP server for agent governance: MCP config audits, injection scans, scope-policy checks.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/hanumanthvendra/mcp-finops-copilot'
If you have feedback or need assistance with the MCP directory API, please join our Discord server