Skip to main content
Glama
hanumanthvendra

finops-copilot

クラスターを最適化するAI — そして本番環境を壊させないプラットフォーム

問題: 「AIにインフラを触らせる」ことは、自信過剰なモデルが 午前3時に本番を1レプリカにスケールダウンさせるための絶好の方法です。エージェンティック運用における 面白いエンジニアリングはモデルではなく、ガードレールです。解決策: AIにクラスターへの 型付けされ、境界のあるインターフェースをMCP経由で与え、セーフティロジックをサーバーサイドに 置くことで、モデルが迂回できなくします。AIは何を変更するかを決定し、プラットフォームは何が 許可されているかを決定します。そして、直接頼まれてもそれ以外のことを拒否します。

Model Context Protocol (MCP) サーバーは、稼働中のKubernetesクラスター上で5つのFinOpsツールを公開します。Claude(または任意のMCPクライアント — Claude Desktopなど)は、それらを使って過剰にプロビジョニングされたワークロードを特定し、適正化を提案します。変更を伴う呼び出しはすべて、何かが起こる前にポリシーでチェックされ、デフォルトでドライランになります。安全でない変更 — 保護されたprod名前空間、リソースの下限、過度に大幅な削減 — はサーバーによって拒否され、監査ログに書き込まれます。

完全にラップトップ上で動作します:kindクラスター(意図的に無駄なワークロードを配置)、約120行のMCPサーバー、そしてデフォルトでオフラインで動作するコパイロットドライバー(決定論的なモックなので、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、生のkubectlではない

AIは型付けされ、監査可能なアクションを取得し、制限のないシェルは取得しない

スキーマを持つ5つのツール。クラスターに触れるのはサーバーだけです

ガードレールはサーバーサイド

モデルがプロンプトで迂回できない安全性

apply_rightsizing はすべてのリクエストをまず policy.py に通します。拒否は拒否です

デフォルトでドライラン

安全なことがデフォルトである

apply_rightsizing(dry_run=True) は差分と節約額を表示します。実際の適用はオプトインです

すべてが監査される

「AIは何をしようとしたのか?」に答えがある

適用(許可、拒否、ドライランのいずれも)はすべて、クライアントが読み取れる監査ログに追記されます


実行方法

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 cluster

make demo は、実際のMCPサーバー上で決定論的モックコパイロットを実行します。Claude経路と同じツール、同じガードレールを使用するため、キーなしでもCIでも動作します。make demo-claude はモックを、ツールをエージェンティックに駆動するClaude(公式Anthropic SDKとそのMCPツールランナー)に置き換えます。

デモが示すこと(実際の出力)

4つのワークロード(3つは極端に過剰なリソースが割り当てられ、1つは健全)と保護されたprodを配置したstaging名前空間に対して:

  1. 無駄を発見します。 現在のリクエストではstaging約$138/月かかります。このツールはCPU使用率1〜4%の3つのワークロードにフラグを立て、CPUとレプリカの削減を提案します。約$102/月(73%) の節約が見込めます。

  2. まずドライラン。 すべての変更は、正確な差分と月間節約額を示すドライランです。明示的な非ドライランの呼び出しなしには何も適用されません。

  3. プラットフォームは本番を拒否します。 prodも削減するよう求められた場合、サーバーは拒否します — namespace 'prod' is protected。AIが求め、ガードレールがノーと言いました。ドライランでさえ、変更は一切ありません。

  4. プラットフォームは過度に大幅な削減を拒否します。 CPUリクエストを10mにまで切り詰めるよう求められた場合、サーバーは拒否します — 下限を下回っており、90%超の一度の削減だからです。

  5. すべてのアクションがログに記録されます。 監査証跡には、5つの試行すべて(ドライラン3件、拒否2件)とその理由が表示されます。

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、pauseワークロード

実際のDeploymentsを使ったEKS / AKS / GKE

シードされたアノテーションからの使用率

Prometheus / metrics-server(kube.pyの読み取り部分だけが変更されます)

policy.pyの下限 + 保護された名前空間

あなたの組織のガードレール — 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には実際のアクションを与えなさい。ただし、ノーと言うのはプラットフォームにしなさい。

-
license - not tested
-
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

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.

View all MCP Connectors

Latest Blog Posts

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