finops-copilot
클러스터를 적정 규모로 조정하는 AI — 그리고 프로덕션을 망가뜨리지 않게 하는 플랫폼
문제: "AI가 우리 인프라를 건드리게 하는 것"은 자신만만한 모델이 새벽 3시에 프로덕션을 레플리카 1개로 스케일링하게 만드는 좋은 방법입니다. 에이전틱 운영에서 흥미로운 엔지니어링은 모델이 아니라 가드레일입니다. 해결책: AI에게 MCP를 통해 클러스터에 대한 타입이 지정되고 경계가 있는 인터페이스를 제공하고, 안전 로직을 모델이 우회할 수 없는 서버 측에 둡니다. AI는 무엇을 변경할지 결정하고, 플랫폼은 무엇이 허용되는지 결정합니다. 직접 요청하더라도 나머지는 거부합니다.
Model Context Protocol (MCP) 서버는 라이브 Kubernetes 클러스터 위에 5가지 FinOps 도구를 노출합니다. Claude(또는 Claude Desktop 등 모든 MCP 클라이언트)는 이를 사용해 과도하게 프로비저닝된 워크로드를 찾고 적정 규모 조정을 제안합니다. 모든 변경(mutating) 호출은 어떤 일이 발생하기 전에 정책에 따라 검사되며 기본적으로 dry-run으로 동작합니다. 보호된 prod 네임스페이스, 리소스 하한선, 과도한 삭감 같은 안전하지 않은 변경은 서버가 거부하고 감사 로그에 기록합니다.
전적으로 노트북에서 실행됩니다. 의도적으로 낭비가 심한 워크로드가 심어진 kind 클러스터, 약 ~120줄짜리 MCP 서버, 그리고 기본적으로 오프라인으로 실행되는 코파일럿 드라이버(결정적 mock이라 API 키 없이도 CI에서도 동작) 또는 ANTHROPIC_API_KEY가 설정된 경우 실제 Claude로 실행되는 드라이버로 구성됩니다.
기능
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, raw kubectl이 아님 | AI는 타입이 지정되고 감사 가능한 액션을 얻지, 열린 셸을 얻지 않음 | 스키마가 있는 5가지 도구; 서버만이 클러스터에 접근함 |
서버 측 가드레일 | 모델이 프롬프트로 우회할 수 없는 안전 |
|
기본 dry-run | 안전한 것이 기본인 것 |
|
모든 것 감사 | "AI가 무엇을 하려 했는가"에 대한 답이 있음 | 허용, 거부, dry-run 등 모든 적용은 클라이언트가 읽을 수 있는 감사 로그에 추가됩니다. |
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 서버 위에서 결정적 mock 코파일럿을 실행합니다. Claude 경로와 동일한 도구, 동일한 가드레일을 사용하므로 키 없이도 CI에서도 동작합니다. make demo-claude는 mock 대신 Claude가 도구를 에이전트 방식으로 구동하게 합니다(공식 Anthropic SDK + 해당 MCP 도구 러너).
데모가 증명하는 것 (실제 출력)
네 개의 워크로드(3개는 심하게 과잉 프로비저닝, 1개는 정상)가 심어진 staging 네임스페이스와 보호된 prod를 대상으로:
낭비를 찾아냅니다.
staging은 현재 요청 기준으로 ~$138/월의 비용이 듭니다. 도구는 CPU 사용률 1–4%에 머무는 세 워크로드를 플래그하고 CPU + 레플리카 삭감을 제안합니다 — 예상 절감액 ~$102/월 (73%).먼저 dry-run을 수행합니다. 모든 변경은 정확한 diff와 월별 절감액을 보여주는 dry-run입니다. 명시적인 non-dry-run 호출 없이는 아무것도 적용되지 않습니다.
플랫폼이 prod를 거부합니다.
prod도 줄여 달라는 요청에 서버는 거부합니다 —namespace 'prod' is protected. AI가 요청했지만 가드레일이 거부했습니다. dry-run조차도 변경이 없습니다.플랫폼이 과도한 삭감을 거부합니다. CPU 요청을
10m으로 줄여 달라는 요청에 서버는 거부합니다 — 하한선 미만이고, 한 번에 90% 이상 삭감이기 때문입니다.모든 작업이 기록됩니다. 감사 추적에는 다섯 가지 시도(세 건의 dry-run, 두 건의 거부)와 그 사유가 모두 표시됩니다.
AI가 낭비를 찾고 삭감을 제안했습니다. 플랫폼이 무엇이 허용되는지 결정했습니다. 이 역할 분담이 바로 핵심입니다.
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, | 실제 Deployments가 있는 EKS / AKS / GKE |
시드된 주석(annotation)의 사용률 | Prometheus / metrics-server ( |
| 조직의 가드레일 — RBAC 범위, PodDisruptionBudgets, 변경 창 |
인메모리 감사 로그 | 감사 싱크(stdout → Loki, 이벤트 테이블 등) |
예시용 비용 요율 | 제공업체의 실제 vCPU/GB당 가격 |
구성
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에 안전한 작은 데모로, 하나의 날카로운 아이디어를 증명합니다: 에이전틱 운영은 가드레일 문제입니다. AI에게 실제 액션을 주되, '아니요'라고 말하는 쪽은 플랫폼으로 만드세요.
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