Skip to content

Connect Claude or Cursor to your cloud costs

The GetFinOps MCP server puts your cost, findings, remediation and verified-savings data directly in your AI assistant — so instead of exporting a CSV and pasting it into a chat, you just ask.

Most FinOps MCP servers are read-only. This one can also act — but only through the same approval workflow a human uses, with the same role checks, the same safety policy and the same automatic rollback. An agent can request a fix; approving it is still a decision a person makes.


What you can ask

  • "What changed in my AWS spend this week, and which account drove it?"
  • "Show me high-severity findings we haven't triaged yet."
  • "How much have we actually saved — verified, not projected."
  • "What did that stop-instance remediation actually do?"

Because the tools return your live data rather than a snapshot, the answers stay current.


1. Create an API token

In the dashboard, an owner creates a token (Settings → API tokens), or via the API:

curl -X POST https://<your-workspace>.app.getfinops.cloud/api/tokens \
  -H "authorization: Bearer <your-JWT>" \
  -H "content-type: application/json" \
  -d '{"name":"Cursor laptop","scopes":["read"]}'

The response contains the token once. Store it like a password — only a hash is kept server-side, so it cannot be shown again. You can revoke it at any time.

Start read-only

scopes: ["read"] is the default and is all you need to ask questions. Only add "write" when you actually want the assistant to be able to raise remediation requests.


2. Point your client at it

{
  "mcpServers": {
    "getfinops": {
      "url": "https://<your-workspace>.app.getfinops.cloud/api/mcp",
      "headers": { "authorization": "Bearer gfm_<id>.<secret>" }
    }
  }
}
claude mcp add --transport http getfinops \
  https://<your-workspace>.app.getfinops.cloud/api/mcp \
  --header "authorization: Bearer gfm_<id>.<secret>"
{
  "mcpServers": {
    "getfinops": {
      "url": "https://<your-workspace>.app.getfinops.cloud/api/mcp",
      "headers": { "authorization": "Bearer gfm_<id>.<secret>" }
    }
  }
}

Restart the client and the GetFinOps tools appear.


3. What the tools do

Read — available to any token:

Tool Answers
get_cost_trend Cost over time. Date range, unblended vs amortized, daily or monthly, per cloud account. Tax, credits and refunds excluded by default.
get_cost_by_account Month-to-date spend split across your connected accounts.
list_findings Cost, security and tag-governance findings with their triage status.
list_executions What was actually changed in your cloud — per-stage detail, before/after state, rollbacks.
get_savings_summary Verified realized savings, re-measured after execution. Not estimates.
list_approvals The remediation queue. Needs an admin-role token.

Write — only with the write scope:

Tool Behaviour
create_approval Requests a remediation. Creates a pending approval; executes nothing. Appears in your queue and Slack exactly like one raised by a person.
decide_approval Approves or denies. Approving runs the remediation — and requires an admin token on a paid workspace.
get_execution_status The outcome of a remediation.

Why this is safe to give an agent

The write tools do not have a private back door into your cloud. They call the same internal endpoints the dashboard calls, so every existing control still applies:

  • Approving is admin-only. A default token can raise a request but cannot approve it.
  • Destructive actions need explicit confirmation. Deleting a volume or terminating an instance is refused unless the call passes confirm: true — and it's refused before anything is touched.
  • Your safety policy still governs. Production-account blocks, action allow-lists, spend ceilings and blast-radius limits are unchanged.
  • Rollback still happens. If the post-execution check fails, the change is automatically reverted.
  • Everything is attributed. MCP-driven actions are recorded as mcp:<user> in the audit trail, so you can always see what an assistant did versus a person.
  • Scoped to one workspace. A token only ever reaches the workspace it was created in.

The honest summary: an assistant can investigate freely and propose changes; the decision to apply one stays with a human, unless you deliberately grant a token the rights to do more.


Revoking access

Delete the token — in the dashboard, or:

curl -X DELETE https://<your-workspace>.app.getfinops.cloud/api/tokens/<token-id> \
  -H "authorization: Bearer <your-JWT>"

It stops working on the next request. Tokens can also be given an expiry when created.


See your own numbers →