MCP server: One MCP server.

Costory FinOps MCP

@costoryRun by its publisher: served from their own domain, namespace checked by the registry.MCP server · External

FinOps agent MCP: allocated AWS, GCP, Azure, Kubernetes, SaaS & AI cost for Claude or any agent

Cloud cost managementv1.0.1Apache-2.0
Freeno charge per call

One address for any MCP client. You sign in at clerk.costory.io once, after adding it.

What it does

  1. Reads
  2. Writes
  3. High impact

At most: creates or changes data: records, files, settings.

What it costs

Free

Odel charges nothing per call. The publisher may charge for its own service.

What it asks for at sign-in

Access toReadChange
Email address
Profile

From the sign-in at clerk.costory.io, as the endpoint publishes it. You approve it there.

Tools

None listed · checked 9 Oct 2026

Odel could not list its tools without signing in.

Try it in the Inspector
README6 min read

Costory FinOps MCP: build a FinOps agent on Claude, Cursor, or any LLM

MCP Registry Claude connector Cursor Directory Costory MCP connector License: Apache-2.0

Costory is the cost-data layer for a FinOps agent. It ingests and normalizes cloud, Kubernetes, SaaS, and AI spend (AWS, GCP, Azure, Snowflake, Datadog, OpenAI, Anthropic), allocates it to teams, products, and features, and exposes it through a hosted Model Context Protocol server. Claude, Cursor, VS Code, Codex, Gemini CLI, Dust, or your own agent then investigates, explains, and optimizes spend with structured tool calls instead of raw billing lines.

This repository is the open part: the agent skills and plugin packaging (Claude Code, Codex, Cursor) that teach an agent how to run FinOps workflows on top of the Costory MCP tools.

Why a cost layer for a FinOps agent?

A provider billing MCP returns line items for one cloud. That works for a single account. On a real stack (several clouds, shared Kubernetes clusters, many teams) the agent also needs to know who owns which spend, how shared and untagged cost is split, and what changed when the bill moved. Costory maintains that context, so the agent starts from allocated, correlated data.

What engineers ask it

  • "Why did our AWS bill jump last week? Which deploys line up with it?"
  • "Break down Kubernetes cost by namespace and team for the payments cluster."
  • "What is our total AI spend across OpenAI, Anthropic, and Bedrock this month, by team and model?"
  • "Split our shared Cloud SQL cost across teams by usage and publish it as a dimension."
  • "What is our cloud cost per active user, this month vs last month?"
  • "Create an alert if daily BigQuery cost goes above $2,000 and post it to our #finops Slack channel."
  • "Send the top 5 cost movers to Slack every Monday."

Connect the MCP

You need a Costory workspace with billing data connected. A 14-day trial is available.

Claude Desktop / Claude Code / Cursor / VS Code: add a custom connector pointing at https://app-api.costory.io/mcp, then complete the OAuth login in the browser window that opens. Per-client walkthroughs with screenshots are in the MCP docs.

This repo ships an .mcp.json you can copy:

json
{
  "mcpServers": {
    "costory": {
      "type": "http",
      "url": "https://app-api.costory.io/mcp",
      "oauth": { "callbackPort": 8080 }
    }
  }
}

For clients without native remote-MCP support, proxy it with mcp-remote:

json
{
  "mcpServers": {
    "costory": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://app-api.costory.io/mcp"]
    }
  }
}

First prompt

Try "Use Costory to show my top cost drivers last month". The agent calls get_context, then query.

If your account has access to several organizations, get_context without a slug returns "Multiple organizations" with the list of slugs. The agent should call list_organizations (or read that list), ask which org to use, and pass that slug to get_context and the following tools. You can also name it upfront: "Use Costory org acme and show my top cost drivers last month".

MCP tools reference

The server exposes tools in five groups. Names and payloads are versioned; the API reference is the source of truth.

