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 등 모든 적용은 클라이언트가 읽을 수 있는 감사 로그에 추가됩니다. |
실행하기
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 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