Cloud FinOps Skill & MCP
Provides FinOps Foundation aligned knowledge for AI agents, covering cloud cost optimization for AWS, Azure, GCP, and OCI, AI inference economics, Kubernetes, data platforms, allocation, chargeback, anomaly management, waste detection, and GreenOps. It offers a hosted MCP server with read-only tools to list, search, and fetch reference runbooks.
Endpoint and access
No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.
https://mcp.optimnow.io/mcpWhat its tools do
7 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.
Checks and signals
Each line is separate evidence, not a trust score.
- Passed Endpoint answered the live check ·
- Availability 1 of 1 checks passed in 30 days
What you can do with it
- Optimize cloud costs across AWS, Azure, GCP, and OCI
- Analyze AI inference economics and spend
- Detect waste and manage anomalies in cloud resources
- Perform allocation and chargeback calculations
Source and maintenance
- Maintenance checked
Protocol and capabilities
- Server
- cloud-finops 1.49.1
- MCP protocol negotiated in check
- 2025-11-25
- Tools
- 7 advertised
- Resources
- 6 advertised
- Resource templates
- 0 advertised
- Prompts
- 0 advertised
{
"tools": {
"listChanged": false
},
"prompts": {
"listChanged": false
},
"resources": {
"subscribe": false,
"listChanged": false
},
"experimental": {}
}Server-provided instructions
Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.
Tools
7 advertised
list_references — Browse the FinOps knowledge library
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. 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.
{
"type": "object",
"title": "list_referencesArguments",
"properties": {}
}{
"type": "object",
"title": "list_referencesDictOutput",
"additionalProperties": true
}{
"title": "Browse the FinOps knowledge library",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_reference — Read one FinOps guide
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. ``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_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.
{
"type": "object",
"title": "get_referenceArguments",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
},
"section": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Section",
"default": null
}
}
}{
"type": "object",
"title": "get_referenceDictOutput",
"additionalProperties": true
}{
"title": "Read one FinOps guide",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}find_references — Find the right FinOps guide
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. Useful 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.
{
"type": "object",
"title": "find_referencesArguments",
"properties": {
"phase": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Phase",
"default": null
},
"domain": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Domain",
"default": null
},
"persona": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Persona",
"default": null
},
"maturity": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Maturity",
"default": null
},
"capability": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Capability",
"default": null
},
"persona_primary_only": {
"type": "boolean",
"title": "Persona Primary Only",
"default": false
}
}
}{
"type": "object",
"title": "find_referencesDictOutput",
"additionalProperties": true
}{
"title": "Find the right FinOps guide",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}list_playbooks — Browse the cloud waste runbooks
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, ``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.
{
"type": "object",
"title": "list_playbooksArguments",
"properties": {}
}{
"type": "object",
"title": "list_playbooksDictOutput",
"additionalProperties": true
}{
"title": "Browse the cloud waste runbooks",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_playbook — Read one waste runbook
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, ...), 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. 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.
{
"type": "object",
"title": "get_playbookArguments",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"title": "Name"
}
}
}{
"type": "object",
"title": "get_playbookDictOutput",
"additionalProperties": true
}{
"title": "Read one waste runbook",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}find_playbooks — Find a waste runbook
Finds 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 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.
{
"type": "object",
"title": "find_playbooksArguments",
"properties": {
"scope": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Scope",
"default": null
},
"service": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Service",
"default": null
},
"confidence": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Confidence",
"default": null
},
"waste_category": {
"anyOf": [
{
"type": "string"
},
{
"type": "null"
}
],
"title": "Waste Category",
"default": null
}
}
}{
"type": "object",
"title": "find_playbooksDictOutput",
"additionalProperties": true
}{
"title": "Find a waste runbook",
"readOnlyHint": true,
"openWorldHint": false,
"idempotentHint": true,
"destructiveHint": false
}get_live_figures — Current figures from an OptimToken guide
Get 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) returns ``{"error", "fallback"}``: the dated figure in the reference then stands, quoted with its date.
{
"type": "object",
"title": "get_live_figuresArguments",
"required": [
"guide"
],
"properties": {
"guide": {
"type": "string",
"title": "Guide"
}
}
}{
"type": "object",
"title": "get_live_figuresDictOutput",
"additionalProperties": true
}{
"title": "Current figures from an OptimToken guide",
"readOnlyHint": true,
"openWorldHint": true,
"idempotentHint": true,
"destructiveHint": false
}Prompts
0 advertised
Resources
6 advertised
Playbook viewer
MCP Apps UI resource linked from ``get_playbook``. Self-contained HTML/JS that renders the tool result's markdown as labelled sections (Problem / Symptoms / Detection / Fix / Anti-pattern / See also) inside the sandboxed iframe the host provides. v2 adds a Copy button on every code block, a checkable Fix checklist (local state only), and clickable ``playbooks/<slug>.md`` See-also links that reload the viewer via an app-initiated ``get_playbook`` call.
ui://cloud-finops/playbook-viewerPlaybook explorer
MCP Apps UI resource linked from ``list_playbooks`` and ``find_playbooks``. Card grid over the returned playbooks with client-side facet filters (scope, waste category, confidence - values derived from the data), a coverage-matrix tab (waste_category x scope counts; a zero cell is a visually distinct coverage gap), and an inline playbook panel opened via an app-initiated ``get_playbook`` call. One resource serves both tools because a tool declares a single ``ui.resourceUri``.
ui://cloud-finops/playbook-explorerReference browser
MCP Apps UI resource linked from ``list_references`` and ``find_references``. Dropdown row over the five FCP facets (values derived from the data), live-filtered list of references (title + one-line description), and a minimal-markdown reading panel fed by an app-initiated ``get_reference`` call.
ui://cloud-finops/reference-browserPlaybook viewer (apps-sdk)
Apps-sdk variant of the playbook viewer widget.
ui://cloud-finops/apps-sdk/playbook-viewerPlaybook explorer (apps-sdk)
Apps-sdk variant of the playbook explorer widget.
ui://cloud-finops/apps-sdk/playbook-explorerReference browser (apps-sdk)
Apps-sdk variant of the reference browser widget.
ui://cloud-finops/apps-sdk/reference-browser90-day uptime
A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.
- 2026-11-07: 1 of 1 checks answered
30-day availability
Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.
- Successful checks
- 1 of 1 (100%)
- Average latency
- 1312 ms
- 95th percentile latency
- 1312 ms
Maintenance history
Public check and source-refresh events. Editorial and ownership records remain private.
- · probe · passed · 1312 ms · metadata changed · 7 tool(s), 6 resource(s), 0 resource template(s), 0 prompt(s)
Connect from your client
Each snippet registers the same endpoint; pick the client you use.
Claude Code
claude mcp add --transport http cloud-finops-skill-mcp-optimnow https://mcp.optimnow.io/mcpCodex
codex mcp add cloud-finops-skill-mcp-optimnow --url https://mcp.optimnow.io/mcpCursor
{
"mcpServers": {
"cloud-finops-skill-mcp-optimnow": {
"url": "https://mcp.optimnow.io/mcp"
}
}
}Cline
{
"mcpServers": {
"cloud-finops-skill-mcp-optimnow": {
"type": "streamableHttp",
"url": "https://mcp.optimnow.io/mcp",
"disabled": false
}
}
}VS Code
{
"servers": {
"cloud-finops-skill-mcp-optimnow": {
"type": "http",
"url": "https://mcp.optimnow.io/mcp"
}
}
}Gemini CLI
gemini mcp add --transport http cloud-finops-skill-mcp-optimnow https://mcp.optimnow.io/mcpClaude Desktop
https://mcp.optimnow.io/mcpWindsurf
{
"mcpServers": {
"cloud-finops-skill-mcp-optimnow": {
"serverUrl": "https://mcp.optimnow.io/mcp"
}
}
}Let your agent find its tools
Find servers like Cloud FinOps Skill & MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.