Infracost MCP Server
The Infracost MCP server connects an AI assistant to your Infracost organization. Instead of switching to the dashboard, you ask in plain language, such as "what's the biggest cost saving open on us right now?", and the assistant reads your findings, guardrails, policies, and issues to answer. When you want something fixed, it drafts the pull request for you to approve.
It is a remote server at https://mcp.infracost.io. There is nothing to install, and nothing runs on your machine.
What you can ask
Once connected, ask your assistant things like:
- "What are the top five cost savings open in Infracost?"
- "Show me finding ABC. What's causing it, and what would fixing it involve?"
- "Which guardrails fired this week, and which pull requests triggered them?"
- "Draft a fix for the idle RDS instance, but show me the change before you open anything."
- "Which repos are breaching our tagging policy?"
The assistant can also make changes, such as opening a pull request, creating a ticket, or resolving a finding, but only when you ask it to, and it is instructed to show you the change first. See What it can change.
Which credential do I need?
Everything below turns on one question: is this for a person, or for a system?
| You are connecting | Use | Identity |
|---|---|---|
| A person — you, in your editor or chat assistant | Sign in, or a personal infracost_mcp_ token | Yours. Every action is attributed to you |
| A system — a portal, a scheduled job, a bot | An organization ics_ service account token | The organization's. No person behind it |
Signing in and pasting a personal token are two ways to prove you are you. They carry identical access; only your client decides which is open to you.
Connect your personal assistant
Claude
- In Claude, open Settings → Connectors.
- Find Infracost in the connector directory and select Connect. If you are adding it before it appears in the directory, choose Add custom connector and enter
https://mcp.infracost.io. - Sign in with your Infracost account and approve the access request.
Claude Code
claude mcp add --transport http infracost https://mcp.infracost.io
Then run /mcp in a session and choose infracost to sign in.
ChatGPT
- Open Settings → Connectors → Create.
- Enter
https://mcp.infracost.ioas the MCP server URL. - Sign in with your Infracost account when prompted.
Cursor, Zed, and any other client
Sign-in with your Infracost account works for the clients above, because each one is registered with Infracost ahead of time. Infracost does not let a client register itself, so a client that is not on that list cannot use the sign-in flow.
For any other client, use an MCP token instead:
- In dashboard.infracost.io, open your user settings and find MCP Tokens.
- Create a token, give it a name and an expiry, and copy it. It starts with
infracost_mcp_. - Configure your client to send it as a bearer token against
https://mcp.infracost.io:
Authorization: Bearer infracost_mcp_...
This is not a lesser credential. An infracost_mcp_ token carries exactly what signing in carries: the same tools, the same access, the same attribution to you. It belongs to you, so treat it like a password, and revoke it from the same screen at any time.
If you want your client added to the sign-in flow, email hello@infracost.io with the client and the callback URL it uses.
Connect your organization's platform tooling
Do not use a personal MCP token for these. A personal token is linked to an engineer's identity. It will be coupled to their access, every action is attributed to them, and it will breaks if they change role or leave.
If you are building something that connects to Infracost on behalf of your organization rather than on behalf of a named engineer use a service account token.
This includes integrations like:
- An internal portal or dashboard that shows cost findings to the whole engineering org
- A scheduled job that pulls findings into a data warehouse, a weekly report, or Slack
- A bot, workflow, or agent that runs on a timer with nobody watching
- Anything deployed to your infrastructure, where a credential has to outlive whoever wrote it
A service account has no such problem. It belongs to the organization, it is created and revoked by an admin who never has to touch anyone's account, and its access does not change when people join or leave.
Create a service account token
- In dashboard.infracost.io, open Org Settings > API tokens > Service accounts.
- Create a service account and copy its token. It starts with
ics_. - Send it as a bearer token against
https://mcp.infracost.io, exactly like a personal token.
Create one service account per integration rather than sharing a single token, so you can revoke one without taking down the rest and can tell from the token which system is calling.
What a service account can do
A service account gets every read tool a person gets, and can draft a fix. It cannot change anything.
create_fix, retry_action, update_finding_status, and update_task_status are not available. The first two put a pull request or a ticket in your own repository or tracker. The other two look internal but are not: dismissing a finding or a task closes the pull request Infracost opened for it, and comments on it. A service account token is shared, so no person stands behind any of that. Draft the change with preview_fix and have someone signed in create it.
Choosing an organization
If you belong to more than one Infracost organization, say which one you mean, for example "in the Acme org, show me the top savings", or let the assistant ask. It will use your default organization if you do not say.
Every tool except the two that identify you requires an organization, so this is the first thing an assistant establishes in a conversation.
What it can read
The connector sees exactly what you see in the Infracost dashboard, and only for organizations you are a member of. It cannot reach another customer's data, and it cannot see more than your own role allows.
| Area | What the assistant can read |
|---|---|
| Findings | Cost savings findings, their tasks, actions, events, and estimated yearly savings |
| Guardrails | Configured guardrails and the events where they fired, including the triggering pull request and commit |
| Policies | FinOps, tagging, and cloud security policies |
| Issues | Dashboard issues and their history |
| Account | Your name, email, and the organizations available to you |
It does not read your cloud credentials, your source code, or anything else Infracost holds on your behalf.
What it can change
Four tools make changes, and all four are marked as such so your assistant asks before using them.
| Tool | What it does |
|---|---|
create_fix | Opens a pull request, creates a ticket, or records a manual action |
retry_action | Re-queues an action that previously failed |
update_finding_status | Resolves or dismisses a finding |
update_task_status | Confirms, corrects, or dismisses a task |
The intended flow for a fix is two steps: preview_fix drafts the change without creating anything, you read it, and create_fix only runs once you approve. preview_fix is read-only, so you can explore options freely.
Everything an assistant does is attributed to you in Infracost's own history, exactly as if you had done it in the dashboard.
Tool reference
Seventeen tools, thirteen read-only:
| Tool | Access | Purpose |
|---|---|---|
whoami | read | Who you are signed in as |
list_organizations | read | Organizations available to you |
list_findings | read | List findings by view: active, resolved, or dismissed |
get_finding | read | One finding with its tasks, actions, and events |
preview_fix | read | Draft a pull request or ticket without creating it |
create_fix | write | Create the pull request, ticket, or manual action |
update_finding_status | write | Resolve or dismiss a finding |
update_task_status | write | Confirm, correct, or dismiss a task |
retry_action | write | Re-queue a failed action |
list_guardrails | read | Configured cost guardrails |
get_guardrail | read | One guardrail in full |
list_guardrail_events | read | Guardrail trigger events, newest first |
list_finops_policies | read | FinOps policies |
list_tagging_policies | read | Tagging policies |
list_cloud_security_policies | read | Cloud security policies |
list_issues | read | Dashboard issues |
get_issue | read | One issue with its event history |
Troubleshooting
The sign-in window opens but access is denied. Your Infracost account must be active and a member of at least one organization. Check you can sign in at dashboard.infracost.io first.
The assistant says it cannot find a tool. You are probably connected with a service account, which sees a reduced set — see What a service account can do. Signing in and using a personal infracost_mcp_ token both count as you, and both see every tool.
Tool calls fail with an organization error. Name the organization explicitly in your question, or ask the assistant to run list_organizations and use an ID from the result.
Nothing comes back for findings. Findings come from Infracost Fix. If your organization has not connected a cloud account yet, there is nothing to list. See Getting Started with Infracost Fix.
Privacy and data handling
Your conversation with your assistant is governed by that assistant's own terms. What Infracost receives, stores, and shares is covered by the Infracost Privacy Policy.
The connector holds no long-lived copy of your data. Each request is authorized as you, served from Infracost Cloud, and returned to your assistant.