Skip to main content
Glama

KubeOpt

License Python GitHub Marketplace GitHub stars GitHub forks

The Cost Engineer for Kubernetes

KubeOpt analyzes your Kubernetes clusters, identifies cost optimization opportunities, and generates actionable implementation plans with copy-paste kubectl commands.

Works with Azure AKS, AWS EKS, and Google GKE.


What It Does

  • Connects to your cloud provider APIs and Kubernetes clusters

  • Runs 16 optimization algorithms (rightsizing, HPA, storage, networking, node pools, anomaly detection)

  • Calculates actual vs optimal costs with specific dollar savings per resource

  • Generates a 3-week implementation plan with kubectl commands ready to execute

  • Dashboard with cost breakdowns, workload analysis, and optimization scores

Related MCP server: Kubernetes + Prometheus SRE MCP Server

GitHub Action

Run a Kubernetes cost scan on every pull request or on a schedule. The action posts a savings summary as a PR comment (upserted on re-runs) and writes results to the GitHub Step Summary.

What you get on each PR:

## KubeOpt Cost Scan — 2026-04-27

| Cluster          | Provider | Monthly Spend | Savings Available |
|------------------|----------|---------------|-------------------|
| prod-eks-us-east | AWS      | $4,120        | $890/mo           |
| staging-aks-weu  | Azure    | $1,340        | $210/mo           |

**Total potential savings: $1,100/mo**

<details>
<summary>Top opportunities</summary>

1. $540/mo — prod-eks-us-east — Rightsize 6 over-provisioned node groups
2. $350/mo — prod-eks-us-east — Enable HPA on 4 deployments with static replicas
3. $210/mo — staging-aks-weu  — Remove 3 idle nodes outside business hours

</details>

Setup — two steps:

1. Add secrets (Settings → Secrets and variables → Actions):

Secret

Value

KUBEOPT_URL

