Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Unofficial MCP server for the FinOps Framework: phases, domains, capabilities, maturity, KPIs.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
FINOPS_MCP_DATAYou need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"finops-framework": {
"command": "npx",
"args": [
"-y",
"finops-framework-mcp"
],
"env": {
"FINOPS_MCP_DATA": "your-value"
}
}
}
}Run this in your terminal
claude mcp add finops-framework --env FINOPS_MCP_DATA=your-value -- npx -y finops-framework-mcpFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"finops-framework": {
"command": "npx",
"args": [
"-y",
"finops-framework-mcp"
],
"env": {
"FINOPS_MCP_DATA": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"finops-framework": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"finops-framework-mcp"
],
"env": {
"FINOPS_MCP_DATA": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
FINOPS_MCP_DATA envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 7, 2026
The registry name was verified with the GitHub account aaronmsoto, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
The registry does not list a required key, though some servers ask you to sign in on first use.
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (0.2.0) reached the registry 17 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: Spec Driven Development, Remote Desktop Commander, AvaHR
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Read hiring data and create inactive assessment and questionnaire drafts for human review.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
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 |
|---|---|---|
| finops-framework-mcp | The FinOps Framework: capabilities, Crawl/Walk/Run maturity, KPIs, personas | finops.org/framework |
| finops-focus-mcp | The FOCUS billing-data specification, pinned per version (1.0, 1.2) | focus.finops.org |
| tokenomics-overview-mcp | AI tokenomics: the Seven-Layer Stack, Big-T notation, prompt-cache metrics, consumption levers incl. model routing, FOCUS 1.5 AI cost | tokeneconomics.com |
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.
[aaronmsoto.github.io/finops-framework-mcp](https://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.
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:
official: false).FINOPS_MCP_EXPERIMENTAL=1.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-mcp
Claude 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 |
|---|---|---|
FINOPS_MCP_DATA | framework | Use a locally refreshed artifact instead of the packaged data/framework |
FOCUS_MCP_DATA | FOCUS | Same, for data/focus |
TOKENOMICS_MCP_DATA | tokenomics | Same, for data/tokenomics |
FINOPS_MCP_EXPERIMENTAL=1 | framework, tokenomics | Turn on clearly labeled unofficial extras: the framework's parsed maturity get_actions, the tokenomics crosswalk |
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).
Start a session with each server's entry point, then follow its suggestions:
| Server | Start with | Then |
|---|---|---|
| framework | get_framework_info {} | search_framework, list_capabilities, get_capability (with include to control size), get_kpis, assess_maturity_path |
| FOCUS | list_versions {} | search_focus, get_column, get_requirements, compare_versions, get_kpi_mapping, calculate_kpi |
| tokenomics | get_tokenomics_info {} | list_layers, get_bigt_notation, list_levers, get_metric, calculate_cache_metrics, get_crosslinks |
Questions each one answers well:
BilledCost mean in 1.2, and what changed since 1.0?", "Which columns do I need to compute Effective Savings Rate?"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.
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 — plus finops://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.focus://spec/… resources and 3 prompts. See packages/finops-focus-mcp.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. See packages/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.
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).
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/ data/ / src/servers/
for 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/ /, 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.
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/tokenomics
Crawls 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.yml
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 chang
Only the beginning is shown; read the rest in the repo