Cloud FinOps Skill & MCP
io.github.OptimNow/cloud-finopsVersion 1.52.0Cloud cost + FinOps knowledge for AI agents: AWS/Azure/GCP optimisation, AI spend, waste playbooks.
Status
Responds207 msAnswered our handshake without sign-in.- Last checked
- Nov 14, 2026, 14:41 UTC
- Latency
- 207 ms
- Remotes responding
- 1 of 1
- Sign-in
- No sign-in
- Hosting
- Hosted outside the EU (detected)
- Registry data as of
- Nov 14, 2026, 21:12 UTC
Data from the official MCP Registry, checked by run.zero. How we check
Connect
Streamable HTTP
https://mcp.optimnow.io/mcpResponds207 msNo sign-in
Claude Code
claude mcp add --transport http cloud-finops https://mcp.optimnow.io/mcpClaude Desktop and claude.ai
Settings > Connectors > Add custom connector
Name: cloud-finops
Remote MCP server URL: https://mcp.optimnow.io/mcpCursor
{
"mcpServers": {
"cloud-finops": {
"url": "https://mcp.optimnow.io/mcp"
}
}
}VS Code
code --add-mcp '{"name":"cloud-finops","type":"http","url":"https://mcp.optimnow.io/mcp"}'Streamable HTTP
pypi: cloud-finops-mcp 1.52.0Package only
PyPI (uvx)
claude mcp add cloud-finops -- uvx cloud-finops-mcp==1.52.0Built your own server? run.zero hosts MCP servers on European infrastructure.
Tools
7 tools
Read-only | Idempotent | Open world | ||
|---|---|---|---|---|
find_playbooksFinds runbooks for a suspected cloud-waste pattern, filterable by
provider, service, waste category or detection confidence. Useful when
the user asks how to detect or fix a specific waste pattern; each
runbook includes a detection query the user can run in their own
account. This connector has no access to the user's accounts.
Use this with ``query`` for a symptom or a "which of my X" question in
the user's own words: "our AWS bill has NAT gateway charges but nothing
uses them", "which of my RIs are about to expire", "my NAT gateway
processes 10TB to S3", "should I delete these old snapshots", "our Log
Analytics ingestion doubled", "which VMs are running for nothing",
"passerelle NAT qui ne sert à rien". Every runbook declares the
questions it answers (English and French); the result is ranked by
those, then by title and service, and carries ``matched_question``; the
first entry is the one ``get_playbook(name=)`` fetches. Facets narrow
the set first; ``query`` ranks what is left.
Use this with the facets alone to browse: "what waste can we clean up safely
without review" (confidence), "every idle pattern on Azure" (scope and
waste category). 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(query="which of my RIs are about to expire")`` - ranked runbooks
- ``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:
query: the user's symptom or qu | No | Yes | Yes | No |
find_referencesFind which guidance serves a FinOps question - how to commit, size,
allocate, charge back, forecast, or govern cloud and AI spend.
Use this with ``query`` for a question in the user's own words rather
than in FinOps Framework terms: "how should we size our first Savings
Plan when usage is seasonal", "we hold SQL Server licences with Software
Assurance, BYOL or licence-included?", "our forecast missed by 20%",
"who should own commitment purchases", "combien s'engager en Savings
Plans". Every guide declares the questions it answers (English and
French); the result is ranked by those, then by title and section
headings, and each entry carries ``matched_question`` and
``suggested_section``, the heading that ``get_reference(name=,
section=)`` takes. The facets narrow the set first; ``query`` ranks what
is left.
Use this with the facets alone for a question already in FinOps
Framework terms (domain, capability, phase, persona, maturity): "what
does a Crawl-stage org tackle first", "the Engineering reading list",
"what should Finance own in chargeback".
All filters are optional and combine with AND semantics. Facet matching
is case-insensitive and exact (not substring). Examples:
- ``find_references(query="our forecast missed by 20%, was it the model or the drivers")``
- ``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:
query: the user's question or symptom in their own words, up to
1,000 characters, English or French. Ranks the facet-filtered guides by
the questions they declare, their title and their headings;
returns at most five, best first, each with ``match_score``,
``matched_ | No | Yes | Yes | No |
get_live_figuresGet the current value of a figure a reference quotes with a date.
Use this when a reference quotes a figure from an OptimToken guide
("measured on the 2026-10-25 OptimToken catalogue") and the answer needs
the current value: the Compute Savings Plan or reservation discount, the
gap between a flexible and a locked commitment, the ARM discount against
Intel and AMD, the share of LLM models with a batch rate. It fetches the
guide's figures file, rebuilt daily, and returns it as published.
Args:
guide: The guide slug, lowercase letters, digits and hyphens. Guides
with figures today: ``"savings-plans-vs-reserved-instances"``,
``"arm-against-x86"``, ``"batch-api-economics"``.
Returns ``{"document": {...}, "fetched_at": ..., "source": "live" |
"cached", "note": ...}``, plus ``cache_age_seconds`` when cached (six-hour
cache). ``document`` is the file unchanged: ``guide``, ``title``,
``url``, ``dataSource``, ``snapshotDate`` (the catalogue the figures come
from), ``dateModified`` and ``figures``, where discounts are fractions
(0.2743 is 27.4%) and each key names a median, a range or a count.
An unknown slug returns ``{"error", "available_guides", "suggestions"}``.
Any other failure (timeout, HTTP error, invalid JSON, a file that is not
figures and short labels) returns
``{"error", "fallback"}``: the dated figure in the reference then stands,
quoted with its date.
| No | Yes | Yes | Yes |
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.
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, ...), including questions about the user's own resources
("which of my X..."). Each runbook includes a detection query the user
can run in their own cloud account; this connector has no access to the
user's accounts.
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.
| No | Yes | Yes | No |
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.
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.
``section`` is useful when the question is narrower than the file. The
``approx_tokens`` hint in the listing shows when this matters: the
largest references run to about 15,000 tokens and the Azure pattern
catalogue is an enumerated list, so a question about storage lifecycle is
served by one section of ``finops-azure-patterns``. Without ``section``
the whole file comes back, with its 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_sect | No | Yes | Yes | No |
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 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,
``find_playbooks`` returns only the matching runbooks.
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.
| No | Yes | Yes | No |
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, Databricks, Snowflake, ...).
Use this to discover what the library covers. When the question already
names a FinOps domain, phase, persona or maturity, ``find_references``
returns only the matching references.
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``.
``approx_tokens`` gives each file's size before it is fetched: the library
runs from about 2,000 to about 15,000 tokens per file, and
``get_reference(name, section=...)`` returns one section of a large one.
| No | Yes | Yes | No |
Details
- Registry status
- Active
- Published
- Nov 14, 2026
- Updated
- Nov 14, 2026
- Website
- Not given
- Categories (suggested)
- Cloud and infrastructureSuggested categories are assigned automatically from the registry text and may be wrong. Verified operators can correct them.
- GDPR
- Not declared