Skip to content

MCP server

Plutus runs an MCP (Model Context Protocol) server at POST /api/mcp. Any MCP-compatible AI assistant — Claude Desktop, Claude Code, or another MCP client — can connect to it and query your account’s cost and FinOps data directly, without you copying numbers into a chat window by hand.

There are two ways to connect: OAuth (recommended — sign in and approve access, nothing to copy or manage) and a manual API key (a bearer token, for clients that don’t support OAuth, or for scripts/CI).

Plutus supports OAuth 2.0 for MCP clients that ask for it — which today, in practice, means adding Plutus as a custom connector rather than picking it from a built-in directory listing. Plutus isn’t listed in Claude’s connector directory yet (that requires a submission review on Anthropic’s side, independent of anything on our end), and ChatGPT/Gemini don’t have an equivalent public directory to be listed in at all — so on every provider, for now, you add Plutus by pasting the endpoint URL: https://console.plutus-cloud.com/api/mcp.

The general shape is the same everywhere — add a custom connector, paste the URL, sign in to Plutus, approve a consent screen (which account, and read-only or read/write access), and you’re connected with no key to copy or manage. Where to find that flow differs enough per provider that it’s worth spelling out separately, and one of the three (Gemini) isn’t consistently available yet:

Claude (claude.ai, Claude Desktop, Claude Code): Settings → Connectors → Add custom connector. Works on every plan, including the free tier (free accounts are capped at one custom connector total).

ChatGPT: requires a paid plan — Plus, Pro, Team, Enterprise, or Edu — the free tier can’t add a custom connector at all. First enable it: Settings → Apps → Advanced settings → Developer mode. On a Business/Enterprise workspace, an admin may need to turn this on first, in Workspace settings → Permissions & Roles → Connected Data → Create custom MCP connectors. Once enabled: Settings → Connectors → Create → Add custom connector, paste the endpoint, give it a name, and complete the OAuth step.

Gemini: consumer Gemini (the regular chat app) does not reliably expose a custom-connector option yet — support is inconsistent across accounts as of this writing, so don’t be surprised if you don’t see it. Gemini Enterprise (Google’s Business edition) does support it, at the admin level: Settings & help → your Team → Manage team → Connected apps → Add MCP Server. If you’re on consumer Gemini and don’t see a custom-connector option, that’s Google’s rollout, not something missing on Plutus’s end — the manual API key below works today regardless.

For a client that doesn’t support OAuth, or for scripts/CI, mint a bearer-token API key instead. MCP keys are separate from usage-ingestion API keys and from your login session. Mint one from Settings → MCP Keys:

  1. Go to Settings → MCP Keys.
  2. Click New key, give it a name (for example, “Claude Desktop”), and choose a scope: Read or Read/write (see below).
  3. Copy the plaintext key shown in the response. It’s shown once — Plutus stores only its hash and can’t display it again.

You can mint multiple keys — one per assistant or integration — and revoke any of them independently from the same page. A key that hasn’t been used yet shows no last-used date; once a client starts calling it, that timestamp updates on every request.

Minting or revoking a key requires the member role or higher, the same as creating a budget or alert subscription directly in the app.

A newly minted key defaults to read: it can query cost data but can’t create or change anything. Every tool available to a read key only reads data — nothing it does can modify a budget, alert, or cost-tag rule.

Optionally, you can mint a read/write key instead. A read/write key unlocks five additional tools:

  • create_budget — creates a budget scoped to the whole account, one cost source, one team, or one cost-tag value. Subject to the same per-account budget cap as creating a budget in the app.
  • create_alert_subscription — subscribes an existing alert channel to a trigger, such as a specific budget’s spend threshold or an account-wide anomaly alert.
  • create_dashboard — creates a shared dashboard and, optionally, places widgets on it in the same call. Subject to the same per-account shared-dashboard cap as creating one in the app.
  • set_dashboard_widgets — replaces a shared dashboard’s complete widget set.
  • delete_dashboard — permanently deletes a shared dashboard. The only write tool that’s destructive.

Dashboard tools only ever act on shared (account-wide) dashboards, never a personal one — an MCP key isn’t tied to a signed-in user, so it has no personal dashboard to read or write. Two widgets given the same exact position are rejected outright rather than silently moved apart: reposition one of them, or drop its position so it arranges itself instead.

There’s no tool for creating an alert channel (a Slack webhook, Teams webhook, etc.) — adding a new notification destination stays an app-only action, since that’s the step that involves validating a URL you paste in. A read/write key can only point new alerts at channels you’ve already created and vetted in the app.

If you don’t need an assistant to create anything, keep the key on Read. Most workflows — “what did we spend last month,” “which service is trending up” — only need read access.

A read key exposes tools covering:

  • Cost and spend analytics — time-bucketed spend by service, region, account, usage type, or actor, with optional breakdowns and billed-vs-amortized cost.
  • Unit economics — your saved cost-per-unit metrics (for example, cost per 1,000 API requests or cost per order), computed over a date range.
  • Savings recommendations and commitment utilization — active cost-reduction suggestions and how well your purchased Reserved Instances/Savings Plans are being used.
  • Cost tags — your virtual tagging rules and the account/team/product breakdowns they produce, including shared-cost split rules.
  • Teams, budgets, and alerts — team membership and tag mapping, budget status (ok/warning/ exceeded), alert channels and subscriptions, and recent alert delivery history.
  • Anomalies, tag recommendations, and data health — flagged spend anomalies, suggested (but not yet adopted) tagging rules, and per-connection sync health.
  • Dashboards — the dashboards shared across your account, their full layout, and the catalogue of built-in widgets available to place on one.
  • Usage telemetry — the raw usage data your own backend has pushed in, which unit-economics ratios are built from.

Every dollar figure a tool returns comes with a currency alongside it, so the assistant doesn’t have to guess or assume USD.

The server also ships six ready-made prompts (client-side shortcuts, like a slash command in Claude Desktop) for common questions: a weekly cost digest, an anomaly check, top cost drivers this month, a savings-opportunities review, a commitment-utilization review, and a budget health check. You don’t have to use these — asking a free-form question works the same way, since the assistant calls the same tools either way.

Point your MCP client at POST /api/mcp with the key as a bearer credential:

{
"mcpServers": {
"plutus": {
"url": "https://console.plutus-cloud.com/api/mcp",
"headers": {
"Authorization": "Bearer <your-mcp-key>"
}
}
}
}

The MCP Keys settings page leads with the OAuth “Connect an AI Assistant” card described above, followed by this same pre-filled JSON under Manual API key — ready to paste into Claude Desktop’s or Claude Code’s MCP configuration, or a script/CI job. Every key (OAuth-issued or manual) is scoped to a single account — there’s no way to query across multiple accounts with one connection, even if your login belongs to more than one.

Once connected, you can ask your assistant questions in plain language, for example:

What was our AWS spend last month by service?

The assistant calls the cost-analytics tool with the AWS cost source and a service breakdown, and answers from the real numbers rather than an estimate. Other things worth trying:

Are any of our budgets close to exceeded this cycle?

Show me any cost anomalies from the last two weeks that haven’t been marked as expected.

What’s our cost per API request been trending this quarter?

With a read/write key, the assistant can also build things for you:

Create a shared dashboard called “Weekly review” with MTD spend, the budgets card, and a chart of AWS spend by service over the last 90 days.