Add nable: local-first FinOps MCP for cloud and AI spend - #816
Conversation
There is no cost or FinOps MCP in the catalog today. nable answers spend questions across AWS, Azure, GCP, Kubernetes and 15+ SaaS and AI providers, and drafts the Terraform fix as a pull request a human reviews. Runs with uvx, like the nine existing uvx components. Needs no API key in the config: it reads the cloud credentials already on the machine. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
👋 Thanks for contributing, @getnable!This PR touches What happens next
While you wait
This is an automated message. No action is required from you right now — a maintainer will review soon. |
Greptile SummaryAdds a local nable FinOps MCP descriptor that launches through
Confidence Score: 4/5The PR should not merge until the generated dashboard component artifacts are updated so users can discover the new MCP. The descriptor itself follows the expected MCP JSON shape, but the dashboard reads committed generated catalogs that omit nable and are not committed by the scheduled regeneration workflow. Files Needing Attention: cli-tool/components/mcps/devtools/nable.json and generated dashboard component catalogs
|
| Filename | Overview |
|---|---|
| cli-tool/components/mcps/devtools/nable.json | Adds a structurally valid MCP descriptor, but its generated dashboard catalog entries are missing. |
Reviews (1): Last reviewed commit: "Add nable: local-first FinOps MCP for cl..." | Re-trigger Greptile
| @@ -0,0 +1,9 @@ | |||
| { | |||
| "mcpServers": { | |||
| "nable": { | |||
There was a problem hiding this comment.
When this component is merged, the dashboard continues reading committed generated catalogs that contain no nable entry, causing the new MCP to remain absent from browsing and search; regenerate and commit the dashboard component artifacts with this source file.
Knowledge Base Used: Components Catalog (cli-tool/components)
There was a problem hiding this comment.
1 issue found across 1 file
Prompt for AI agents (unresolved issues)
Check if these issues are valid — if so, understand the root cause of each and fix them. If appropriate, use sub-agents to investigate and fix each issue separately.
<file name="cli-tool/components/mcps/devtools/nable.json">
<violation number="1" location="cli-tool/components/mcps/devtools/nable.json:6">
P2: On machines whose default Python is <3.11 (Ubuntu 22.04 system Python, older pyenv setups), `uvx nable` does not start an MCP server: the `nable` shim detects the old interpreter and exits 1 after printing a stderr message. The package's own guidance and the repo's existing android-mcp.json pattern pin the interpreter, e.g. `uvx --python 3.12 nable`. Pin the interpreter in the args to make the server start reliably regardless of the machine's default Python.</violation>
</file>
Reply with feedback, questions, or to request a fix.
Re-trigger cubic
| "nable": { | ||
| "description": "Local-first FinOps server for cloud and AI spend. Answers cost questions across AWS, Azure, GCP, Kubernetes and 15+ SaaS and AI providers, detects anomalies against a rolling baseline, tracks LLM spend by model, and drafts the Terraform fix as a pull request a human reviews. Runs on your machine: credentials stay in your OS keyring and cost data caches in a local SQLite database. Propose-only, so it never changes your cloud on its own.", | ||
| "command": "uvx", | ||
| "args": ["nable"] |
There was a problem hiding this comment.
P2: On machines whose default Python is <3.11 (Ubuntu 22.04 system Python, older pyenv setups), uvx nable does not start an MCP server: the nable shim detects the old interpreter and exits 1 after printing a stderr message. The package's own guidance and the repo's existing android-mcp.json pattern pin the interpreter, e.g. uvx --python 3.12 nable. Pin the interpreter in the args to make the server start reliably regardless of the machine's default Python.
Prompt for AI agents
Check if this issue is valid — if so, understand the root cause and fix it. At cli-tool/components/mcps/devtools/nable.json, line 6:
<comment>On machines whose default Python is <3.11 (Ubuntu 22.04 system Python, older pyenv setups), `uvx nable` does not start an MCP server: the `nable` shim detects the old interpreter and exits 1 after printing a stderr message. The package's own guidance and the repo's existing android-mcp.json pattern pin the interpreter, e.g. `uvx --python 3.12 nable`. Pin the interpreter in the args to make the server start reliably regardless of the machine's default Python.</comment>
<file context>
@@ -0,0 +1,9 @@
+ "nable": {
+ "description": "Local-first FinOps server for cloud and AI spend. Answers cost questions across AWS, Azure, GCP, Kubernetes and 15+ SaaS and AI providers, detects anomalies against a rolling baseline, tracks LLM spend by model, and drafts the Terraform fix as a pull request a human reviews. Runs on your machine: credentials stay in your OS keyring and cost data caches in a local SQLite database. Propose-only, so it never changes your cloud on its own.",
+ "command": "uvx",
+ "args": ["nable"]
+ }
+ }
</file context>
| "args": ["nable"] | |
| "args": ["--python", "3.12", "nable"] |
|
Good catch, and it was correct. I went to reply that this was already fixed, then ran it: The root cause was not the config. The shim re-execs itself under a uv-managed interpreter rather than asking the user to retype the command, and that code was written weeks ago, merged, and tested. It never shipped. Fixed at the source and published as So I have left the config as Also added a digest lock so this class of miss fails the test suite instead of reaching a reviewer: editing the shim source now breaks CI until the version is bumped, which is the point where you remember to tag it. Thanks for the report. It surfaced a shipped-but-unpublished fix I would not have found otherwise. |
Adds one component:
cli-tool/components/mcps/devtools/nable.json.Why this one. There is no cost or FinOps MCP in the catalog today. Cloud spend is a question people ask inside Claude Code constantly and currently have to leave for a console to answer.
What nable does. Answers cost questions across AWS, Azure, GCP, Kubernetes and 15+ SaaS and AI providers, detects anomalies against a rolling baseline, tracks LLM spend by model, and drafts the Terraform fix as a pull request a human reviews.
Config notes. Runs with
uvx, matching the nine existing uvx components. No API key in the config, so no placeholder for users to fill: it reads the cloud credentials already on the machine, and they stay in the OS keyring. Propose-only, so it never changes cloud resources on its own.Open source (Apache-2.0) at getnable/finopsmcp, on PyPI as
finops-mcp. I did not touchcomponents.json, since that is generated.🤖 Generated with Claude Code
Summary by cubic
Adds
nableas a new MCP component to provide local‑first FinOps for cloud and AI spend, filling the gap of no cost tooling in the catalog. Previously there was no FinOps MCP; now users can query spend, detect anomalies, and get Terraform fix proposals locally without modifying cloud resources.cli-tool/components/); addscli-tool/components/mcps/devtools/nable.json.docs/components.json.uvx(entrypointnable, PyPIfinops-mcp); no API key in config; reads existing cloud credentials from the OS keyring; caches cost data locally; propose‑only (no resource changes).Written for commit d54b2c2. Summary will update on new commits.