Cloud FinOps Skill & MCP
by OptimNow · remote · local (pypi) · no sign-in to list tools · v1.43.0 · published by GitHub user OptimNow
Cloud cost + FinOps knowledge for AI agents: AWS/Azure/GCP optimisation, AI spend, waste playbooks.
6 tools: 6 only read.
Scanned Oct 21, 2026
- Deletes or cancels0Claude Code: deny
- Can't be undone0Claude Code: ask
- Changes things0Claude Code: ask
- Only reads6Claude Code: allow: see these tools
3 checks matched something in the tool definitions. No finding is not a safety guarantee. How the checks work.
claude mcp add --transport http cloud-finops https://mcp.optimnow.io/mcpFindings
Matches of fixed checks, with the text they matched.
- Infoget_reference
The description is 2,298 characters long, over the 2,000 this check looks for.
What this check looks forMatched text
description ends: "...vailable_sections`` - every heading in the file - so the retry is exact."
- Infofind_references
The description is 2,154 characters long, over the 2,000 this check looks for.
What this check looks forMatched text
description ends: "...id_values`, so a typo is distinguishable from a genuine gap in coverage."
- Infofind_playbooks
The description is 2,226 characters long, over the 2,000 this check looks for.
What this check looks forMatched text
description ends: "...id_values`, so a typo is distinguishable from a genuine gap in coverage."
Tools
Open a tool for its reasons and full description. Descriptions are the publisher's own words, shown as they are.
6 tools
Only reads 6Claude Code: allow
find_playbooksFinds the runbook for a specific cloud waste pattern, filtered by provider, service, waste category or detection confidence.1 finding
Why it is in this group
- The name "find_playbooks" says "find": a word for reading.
Findings
- Info
The description is 2,226 characters long, over the 2,000 this check looks for.
What this check looks forMatched text
description ends: "...id_values`, so a typo is distinguishable from a genuine gap in coverage."
Description, as the server wrote it Finds the runbook for a specific cloud waste pattern, filtered by provider, service, waste category or detection confidence. Useful before answering a specific waste or cost-fix question: each runbook includes a tested detection query the user can run in their own account, so it also serves questions about the user's own resources. Use this for questions like "which VMs are running for nothing", "why is our NAT bill so high", "my NAT gateway processes 10TB to S3", "should I delete these old snapshots", "which of our RIs are about to expire", "what waste can we clean up safely without review" - anything that names a provider, a waste category, or how confident the detection needs to be before acting. Patterns covered include NAT gateways and VPC endpoints, expiring Savings Plans / RIs / reservations, snapshot sprawl, S3 lifecycle gaps, idle or stopped VMs, orphaned disks / public IPs / EBS volumes, GPU and SageMaker sizing, Kubernetes idle capacity, and schedule blindness. All filters are optional and combine with AND semantics. String matching is case-insensitive and exact. Examples: - ``find_playbooks(scope="aws")`` - all AWS-specific playbooks - ``find_playbooks(waste_category="idle")`` - every idle-resource pattern - ``find_playbooks(scope="cross-cloud", confidence="obvious")`` Args: scope: ``"aws"``, ``"azure"``, ``"gcp"``, or ``"cross-cloud"``. service: Provider service exact-match (e.g. ``"AWS NAT Gateway"``). waste_category: ``"orphaned"``, ``"idle"``, ``"overprovisioned"``, ``"commitment-mismatch"``, ``"schedule-blindness"``, ``"modernization"``, ``"ai-ml-inefficiency"``, or ``"egress"``. confidence: ``"obvious"`` (single signal is enough), ``"likely"`` (two signals required), or ``"possible"`` (needs human review). From the OptimNow three-tier confidence model in `finops-waste-detection-playbooks`. Returns ``{"filters": {...}, "playbooks": [...], "total": N}``. A query that matches nothing also returns `hint` and `valid_values`, so a typo is distinguishable from a genuine gap in coverage.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
find_referencesFind which guidance serves a FinOps question - how to commit, size, allocate, charge back, forecast, or govern cloud and AI spend.1 finding
Why it is in this group
- The name "find_references" says "find": a word for reading.
Findings
- Info
The description is 2,154 characters long, over the 2,000 this check looks for.
What this check looks forMatched text
description ends: "...id_values`, so a typo is distinguishable from a genuine gap in coverage."
Description, as the server wrote it Find which guidance serves a FinOps question - how to commit, size, allocate, charge back, forecast, or govern cloud and AI spend. Use this for questions like "how should we size Savings Plans", "what should Finance own in chargeback", "what does a Crawl-stage org tackle first" - anything that maps to FinOps Framework facets (domain, capability, phase, persona, maturity) - and you want only the references that serve it, instead of scanning the full list. All filters are optional and combine with AND semantics. String matching is case-insensitive and exact (not substring). Examples: - ``find_references(domain="Optimize Usage & Cost")`` - ``find_references(phase="Optimize", persona="Engineering")`` - ``find_references(persona="Engineering", persona_primary_only=True)`` - ``find_references(capability="Rate Optimization")`` - ``find_references(maturity="Crawl")`` Args: domain: FinOps Framework domain (e.g. ``"Optimize Usage & Cost"``, ``"Quantify Business Value"``, ``"Manage the FinOps Practice"``). capability: FinOps capability (matches ``fcp_capability`` and ``fcp_capabilities_secondary``). phase: FinOps phase (``"Inform"``, ``"Optimize"``, ``"Operate"``). persona: Persona (matches ``fcp_personas_primary`` and ``fcp_personas_collaborating``). maturity: Entry maturity level (``"Crawl"``, ``"Walk"``, ``"Run"``). persona_primary_only: when True, ``persona`` matches only the primary list. Use it when the default match barely narrows the set - broad personas like Engineering collaborate on nearly every file, so filtering on collaboration is descriptive, not discriminating. ``persona="Engineering", persona_primary_only=True`` is the engineering reading list; the default is the everything-they-touch view. Returns ``{"filters": {...}, "references": [...], "total": N}``. A query that matches nothing also returns `hint` and `valid_values`, so a typo is distinguishable from a genuine gap in coverage.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_playbookFetch the step-by-step runbook for one specific waste pattern: symptoms, the detection queries to run, the fix, and the anti-pattern to avoid.No findings
Why it is in this group
- The name "get_playbook" says "get": a word for reading.
Description, as the server wrote it Fetch the step-by-step runbook for one specific waste pattern: symptoms, the detection queries to run, the fix, and the anti-pattern to avoid. Use this when the user asks how to detect, confirm, or fix one specific named waste pattern (zombie NAT gateway, snapshot sprawl, idle SageMaker endpoint, ...). It also serves questions about the user's own resources ("which of my X..."): the runbook's detection query is written to be run in the user's account, so the answer does not depend on access to that account. Args: name: Playbook slug as returned by ``list_playbooks`` (e.g. ``"aws-zombie-nat-gateway"``, ``"azure-orphan-disks"``, ``"cross-cloud-untagged-spend-drift"``). Returns ``{"name": ..., "title": ..., "content": "...", "lines": N}``. On miss, returns ``{"error": ..., "suggestions": [...]}`` with up to three string-distance matches so the caller can self-correct. A host with MCP Apps (SEP-1865) support may render this result via the linked ``ui://cloud-finops/playbook-viewer`` resource instead of showing the raw markdown.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
get_referenceFetch the guidance on one FinOps topic - the billing mechanics, decision rules and worked examples behind a defensible answer - either whole or one section at a time.1 finding
Why it is in this group
- The name "get_reference" says "get": a word for reading.
Findings
- Info
The description is 2,298 characters long, over the 2,000 this check looks for.
What this check looks forMatched text
description ends: "...vailable_sections`` - every heading in the file - so the retry is exact."
Description, as the server wrote it Fetch the guidance on one FinOps topic - the billing mechanics, decision rules and worked examples behind a defensible answer - either whole or one section at a time. Use this when you need the actual content of one known reference, after ``list_references`` or ``find_references`` told you which one serves the question. Advisory questions (commitment sizing, chargeback design, allocation methodology) are served by the reference's decision rules and worked examples, which a summary does not carry. Pass ``section`` when the question is narrower than the file. The ``approx_tokens`` hint in the listing tells you when this matters: the AWS pattern catalogue runs past 25,000 tokens and the pattern catalogues are enumerated lists, so a question about S3 lifecycle wants one section of ``finops-aws-patterns``, not all of it. Omit ``section`` for the whole file when you need the cross-cutting reasoning. Args: name: Reference name as returned by ``list_references`` (e.g. ``"finops-aws"``, ``"finops-genai-capacity"``, ``"optimnow-methodology"``). section: Optional H2 or H3 heading to return on its own. Matched case-insensitively and partially against the headings, so a natural phrase works - ``"storage"``, ``"commitment decision tree"``. A heading's trailing count is ignored, so ``"storage optimization patterns"`` matches ``"Storage Optimization Patterns (28)"``. If it matches nothing you get the list of available headings back, not the whole file. Without ``section``, returns ``{"name": ..., "content": "...", "lines": N}`` where ``content`` is the file verbatim. With ``section``, returns ``{"name", "title", "section", "section_level", "partial": true, "content", "lines", "full_lines"}`` where ``content`` is that section prefixed by the reference's title, plus ``other_matching_sections`` when the phrase matched more than one heading. On a miss, returns ``{"error": ..., "suggestions": [...]}``. An unknown name gives up to three string-distance matches; an unmatched ``section`` gives ``available_sections`` - every heading in the file - so the retry is exact.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_playbooksSee every ready-made runbook for finding and fixing cloud waste: idle, orphaned and overprovisioned resources, egress surprises, schedule blindness and AI/ML inefficiency across AW…No findings
Why it is in this group
- The name "list_playbooks" says "list": a word for reading.
Description, as the server wrote it See every ready-made runbook for finding and fixing cloud waste: idle, orphaned and overprovisioned resources, egress surprises, schedule blindness and AI/ML inefficiency across AWS, Azure and GCP. Use this to discover which waste patterns have a runbook. When the question already names a provider, waste category, or confidence tier, call ``find_playbooks`` instead. Each playbook is a small (~90-170 line) runbook scoped to one waste pattern (e.g. ``aws-zombie-nat-gateway``, ``azure-orphan-disks``). Returns ``{"playbooks": [...], "total": N}`` where each entry includes ``name``, ``title``, ``scope`` (aws/azure/gcp/cross-cloud), ``service``, ``waste_category``, ``confidence`` (obvious/likely/possible), and ``approx_tokens`` - the same size hint the reference listing carries, so a multi-playbook answer can be budgeted before fetching.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
list_referencesSee what FinOps guidance is available: billing mechanics, commitment strategy, allocation and chargeback, AI cost management, and per-provider cost handbooks (AWS, Azure, GCP, OCI,…No findings
Why it is in this group
- The name "list_references" says "list": a word for reading.
Description, as the server wrote it See what FinOps guidance is available: billing mechanics, commitment strategy, allocation and chargeback, AI cost management, and per-provider cost handbooks (AWS, Azure, GCP, OCI, Databricks, Snowflake, ...). Use this to discover what the library covers before deciding what to fetch. When the question already names a FinOps domain, phase, persona or maturity, call ``find_references`` instead of scanning this full list. Returns a dict shaped ``{"references": [...], "total": N}`` where each entry includes ``name``, ``title``, a one-line ``description``, the discriminating FCP facets (``fcp_domain``, ``fcp_capability``, ``fcp_phases``, ``fcp_personas_primary``, ``fcp_maturity_entry``) and ``approx_tokens``. Read ``approx_tokens`` before fetching: the library runs from about 2,000 to over 25,000 tokens per file. Above roughly 10,000, prefer ``get_reference(name, section=...)`` and pull the part you need.
Annotations the server declares
- readOnlyHint: true
- destructiveHint: false
- idempotentHint: true
- openWorldHint: false
This is not a safety rating, and no finding is not a safety guarantee. The groups and findings come from fixed checks of the tool definitions the server returned on the date shown, not from its code or what it does when called. How the checks work.
Install
Pinned to version 1.43.0. Values in angle brackets are yours to fill in.
claude mcp add --transport http cloud-finops https://mcp.optimnow.io/mcpRun in a terminal.
Claude Code permissions
Allow the reads, ask before a change, deny the deletes. Paste into .claude/settings.json.
{
"permissions": {
"allow": [
"mcp__cloud-finops__list_references",
"mcp__cloud-finops__get_reference",
"mcp__cloud-finops__find_references",
"mcp__cloud-finops__list_playbooks",
"mcp__cloud-finops__get_playbook",
"mcp__cloud-finops__find_playbooks"
],
"ask": [],
"deny": []
}
}Tools that only read are allowed, tools that change things ask first, tools that delete or cancel are denied. It assumes the server is installed as cloud-finops. Review it before you use it.
