Costory FinOps MCP: the FinOps agent your team builds on, in Claude, Cursor or any MCP client
Costory is the FinOps agent your team builds on. Claude plus a single provider's MCP works for one person and one cloud. It breaks when you add more providers, more people, and more tools to maintain.
- Multiple providers: AWS, GCP, Azure, LLM APIs and data clouds normalized and allocated to teams and features in one model, including allocation from telemetry (Kubernetes, Datadog, dbt).
- Multiple users: one hosted setup with OAuth, per-user access and enterprise SSO, instead of local credentials and prompts per person.
- Maintained for you: tools, skills and connectors kept up to date by Costory, so reorgs and new services don't break your agent.
Your agent finds savings, explains every change in spend and issues recommendations that your coding agent can implement. It works in Claude, Cursor and any MCP client, plus Slack. Customers include Alan, Deezer, Delivery Hero, Voodoo and Pennylane.
Pricing: Starter from $300/month, flat: unlimited users and data sources, and a fair use that 80% of customers never outgrow. Nothing is ever cut off, and agents connected through the MCP use no AI credits. 30-day free trial.
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.
- Endpoint:
https://app-api.costory.io/mcp(streamable HTTP) - Auth: OAuth 2.1 in the browser. No IAM credentials, no Docker, no local server
- Docs: docs.costory.io/features/mcp
- Registry name:
io.costory/finopson the official MCP Registry
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
One click adds https://app-api.costory.io/mcp to VS Code or Cursor; the OAuth login opens in the browser on first use.
Cursor deeplink, if you prefer to paste it: cursor://anysphere.cursor-deeplink/mcp/install?name=costory&config=eyJ1cmwiOiJodHRwczovL2FwcC1hcGkuY29zdG9yeS5pby9tY3AifQ%3D%3D
You need a Costory workspace with billing data connected. Starter from $300/month, flat; 30-day free trial.
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:
{
"mcpServers": {
"costory": {
"type": "http",
"url": "https://app-api.costory.io/mcp",
"oauth": { "callbackPort": 8080 }
}
}
}
Claude Desktop (developer config, claude_desktop_config.json), see alternative JSON config:
{
"mcpServers": {
"costory": {
"url": "https://app-api.costory.io/mcp"
}
}
}
VS Code (.vscode/mcp.json):
{
"servers": {
"costory": {
"type": "http",
"url": "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.
| Group | Tools | What they do |
|---|---|---|
| Orientation | get_context, search, get, suggest_groupby, suggest_usage_metrics, suggest_actions | Discover dimensions, dashboards, metrics, and the right way to slice a question |
| Query | query, list_metrics, list_virtual_dimensions | Cost, usage, metric, formula, and budget queries with period-over-period comparison |
| Allocation | create_virtual_dimension_draft, update_virtual_dimension_draft, preview_virtual_dimension_draft, publish_virtual_dimension, virtual_dimension_overlap_matrix | Define custom cost axes with ordered CEL rules, preview, then publish |
| Reporting | create_report, update_report, preview_report_widget, run_report_now, create_dashboard, update_dashboard | Scheduled Slack, Teams, and email reports plus dashboards built from chat |
| Alerting and events | create_alert, preview_alert, list_alerts, create_event, update_event | Cost 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 skillId | Use when |
|---|---|
bigquery | BigQuery warehouse caveats (on-demand vs slots, physical vs logical, labels) plus the [BigQuery] dashboard template |
cost-change-investigation | Explain a cost change with contribution, timing, usage, metric, event, alert, and terminology evidence |
query | Cost, usage, metric, formula, and budget investigation. Explorer period-over-period only; hands off "what changed" to reports Explain |
virtual-dimensions | Create, edit, preview, and publish custom cost axes with ordered CEL rules |
dashboards | Create or extend dashboards with context-first widget inheritance and overview generation |
reports | Scheduled Slack, Teams, and email reports, and preview-first DIGEST to explain last month's cost |
recipes | Ready-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 manifestplugins/costory/.cursor-plugin/plugin.jsonβ Cursor plugin manifestplugins/costory/mcp.jsonβ hosted MCP athttps://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.
# 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
Skills only, any agent (skills.sh): installs the seven skills into Claude Code, Cursor, Codex and other agents that read Agent Skills. Connect the MCP separately (see above).
npx skills add costory-io/costory-finops-mcp-skills
Kiro: this repo ships a Kiro power (MCP connection + FinOps skill). In Kiro, open the
Powers panel β Add Custom Power β Import power from GitHub and enter
https://github.com/costory-io/costory-finops-mcp-skills/tree/main/powers/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)
powers/costory/ β Kiro power (plugin.json + mcp.json + skills/costory-finops)
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.
{
"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.
Support
[email protected] Β· Documentation Β· Privacy Policy Β· Terms
License
Apache-2.0, see LICENSE.