GroupToolsWhat they do
Orientationget_context, search, get, suggest_groupby, suggest_usage_metrics, suggest_actionsDiscover dimensions, dashboards, metrics, and the right way to slice a question
Queryquery, list_metrics, list_virtual_dimensionsCost, usage, metric, formula, and budget queries with period-over-period comparison
Allocationcreate_virtual_dimension_draft, update_virtual_dimension_draft, preview_virtual_dimension_draft, publish_virtual_dimension, virtual_dimension_overlap_matrixDefine custom cost axes with ordered CEL rules, preview, then publish
Reportingcreate_report, update_report, preview_report_widget, run_report_now, create_dashboard, update_dashboardScheduled Slack, Teams, and email reports plus dashboards built from chat
Alerting and eventscreate_alert, preview_alert, list_alerts, create_event, update_eventCost and budget alerts, and event annotations for correlation

Write tools act only inside your Costory workspace. Query scoping follows the calling user's workspace role.

FinOps skills

Skills are the workflow layer: each one encodes how to sequence the tools above for a class of question, so the assistant does not have to rediscover it.

MCP skillIdUse when
bigqueryBigQuery warehouse caveats (on-demand vs slots, physical vs logical, labels) plus the [BigQuery] dashboard template
cost-change-investigationExplain a cost change with contribution, timing, usage, metric, event, alert, and terminology evidence
queryCost, usage, metric, formula, and budget investigation. Explorer period-over-period only; hands off "what changed" to reports Explain
virtual-dimensionsCreate, edit, preview, and publish custom cost axes with ordered CEL rules
dashboardsCreate or extend dashboards with context-first widget inheritance and overview generation
reportsScheduled Slack, Teams, and email reports, and preview-first DIGEST to explain last month's cost
recipesReady-made tracking designs matched to an outcome, then handed off to the skills above to build

Recipes currently cover BigQuery warehouse routing, GCP spend-based CUDs, budget-vs-actual dashboards, EC2 spike alerts, prod-vs-R&D splits, untagged coverage, marketplace spend, provider credits, namespace cost, compute drilldowns, and period-change explanation. See plugins/costory/skills/recipes/.

Cursor Marketplace packaging

This repo also ships a Cursor plugin layout next to the Claude Code marketplace:

  • .cursor-plugin/marketplace.json — multi-plugin marketplace manifest
  • plugins/costory/.cursor-plugin/plugin.json — Cursor plugin manifest
  • plugins/costory/mcp.json — hosted MCP at https://app-api.costory.io/mcp (OAuth in the client)
  • plugins/costory/assets/logo.png — plugin logo

Listed on cursor.directory/plugins/costory.

Install as a plugin (MCP connection + skills)

The plugin wires the MCP server and installs the skills in one step.

bash
# Claude Code
claude plugin marketplace add costory-io/costory-finops-mcp-skills
claude plugin install costory@costory

# Codex
codex plugin marketplace add costory-io/costory-finops-mcp-skills
codex plugin add costory@costory

Layout

.mcp.json                              ← ready-to-copy MCP client config
skills.json                            ← MCP skillId -> SKILL.md path
.claude-plugin/marketplace.json
server.json                            ← official MCP Registry entry (io.costory/finops)
gemini-extension.json + GEMINI.md      ← Gemini CLI extension (MCP connection + context)
plugins/costory/
  .claude-plugin/plugin.json
  .mcp.json                            ← MCP server wired by the Claude Code / Codex plugin
  README.md
  LICENSE                              ← Apache-2.0 (copy of the root LICENSE)
  skills/
    bigquery/SKILL.md
    cost-change-investigation/SKILL.md
    query/SKILL.md
    virtual-dimensions/SKILL.md
    dashboards/SKILL.md
    reports/SKILL.md
    recipes/SKILL.md  + recipe library

Serving skills over MCP (get_skill)

skills.json maps each MCP skillId to a SKILL.md path. When wiring costory-app, load the file from this repo (or a pinned release), strip optional YAML frontmatter, and return the markdown body.

json
{
  "skillId": "dashboards",
  "path": "plugins/costory/skills/dashboards/SKILL.md"
}

Authoring

See AGENTS.md for layout rules, version bumps, and validation. Use SKILL_TEMPLATE.md when adding a skill.

License

Apache-2.0, see LICENSE.

Similar modules

Browse Cloud cost management