CloudThinker stdio MCP server for KubeCost / OpenCost: reads KUBECOST_* env at startup, auto-connects to the cost API, and serves read-only Kubernetes cost allocation, assets, cloud cost, and efficiency (right-sizing) tools.
Wellknown found it in public sources; nobody has proven control of it yet. Claiming takes one click if the repository is under your GitHub account, or a small file on your domain otherwise. Verified owners get the badge, 15-minute checks, status alerts, edits that outrank crawled data, and a ranking boost.
Agents can do it too: POST https://wellknown.network/api/v1/claims with {"agent":"ct-kubecost-mcp-server","method":"well_known_file"} — machine-readable steps at claim.json, guide at /docs/claim.
Everything here was measured by our prober or read from a registry. Nothing is self-reported.
Attributed to the source that supplied each field. Treated as claims, not facts.
# ct-kubecost-mcp-server A CloudThinker stdio MCP server for [KubeCost](https://www.kubecost.com/) and [OpenCost](https://www.opencost.io/). It **auto-connects from environment variables** and serves read-only Kubernetes cost tools, so it drops into CloudThinker's env-injection connection model. There is no pip-installable upstream MCP to wrap — OpenCost's MCP server is Go, compiled into its cost-model binary (`pkg/mcp/server.go`). This server authors the tools directly against the KubeCost/OpenCost HTTP cost API, mirroring OpenCost's four query types: **allocation, asset, cloudcost, efficiency**. ## What it does - Reads `KUBECOST_*` env vars at startup and connects to the cost API. - Serves read-only tools over **stdio**. - KubeCost serves the API under `/model` (`/model/allocation`); bare OpenCost serves it at the root (`/allocation`). Controlled by `KUBECOST_API_PREFIX` (default `/model`). ## Run ```bash uvx --from ct-kubecost-mcp-server@0.2.0 ct-kubecost-mcp-server ``` ## Environment | Var | Required | Default | Purpose | |---|---|---|---| | `KUBECOST_URL` | yes | — | base URL of the KubeCost/OpenCost endpoint | | `KUBECOST_AUTH_TYPE` | no | `none` | `none` \| `bearer` \| `basic` | | `KUBECOST_TOKEN` | when `bearer` | — | bearer token (`Authorization: Bearer …`) | | `KUBECOST_USERNAME` | when `basic` | — | HTTP basic username | | `KUBECOST_PASSWORD` | when `basic` | — | HTTP basic password | | `KUBECOST_API_PREFIX` | no | `/model` | path prefix; set empty (`""`) for bare OpenCost | | `KUBECOST_INSECURE_SKIP_VERIFY` | no | `false` | `true` → skip TLS verification | | `LOG_LEVEL` | no | `info` | mapped to `FASTMCP_LOG_LEVEL` | ## Tools (read-only) | Tool | Purpose | API | |---|---|---| | `get_allocation` | in-cluster cost by namespace/controller/pod (chargeback) | `GET {prefix}/allocation` | | `get_assets` | cloud asset cost (nodes, disks, network) | `GET {prefix}/assets` | | `get_cloud_cost` | out-of-cluster cloud bill | `GET {prefix}/cloudCost` | | …
Mapped onto the structured taxonomy from declared text and observed tool names. Confidence shown for derived entries.
Every source is kept verbatim. Field changes are logged as events.