finops-framework-mcp
This server provides structured, sourced access to the official FinOps Framework for AI assistants.
Orient to the framework structure, data version, crawl date, license, and tool navigation.
Search all framework entities and discover slugs, titles, snippets, and resource URIs.
List and retrieve the 22 capabilities, with optional sections for definitions, maturity, activities, KPIs, and inputs/outputs.
Retrieve official Crawl/Walk/Run maturity assessments and assess the gap between two maturity levels.
Get the broader maturity model, including official level characteristics and sample goals/KPIs.
Query the 88-entry KPI library, including descriptions, formulas, data sources, related capabilities, and featured locations.
Map personas to capabilities, capabilities to personas, and discover the full persona index.
Read full text for principles, phases, domains, technology categories, scopes, and individual personas.
Review the data changelog and retained refresh history.
Use it read-only and offline once installed, with source URLs, licenses, and finops:// resource URIs attached to responses.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@finops-framework-mcp assess our allocation capability maturity"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
finops-framework-mcp
Three unofficial MCP servers that give AI assistants a structured, sourced interface to published FinOps and AI-cost guidance, so an assistant answers with the publishers' actual text and formulas instead of improvising:
Server | Covers | Source |
The FinOps Framework: capabilities, Crawl/Walk/Run maturity, KPIs, personas | ||
The FOCUS billing-data specification, pinned per version (1.0, 1.2) | ||
AI tokenomics: the Seven-Layer Stack, Big-T notation, prompt-cache metrics, consumption levers incl. model routing, FOCUS 1.5 AI cost |
All three are read-only (an agent can read guidance, never change your practice or data) and offline once installed (no network access at runtime, no telemetry). Use any one on its own; together they cover what good looks like, which billing columns prove it, and what drives AI token cost.
Start here: the usage guide
aaronmsoto.github.io/finops-framework-mcp is a free, no-install walkthrough written for FinOps practitioners as much as engineers. It explains what each server does, connects them to Claude in a couple of minutes, and works through five examples, from a showback report to whether prompt caching is paying off. Every number and quote in it comes from a real run of these servers. See Documentation for the page list.
Related MCP server: cloud-finops-mcp
Why this exists
Ask an AI assistant "how mature is our Allocation practice?", "which FOCUS columns feed Effective Savings Rate?" or "is our prompt caching paying off?" without these servers, and it will happily improvise a plausible answer. With them, every response is the publisher's own text and formulas, structured for an assistant to read, with the source URL and license attached.
Anything a server had to work out itself is labeled, never passed off as published guidance:
The FOCUS server's KPI-to-column mapping, computed KPI values and cross-version diff are marked UNOFFICIAL (
official: false).The tokenomics server states each source's publication status on every answer, because most Tokenomics Foundation guidance is a working draft or release candidate. Its curated crosswalk is unofficial and only appears with
FINOPS_MCP_EXPERIMENTAL=1.The framework server is official-only out of the box: no invented relationships between capabilities, no maturity levels beyond the Foundation's Crawl/Walk/Run.
Quickstart
All three are on npm, so there is nothing to clone or build. Each package ships its own data and runs offline. Node >= 22 is the only requirement.
npx -y finops-framework-mcp
npx -y finops-focus-mcp
npx -y tokenomics-overview-mcp(-y skips npx's first-run install prompt, which can hang non-interactive
MCP clients. Pin a version with, for example, npx -y finops-focus-mcp@0.2.)
Claude Code:
claude mcp add finops-framework -- npx -y finops-framework-mcp
claude mcp add focus-spec -- npx -y finops-focus-mcp
claude mcp add tokenomics-overview -- npx -y tokenomics-overview-mcpClaude Desktop (claude_desktop_config.json), or a project-scoped
.mcp.json, or any stdio MCP client:
{
"mcpServers": {
"finops-framework": {
"command": "npx",
"args": ["-y", "finops-framework-mcp"]
},
"focus-spec": {
"command": "npx",
"args": ["-y", "finops-focus-mcp"]
},
"tokenomics-overview": {
"command": "npx",
"args": ["-y", "tokenomics-overview-mcp"]
}
}
}Environment variables (all optional):
Variable | Server | Effect |
| framework | Use a locally refreshed artifact instead of the packaged |
| FOCUS | Same, for |
| tokenomics | Same, for |
| framework, tokenomics | Turn on clearly labeled unofficial extras: the framework's parsed maturity |
Each server also accepts the data directory as its first CLI argument, and
answers --version with its package version plus its data version (FOCUS:
the spec versions it serves).
How to use them
Start a session with each server's entry point, then follow its suggestions:
Server | Start with | Then |
framework |
|
|
FOCUS |
|
|
tokenomics |
|
|
Questions each one answers well:
Framework: "What does Walk-level Forecasting require?", "Which KPIs does the Foundation feature for Rate Optimization?", "Who does what in Anomaly Management?"
FOCUS: "What does
BilledCostmean in 1.2, and what changed since 1.0?", "Which columns do I need to compute Effective Savings Rate?"Tokenomics: "Which layer owns model routing and AI gateways?", "How does this agent's token use scale with autonomy?", "Our cache read, write and uncached input tokens were X, Y, Z: is caching saving money?"
Using them together. The servers ship separately and never call each
other. Instead, answers hand off by URI: each of the tokenomics server's 35
get_crosslinks links is backed by a verbatim quote from the Tokenomics
Foundation page, and carries a finops://framework/… or focus://spec/… URI
for the agent to read with the other two servers. FOCUS 1.5 working-draft
names, which no ratified release contains yet, come back with no URI. The
prompt-caching example
walks one question through all three.
Server surfaces
finops-framework-mcp: 11 tools —
get_framework_info(entry point),search_framework,list_capabilities,get_capability,get_maturity_assessment,get_kpis,assess_maturity_path,map_personas,get_entity,get_maturity_model,get_changelog— plusfinops://framework/…resources and 4 prompts (explain-framework,assess-capability-maturity,plan-maturity-roadmap,map-personas-to-capabilities). Data: 6 Principles, 3 Phases, 4 Domains, 22 Capabilities, 11 Personas, 5 Technology Categories, the Scopes concept, and an 88-entry KPI library.finops-focus-mcp: 9 tools for column and attribute lookup, normative requirements, search, the 1.0 → 1.2 diff, and unofficial KPI-to-column mappings with sample-data KPI calculation, plus
focus://spec/…resources and 3 prompts. Seepackages/finops-focus-mcp.tokenomics-overview-mcp: 20 tools across documents, the Seven-Layer Stack, Big-T notation, levers, metrics (with a cache-metrics calculator), personas, value classification, the FOCUS 1.5 AI-cost capabilities and cross-links, plus
tokenomics://overview/…resources and 3 prompts (optimize_consumption,assess_prompt_caching,bigt_review). Data: 14 source documents, 7 layers, 6 Big-T classes, 32 levers, 7 metrics, 12 personas, 35 stated cross-links. Seepackages/tokenomics-overview-mcp.
The full prompts, resources and tools of all three servers (names, arguments,
URIs, defaults and limits) are generated from live MCP output in
docs/mcp-surface.md.
Remote option: the Cloudflare Worker
All three servers can also run over Streamable HTTP from one bundled
Cloudflare Worker (src/workers/, endpoints /mcp/framework, /mcp/focus
and /mcp/tokenomics; see docs/deploy-worker.md).
Any MCP client that speaks Streamable HTTP can connect to a deployed Worker,
for example:
claude mcp add --transport http tokenomics-overview "$WORKER_URL/mcp/tokenomics"The Worker is stateless and serves each server's default surface (no
experimental tools). demo/ is a static browser page with two
walkthroughs through it: "Is prompt caching paying off?" (all three servers,
on your own token counts) and Rate Optimization (framework and FOCUS).
How it's built
Every server is the same three decoupled parts, so a content refresh never needs a code change:
crawler ──▶ data artifact ──▶ MCP server (stdio)
src/crawlers/<name> data/<name>/ src/servers/<name>for <name> in framework, focus and tokenomics. The framework and
tokenomics crawlers go fetch → parse → compose → derive → validate → emit:
content/markdown/ is the canonical intermediate, composed from parsed
HTML, and every JSON file is regenerated from it by an offline derive step,
so a schema or JSON-only fix never needs a re-crawl. Their artifacts carry
JSON Schemas and a sha256 manifest, and each server validates its artifact at
startup and refuses to start on a bad one. The FOCUS crawler instead ingests
each pinned spec release by git tag into data/focus/<version>/, with the
derived diff and KPI mapping under data/focus/derived/.
The framework server's early capability relationship graph
(get_prerequisites/get_related) was built, evaluated and deleted
because its edges didn't clear the accuracy bar; see
.agents/specs/v1-official-only.md.
Refreshing the data
npm run build
npm run refresh # framework: crawl → artifact + diff report
node dist/crawlers/focus/cli.js # FOCUS: ingest the pinned spec tags (1.0, 1.2)
node dist/crawlers/tokenomics/cli.js refresh # tokenomics: Tokenomics Foundation pages
node dist/crawlers/framework/cli.js derive # framework: offline markdown → JSON, byte-identical
node dist/crawlers/tokenomics/cli.js derive # tokenomics: same, for data/tokenomicsCrawls are polite, cached and robots-honoring. No upstream changes produce a
byte-identical artifact and no version bump; content changes produce a
changelog entry and a semver bump of the data version. The tokenomics refresh
also lists pages it found but doesn't ingest (for example working-group
drafts) under unregistered in its manifest. A scheduled refresh workflow is
provided at docs/proposed/refresh-data.yml; .github/workflows/ is a
protected path here, so the owner installs it:
git mv docs/proposed/refresh-data.yml .github/workflows/refresh-data.ymlData versioning policy
Consumers pin a data version by pinning a package version or a git ref of
this repo. Each manifest.json carries data_version, schema_version,
crawled_at, per-file sha256 and entity counts; derived/changelog.json
records what changed between versions (served by the framework server as
get_changelog). Schema-breaking changes bump schema_version and require a
server release. Releases are cut from a v* tag; see
docs/release-runbook.md.
License and attribution
Code: MIT (see LICENSE). Content, each CC BY 4.0, restructured and
adapted — see NOTICE.md for the required attribution and
modification notices:
data/framework/**: © FinOps Foundationdata/focus/**: © FinOps Foundation / FOCUS project contributorsdata/tokenomics/**: © Tokenomics Foundation (a Series of LF Projects, LLC)
FinOps™, FinOps Foundation™ and FOCUS™ are trademarks of the FinOps Foundation. This project is independent and not affiliated with or endorsed by the FinOps Foundation, the FOCUS project, or the Tokenomics Foundation.
Documentation
docs/guide/ is the usage guide: nine
self-contained pages in which every number, quote and transcript was captured
from a live probe of these servers or computed from the committed sample
data. It is also the published site: .github/workflows/pages.yml deploys
docs/guide/, and only that directory, to
https://aaronmsoto.github.io/finops-framework-mcp/ on every push to main
that touches it (setup and smoke test in
docs/deploy-pages.md).
Page | What it covers |
All three servers side by side; install, Claude Code / Claude Desktop / | |
Data model, all 11 tools grouped by job, prompts and resources, pagination, an Anomaly Management demo | |
Version model, all 9 tools, | |
Sources and their status, the Seven-Layer Stack and Big-T, all 20 tools, prompts, | |
Allocation + Reporting & Analytics → the FOCUS columns a showback needs → a report computed from the official sample | |
Capability → featured KPIs → FOCUS columns at 1.0 vs 1.2 → Effective Savings Rate on the official sample | |
A maturity journey to Walk-level Forecasting: official Crawl/Walk characteristics, KPIs, and the data that feeds a forecast | |
Four unscripted live prompts in one session across the framework and FOCUS servers | |
All three servers: the framework's Cache Hit Rate KPI → the Tokenomics formula and calculator on two workloads → where cached-token data lives in FOCUS 1.2 and 1.5 |
Every page opens over file:// too; the guide has no external assets. Guide
pages are rich HTML by design, an intentional exception to this repo's
markdown-for-docs convention recorded in .agents/memory/decisions.md.
Development
Agent instructions: AGENTS.md · design:
docs/architecture.md(adversarial reviews:docs/critique-1.md,docs/critique-2.md,docs/critique-3-publish-gate.md,docs/critique-4-focus-gate.md,docs/final-status-review.md) · tokenomics design:docs/designs/tokenomics-overview-mcp.htmlGates:
./scripts/agentic gates· tests:npm test(fixture-based, no network) · evals:evals/framework/(docs/eval-results.md)Working in a clone: the checked-in
.mcp.jsonloads all three servers into MCP clients that read it, running the published packages vianpxso a fresh clone works with no build. To exercise your working tree instead,cp .mcp.json.example .mcp.jsonand build first (dist/is gitignored), then restart the client; clients read MCP config only at startup. See CONTRIBUTING.md.Releasing:
docs/release-runbook.md.
Available Tools
11 toolsassess_maturity_pathMaturity gap between two levelsARead-onlyIdempotent
For one capability, the official maturity assessment text at each level between current and target — evidence to look for when maturing. To get one level's assessment text on its own (or all three at once), use get_maturity_assessment instead.
Inputs: capability (required), target_level (required), current_level (required). Returns: gap, capability
get_capabilityGet one capabilityARead-onlyIdempotent
One capability's content, section-selectable via include to control size. Default include is [summary, definition] (~1-2k tokens). Approximate extra cost per section: maturity ~2.5k tokens, activities ~3k (filter with persona), kpis ~1k, headline_groups/inputs_outputs <1k; requesting ALL sections is roughly 7k tokens — prefer the finops://framework/capabilities/{slug} resource for the full document.
Inputs: capability (required), include, persona. Returns: uri, slug, title, domain, +3 more
get_changelogData changelogARead-onlyIdempotent
What changed between data versions of this server's crawled artifact (rolling window of the 20 most recent refreshes — the crawler caps the log at 20, so this tool covers the full retained history; the same data is at finops://framework/meta/changelog). Reflects crawl-to-crawl differences in finops.org content, not a Foundation-published changelog.
Inputs: limit. Returns: entries, current_version
get_entityGet full text of a small framework entityARead-onlyIdempotent
Full rendered markdown for entity types that have no dedicated tool. Required param: entity_type (principles | phases | domains | technology-categories | scopes | persona). Collections return whole (they are small); entity_type 'persona' also needs slug. For capabilities use get_capability; for KPIs get_kpis; for maturity levels get_maturity_model.
Inputs: entity_type (required), slug. Returns: uri, slug, markdown, entity_type
get_framework_infoFramework & server orientationARead-onlyIdempotent
Start here. Returns the framework's structure (entity counts), the data version/crawl date/license, and how to navigate this server's tools. No parameters.
Inputs: no named parameters. Returns: counts, license, crawled_at, overview_md, +1 more
get_kpisGet KPIs (full records)ARead-onlyIdempotent
Full KPI records: description, formula + candidate data sources (present for the 44 KPIs the site details in capability-page popups), official related capabilities, and where each is featured. Look up one KPI with slug, or filter by capability and/or featured_only — filters combine (AND), so a slug that doesn't match the capability filter returns zero records. Without filters, pages through the whole 88-entry library.
Inputs: slug, limit, cursor, capability, +1 more. Returns: kpis, total, nextCursor
get_maturity_assessmentGet official maturity assessmentARead-onlyIdempotent
The official FinOps Framework maturity assessment prose for a capability, verbatim, at one level (crawl|walk|run) or all three. This is the Foundation's published assessment text, not a parsed breakdown.
Inputs: capability (required), level. Returns: levels, capability
get_maturity_modelGet the maturity modelARead-onlyIdempotent
The official FinOps maturity model: Crawl/Walk/Run with each level's characteristics and the community's sample goals/KPIs (e.g. allocation coverage targets per level). Capability-agnostic — for one capability's per-level assessment use get_maturity_assessment.
Inputs: no named parameters. Returns: official_levels, unofficial_extension
list_capabilitiesList capabilitiesARead-onlyIdempotent
All 22 capabilities (slug, title, domain, one-line summary), optionally filtered by domain and/or persona (both take a slug, e.g. domain="understand-usage-and-cost", persona="finance"). The framework does not assign capabilities to phases, so there is deliberately no phase filter. Default limit returns the full list in one call.
Inputs: limit, cursor, domain, persona. Returns: note, total, nextCursor, capabilities
map_personasPersona ↔ capability mappingARead-onlyIdempotent
With persona: every capability that persona works in, WITH that persona's activity bullets inline (one call answers 'what does X do across the framework'). With capability: every persona active in it, with activities. With neither: the full persona index (slugs, categories) — use it to discover persona slugs. Passing both is an error — pick one direction per call. Allied personas are mapped at group level by the framework; responses say so explicitly.
Inputs: persona, capability. Returns: mode, note, entries, license, +1 more
search_frameworkSearch the frameworkARead-onlyIdempotent
Ranked keyword search over every entity (capabilities, KPIs, personas, principles, phases, domains, technology categories, maturity levels, scopes). Returns slug + uri per hit. Feed the slug to get_kpis(slug: …), or pass it as capability: <slug> to get_capability/get_maturity_assessment/assess_maturity_path/map_personas and as persona: <slug> where a persona filter is accepted. Other entity types (principles, phases, domains, technology categories, scopes) are read via get_entity(entity_type: …) or the hit's finops:// resource uri. Use this whenever you don't already know a slug.
Inputs: query (required), limit, cursor, entity_types. Returns: total, results, nextCursor
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 11 tools
Most tools target distinct entity types or actions, and descriptions explicitly steer users (e.g., get_maturity_assessment vs assess_maturity_path vs get_maturity_model). The maturity trio has some conceptual overlap, but the prose clarifies when to use each.
All names use consistent snake_case with clear verb_noun structure (get_*, list_*, search_*, assess_*, map_*). The pattern is predictable across the entire tool set.
11 tools is well within the ideal 3-15 range for a multi-entity framework browser. Each tool corresponds to a distinct entity type or workflow, with no excessive fragmentation.
The surface covers discovery, capabilities, KPIs, personas, maturity assessment/path/model, generic entities (principles, phases, domains, technology categories, scopes), and changelog. This is comprehensive read-only coverage for the FinOps Framework domain.
Maintenance
Related MCP Connectors
Cloud cost + FinOps knowledge for AI agents: AWS/Azure/GCP optimisation, AI spend, waste playbooks.
FinOps assistant: query AWS, GCP and Azure cost, commitments, budgets and reports.
Your organization's knowledge as OKF trees in Git, for AI assistants to search, read, and cite
Query your team's drift, vulnerability, and upgrade data from any AI assistant. OAuth 2.1, 51 tools.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceEnables AI assistants to query multi-cloud cost and usage data through a uniform read-only toolset, including cost summaries, trends, budgets, forecasts, and optimization recommendations.MIT
- AlicenseAqualityAmaintenanceEnables MCP-compatible AI clients to retrieve FinOps-aligned knowledge and runbooks on demand, covering cloud cost optimization across AWS, Azure, GCP, and OCI, AI inference economics, Kubernetes, data platforms, allocation, chargeback, anomaly management, and waste detection.766CC BY-SA 4.0
- FlicenseNot gradedqualityAmaintenanceEnables AI assistants to analyze AWS cloud costs, audit for waste, monitor budgets, and generate FinOps reports using natural language across multiple AWS profiles and regions, while keeping credentials on the local machine.-
- AlicenseNot gradedqualityCmaintenanceEnables an AI assistant to retrieve IT system status and search or rebuild a vector-indexed knowledge base of operational runbooks. It supports local, tool-grounded responses over stdio for Ollama-based agents, helping prevent hallucinated IT operations guidance.MIT