URL of your KubeOpt instance (e.g. https://demo.kubeopt.com)

KUBEOPT_USERNAME

KubeOpt username

KUBEOPT_PASSWORD

KubeOpt password

2. Create .github/workflows/cost-scan.yml:

name: K8s Cost Scan

on:
  pull_request:
    types: [opened, synchronize]
  schedule:
    - cron: '0 8 * * 1'   # Every Monday at 08:00 UTC
  workflow_dispatch:

permissions:
  contents: read
  pull-requests: write

jobs:
  cost-scan:
    runs-on: ubuntu-latest
    steps:
      - uses: kubeopt/kubeopt@v1
        with:
          kubeopt-url:      ${{ secrets.KUBEOPT_URL }}
          kubeopt-username: ${{ secrets.KUBEOPT_USERNAME }}
          kubeopt-password: ${{ secrets.KUBEOPT_PASSWORD }}

The action is read-only — it never modifies your cluster. PR comments are upserted so re-runs update the existing comment rather than adding a new one.

Full inputs, outputs, and advanced usage


Claude AI Integration (MCP)

Ask Claude about your Kubernetes costs in plain English.

KubeOpt ships an MCP server (mcp_server/) that exposes 6 tools over stdio transport. Once connected, Claude Desktop, Cursor, or Windsurf can query your cluster data directly — no copy-pasting dashboards.

Tools exposed:

Tool

What it does

list_clusters

List all monitored clusters with cost data

get_cost_summary

Portfolio-level cost summary across all clusters

get_cluster_analysis

Detailed analysis for a specific cluster

get_recommendations

Actionable recommendations sorted by savings impact

analyze_cluster

Trigger a fresh analysis and poll until complete

get_pod_costs

Per-pod cost breakdown, filterable by namespace

Prerequisites

  • KubeOpt running locally (python main.py) or deployed on Railway

  • Python virtual environment with dependencies installed (pip install -r requirements.txt)

Claude Desktop

Edit ~/.claude/claude_desktop_config.json:

{
  "mcpServers": {
    "kubeopt": {
      "command": "uvx",
      "args": ["kubeopt-mcp"],
      "env": {
        "KUBEOPT_API_URL": "https://your-kubeopt-instance.com",
        "KUBEOPT_USERNAME": "kubeopt",
        "KUBEOPT_PASSWORD": "your-password"
      }
    }
  }
}

Restart Claude Desktop after saving.

Cursor

Open Cursor Settings → MCP and add a new server entry:

{
  "kubeopt": {
    "command": "uvx",
    "args": ["kubeopt-mcp"],
    "env": {
      "KUBEOPT_API_URL": "https://your-kubeopt-instance.com",
      "KUBEOPT_USERNAME": "kubeopt",
      "KUBEOPT_PASSWORD": "your-password"
    }
  }
}

Windsurf / Codeium

Edit ~/.codeium/windsurf/mcp_config.json (create it if it doesn't exist):

{
  "mcpServers": {
    "kubeopt": {
      "command": "uvx",
      "args": ["kubeopt-mcp"],
      "env": {
        "KUBEOPT_API_URL": "https://your-kubeopt-instance.com",
        "KUBEOPT_USERNAME": "kubeopt",
        "KUBEOPT_PASSWORD": "your-password"
      }
    }
  }
}

Restart Windsurf after saving.

Example prompts

What are my top 3 cost savings opportunities across all clusters?
Which pods are costing the most in the production namespace?
Give me a summary of total Kubernetes spend this month.
What's the optimization score for my staging cluster?
Trigger a fresh analysis on cluster prod-aks-eastus and report back.

For more on the protocol: modelcontextprotocol.io


GitHub Action — Full Reference

Run a Kubernetes cost scan on every pull request or on a schedule. The action posts a summary as a PR comment (upserted on re-runs) and writes results to the GitHub Step Summary.

What you get on each PR:

## KubeOpt Cost Scan — 2026-04-27

| Cluster          | Provider | Monthly Spend | Savings Available |
|------------------|----------|---------------|-------------------|
| prod-eks-us-east | AWS      | $4,120        | $890/mo           |
| staging-aks-weu  | Azure    | $1,340        | $210/mo           |

**Total potential savings: $1,100/mo**

<details>
<summary>Top opportunities</summary>

1. $540/mo — prod-eks-us-east — Rightsize 6 over-provisioned node groups
2. $350/mo — prod-eks-us-east — Enable HPA on 4 deployments with static replicas
3. $210/mo — staging-aks-weu  — Remove 3 idle nodes outside business hours

</details>

Setup

1. Add secrets to your repository

Go to Settings → Secrets and variables → Actions and add:

Secret

Value

KUBEOPT_URL

URL of your KubeOpt instance (e.g. https://demo.kubeopt.com)

KUBEOPT_USERNAME

KubeOpt username

KUBEOPT_PASSWORD

KubeOpt password

2. Create .github/workflows/cost-scan.yml

name: K8s Cost Scan

on:
  pull_request:
    types: [opened, synchronize]
  schedule:
    - cron: '0 8 * * 1'   # Every Monday at 08:00 UTC
  workflow_dispatch:

permissions:
  contents: read
  pull-requests: write

jobs:
  cost-scan:
    name: KubeOpt Cost Scan
    runs-on: ubuntu-latest
    steps:
      - name: Run KubeOpt cost scan
        id: kubeopt
        uses: kubeopt/kubeopt@v1
        with:
          kubeopt-url:      ${{ secrets.KUBEOPT_URL }}
          kubeopt-username: ${{ secrets.KUBEOPT_USERNAME }}
          kubeopt-password: ${{ secrets.KUBEOPT_PASSWORD }}
          top:              5
          post-comment:     ${{ github.event_name == 'pull_request' && 'true' || 'false' }}

      - name: Print savings to log
        if: always()
        run: echo "Total savings available: ${{ steps.kubeopt.outputs.total-savings }}/mo"

Inputs

Input

Required

Default

Description

kubeopt-url

yes

URL of your KubeOpt instance

kubeopt-username

yes

kubeopt

KubeOpt username

kubeopt-password

yes

KubeOpt password

cluster-id

no

(all clusters)

Scan a specific cluster only

top

no

5

Number of top savings opportunities to show

post-comment

no

true

Post results as a PR comment

Outputs

Output

Description

total-savings

Total potential monthly savings in USD

scan-summary

Full markdown summary (use in downstream steps)

Scan a specific cluster

- uses: kubeopt/kubeopt@v1
  with:
    kubeopt-url:      ${{ secrets.KUBEOPT_URL }}
    kubeopt-username: ${{ secrets.KUBEOPT_USERNAME }}
    kubeopt-password: ${{ secrets.KUBEOPT_PASSWORD }}
    cluster-id:       prod-eks-us-east-1
    top:              10

Notes

  • The action checks out kubeopt/kubeopt@v1 at runtime to run the scan. No local install needed.

  • PR comments are upserted: re-running the action updates the existing comment rather than adding a new one.

  • Requires pull-requests: write permission to post comments.

  • The action does not modify your cluster. It is read-only.


Architecture

                         KubeOpt Platform
 +----------------------------------------------------------+
 |                                                          |
 |   React SPA (Recharts)     FastAPI REST API (v2)         |
 |   frontend/dist/           presentation/api/v2/          |
 |                                                          |
 +---------------------------+------------------------------+
                             |
          +------------------+------------------+
          |                  |                  |
  +-------v------+  +-------v------+  +--------v-------+
  |  Algorithms  |  |  Analytics   |  |  ML Models     |
  |  (16 modules)|  |  Collectors  |  |  Anomaly Det.  |
  |  rightsizing |  |  Processors  |  |  CPU Optimizer |
  |  HPA, storage|  |  Scorer      |  |  Workload Cls  |
  +--------------+  +--------------+  +----------------+
          |                  |                  |
  +-------v------------------v------------------v-------+
  |              Cloud Provider Abstraction              |
  |  6 interfaces: Auth, Executor, Metrics, Costs,      |
  |                Accounts, Inspector                   |
  +---+-----------------+-----------------+-------------+
      |                 |                 |
  +---v---+        +----v----+       +----v----+
  | Azure |        |   AWS   |       |   GCP   |
  | (AKS) |        |  (EKS)  |       |  (GKE)  |
  +-------+        +---------+       +---------+

Hosted Services (not in this repo)

Service

Purpose

Endpoint

Plan Generation

Generates optimization plans

plan.kubeopt.com

AI Chat

Conversational cluster analysis

ai.kubeopt.com

License Manager

License validation

license.kubeopt.com

These services require a PRO or ENTERPRISE license. The core analysis engine works without them.

Quick Start

Prerequisites

  • Python 3.11+

  • Node.js 18+ (for frontend build)

  • Cloud provider credentials (Azure, AWS, or GCP)

Run Locally

# Clone and install
git clone https://github.com/kubeopt/kubeopt.git
cd kubeopt
pip install -r requirements.txt

# Set up credentials (copy and fill in your values)
cp .env.example .env

# Build frontend
cd frontend && npm install && npm run build && cd ..

# Run
python main.py
# Open http://localhost:5001

Run with Docker

docker build -t kubeopt .
docker run -p 5001:5001 --env-file .env kubeopt

Run via CLI

npx kubeopt clusters          # List clusters
npx kubeopt analyze <id>      # Run analysis
npx kubeopt report <id>       # View report

Cloud Provider Setup

Azure (AKS)

Set these environment variables:

AZURE_SUBSCRIPTION_ID=your-subscription-id
AZURE_CLIENT_ID=your-client-id
AZURE_CLIENT_SECRET=your-client-secret
AZURE_TENANT_ID=your-tenant-id

Requires a Service Principal with Reader role. See docs/setup/AZURE-SETUP.md.

AWS (EKS)

AWS_ACCESS_KEY_ID=your-access-key
AWS_SECRET_ACCESS_KEY=your-secret-key
AWS_DEFAULT_REGION=us-east-1

Requires IAM user with EKS, Cost Explorer, and CloudWatch read access.

Google Cloud (GKE)

GCP_SERVICE_ACCOUNT_KEY={"type":"service_account",...}
GCP_BILLING_DATASET=your_billing_dataset
GCP_BILLING_ACCOUNT_ID=your-billing-account-id

See docs/setup/GCP-BILLING-SETUP.md.

Project Structure

kubeopt/
  algorithms/          16 optimization algorithm modules
  analytics/           Cost collectors, processors, cluster scorer
  application/         Orchestrator, command generators
  infrastructure/
    cloud_providers/   Azure, AWS, GCP adapters (6 interfaces each)
    services/          Auth, caching, license validation, settings
    persistence/       Database, analysis engine
  machine_learning/    Anomaly detection, CPU optimizer, workload classifier
  presentation/
    api/v2/            FastAPI routers, schemas, dependencies
  frontend/            React SPA (TypeScript, Recharts, Tailwind)
  shared/
    standards/         16 YAML-based optimization standards
    config/            Application configuration
  mcp_server/          MCP server (6 tools, stdio transport)

Technology Stack

Component

Technology

Backend

Python 3.11+, FastAPI, uvicorn

Frontend

React 19, TypeScript, Vite, Recharts, Tailwind CSS

ML

Pandas, NumPy, Scikit-learn

Cloud

Azure SDK, boto3, google-cloud SDK

Database

SQLite (dev), PostgreSQL (prod)

Deployment

Docker, Railway, Kubernetes

License

Apache License 2.0. See LICENSE.

The core analysis engine is open source and free to use. Plan generation and AI chat are hosted services that require a PRO or ENTERPRISE license.

Contributing

See CONTRIBUTING.md for guidelines.

Security

To report security vulnerabilities, email support@kubeopt.com. See SECURITY.md.


Built by Nivaya Technologies

Available Tools

6 tools
analyze_clusterA

Trigger a fresh cost analysis for a cluster. This runs in the background and takes 1-15 minutes depending on cluster size and cloud provider. Polls for completion and returns the results.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_idYesThe cluster ID to analyze

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description covers async behavior (background, 1-15 min, polling) but omits details like authentication or result format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, front-loaded with purpose, no wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Fairly complete for a simple async tool, though missing result structure and error handling.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema already describes the parameter; description adds no additional meaning beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Trigger' and resource 'cost analysis' for a cluster, distinguishing it from sibling get_* tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies this tool is for fresh analysis (vs. retrieving existing results) but does not explicitly compare to alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_cluster_analysisA

Get detailed cost analysis for a specific cluster including cost breakdown, resource utilization, node recommendations, and anomaly detection

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_idYesThe cluster ID to analyze (use list_clusters to find IDs)

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits such as read-only nature, authentication requirements, or side effects. The name suggests a read operation, but this is not explicitly stated, leaving a transparency gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence with 20 words, front-loaded with the main action and purpose. No redundant information is present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description lists the analysis components but does not specify output format, time range, or whether data is real-time or historical. Since there is no output schema, additional context would be beneficial for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter, which already includes guidance to use list_clusters. The tool description does not add any additional parameter meaning beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Get' and the resource 'cluster analysis'. It lists specific aspects (cost breakdown, resource utilization, node recommendations, anomaly detection), which distinguishes it from siblings like get_cost_summary (cost-only) and get_recommendations (recommendations-only).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for a specific cluster but does not explicitly compare with siblings. The parameter hint to use list_clusters provides some context, but there is no guidance on when to use this tool versus analyze_cluster or get_pod_costs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_cost_summaryA

Get portfolio-level cost summary across all clusters

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. It discloses basic purpose but omits behavioral traits like read-only hint, caching, rate limits, or what data is excluded. Minimal transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with front-loaded verb and resource. Every word adds value; no fluff. Efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

No output schema exists, but description does not explain return format or typical fields. Adequate for a trivial tool but could be more complete (e.g., 'returns total cost, average cost per cluster').

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters and schema coverage is 100% (trivially). Description adds no extra parameter semantics, but none are needed. Baseline 4 is appropriate given no parameters to document.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool provides a 'portfolio-level cost summary across all clusters', with specific verb 'Get' and resource 'cost summary'. This effectively distinguishes it from sibling tools like get_pod_costs (per-pod) and get_recommendations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. Missing context such as 'use for high-level overview; use get_pod_costs for detailed pod-level costs'.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_pod_costsB

Get per-pod cost breakdown for a cluster, useful for identifying expensive workloads. Optionally filter by namespace.

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_idYesThe cluster ID to get pod costs for
namespaceNoOptional: filter pods to this Kubernetes namespace

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears full responsibility. It states the tool 'gets' a breakdown but does not describe the output format, whether the data is live or cached, any rate limits, or required permissions. The behavioral information is minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences clearly convey purpose and key option. No redundant words or fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Without an output schema, the description should indicate what the breakdown includes (e.g., fields like pod name, cost, CPU/memory). It does not. Additionally, no comparison to siblings is provided, leaving the agent to infer the tool's full scope.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description adds context for 'namespace' as an optional filter, but does not expand on 'cluster_id' beyond the schema. This adds marginal value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'get', the resource 'per-pod cost breakdown for a cluster', and the purpose 'useful for identifying expensive workloads'. This differentiates from sibling like 'get_cost_summary' which likely provides a broader view, but does not explicitly distinguish from all siblings.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for identifying expensive workloads, but does not provide explicit guidance on when to use versus alternatives like 'get_cost_summary' or when not to use. No exclusions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recommendationsB

Get actionable optimization recommendations for a cluster, sorted by estimated savings impact

ParametersJSON Schema
NameRequiredDescriptionDefault
cluster_idYesThe cluster ID to get recommendations for

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description carries full burden. Only states sorting behavior; lacks details on read-only nature, caching, permissions, or rate limits. Minimal behavioral disclosure.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with key action and resource. No wasted words; efficient and clear.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite low complexity (1 param, no output schema), description omits return format, types of recommendations, and how they relate to sibling tools. Incomplete for effective agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter 'cluster_id'. Description adds no extra meaning beyond the schema's own description.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states verb 'Get', resource 'optimization recommendations for a cluster', and unique sorting 'by estimated savings impact'. Distinguishes from sibling tools like 'list_clusters' and 'get_cost_summary'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Implied usage for obtaining optimization recommendations sorted by savings, but no explicit when-to-use vs siblings like 'analyze_cluster' or 'get_cluster_analysis'. Lacks exclusions or alternatives.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_clustersA

List all Kubernetes clusters being monitored with their latest cost and optimization data

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description bears the full burden. It discloses the tool lists data but lacks details on behavioral aspects such as data freshness, pagination, authorization requirements, or any side effects. The read-only nature is inferred but not explicitly stated.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, concise and front-loaded with the main verb and key nouns. Every word adds value with no redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no output schema and no annotations, the description is minimal. It provides the core purpose but lacks contextual details like the structure of returned data (e.g., cluster names, cost fields, optimization metrics) or any constraints. For a tool with no parameters, it is adequate but could be more complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters with 100% coverage, so the description does not need to elaborate on parameters. Baseline score of 4 is appropriate as there is nothing to add beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'List', the resource 'Kubernetes clusters being monitored', and the scope 'with their latest cost and optimization data'. It effectively distinguishes itself from sibling tools like 'analyze_cluster' or 'get_cost_summary' by indicating it provides a list of all clusters with combined cost and optimization data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies basic usage (listing clusters) but provides no explicit guidance on when to use this tool versus alternatives like 'get_cost_summary' for cost details or 'get_recommendations' for optimization. There is no mention of prerequisites or contextual cues for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv1.0.0
    • First observedanalyze_cluster
    • First observedget_cluster_analysis
    • First observedget_cost_summary
    • First observedget_pod_costs
    • First observedget_recommendations
    • First observedlist_clusters

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: triggering analysis, retrieving cluster-level results, portfolio summary, pod-level costs, recommendations, and listing clusters. No overlap or ambiguity.

Naming Consistency5/5

All tools follow a consistent verb_noun snake_case pattern (e.g., analyze_cluster, get_cluster_analysis, list_clusters), making them predictable and easy to distinguish.

Tool Count5/5

Six tools is well-scoped for a Kubernetes cost analysis server, covering the core workflows without being excessive or insufficient.

Completeness5/5

The tool surface covers the full lifecycle: triggering analysis, retrieving detailed results (cluster, pod, portfolio), recommendations, and listing—no obvious gaps for the stated purpose.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Provides intelligent analysis of token usage patterns and optimization recommendations to improve efficiency and reduce costs in Claude Code sessions. Offers real-time analysis, cost metrics, and actionable insights for better context window and tool usage optimization.
    3 npm
    -
  • A
    license
    A
    quality
    C
    maintenance
    Enables analyzing AWS cloud costs through natural language queries, providing cost summaries, anomaly detection, idle resource identification, rightsizing recommendations, and tagging compliance via Claude.
    10
    25 npm
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Turn Claude into your AWS tagging compliance assistant — ask in plain English, get real-time insights on your cloud costs and compliance.
    1
    Apache 2.0