Przejdź do głównej zawartości

Zarządzanie kosztami chmury i FinOps z agentami kodującymi

Zarządzanie kosztami chmury z agentem to podłączenie Claude Code, Codex lub Cursora do serwera MCP rozliczeń tylko do odczytu (AWS Billing and Cost Management albo Vantage dla wielu chmur). Agent wyjaśnia wzrost rachunku, szereguje kandydatów do right-sizingu według ryzyka i szkicuje zmianę w Terraformie. Weryfikują to Cost Explorer i terraform plan; każdą zmianę zatwierdza człowiek.

Ta strona jest dla programisty albo tech leada, który odpowiada za rachunek chmurowy swojej usługi. Finanse pytają, czemu koszty skoczyły w tym miesiącu, nikt nie pamięta, żeby coś uruchamiał, a wzrost siedzi w nieotagowanej pozycji EC2-Other. W konsoli każde pytanie to kilkanaście kliknięć. Potrzebujesz uporządkowanej historii z dowodami i zmiany, którą można bezpiecznie scalić (merge).

Strona dotyczy wydatków na infrastrukturę chmurową. Koszty samych agentów kodujących opisuje strona zarządzanie kosztami użycia AI.

  • Konfigurację serwera MCP z danymi rozliczeniowymi tylko do odczytu dla Claude Code, Codex i Cursora oraz rolę IAM, która nie może zmienić żadnego zasobu.
  • Sześć promptów do skopiowania: główne źródła kosztów, nieotagowane wydatki, analiza anomalii, right-sizing w Terraformie, prognoza na kwartał i przewymiarowane deploymenty w Kubernetesie.
  • Procedurę weryfikacji, która porównuje liczby agenta z Cost Explorer bez czytania jego analizy linijka po linijce.
  • Listę typowych pułapek: złe konto, okno obserwacji z okresu niskiego ruchu, brakujące tagi i agent z prawem zapisu.

Wybierz najwęższy serwer, który odpowiada na twoje pytania o koszty. Ogólny serwer chmurowy z narzędziami zapisu to zły domyślny wybór do pracy FinOps.

Twoje wydatkiSerwerTransport i uwierzytelnianieDlaczego ten
Tylko AWSawslabs.billing-cost-management-mcp-server (PyPI 0.0.39, sprawdzone 2026-09-26)stdio przez uvx, twój AWS_PROFILECost Explorer, prognozy, Cost Anomaly Detection, Budgets, Compute Optimizer, Cost Optimization Hub, Savings Plans i tagi alokacji kosztów w jednym serwerze
AWS, Azure, GCP, Kubernetes i SaaSVantage MCPHostowany https://mcp.vantage.sh/mcp z OAuth albo npx -y vantage-mcp-server z VANTAGE_TOKENJeden znormalizowany widok wielu dostawców, jeśli twoja firma już korzysta z Vantage
Szersza praca z AWS (runtime’y Lambdy, dryf)AWS MCP Server przez Agent Toolkit for AWSProxy SigV4 przez uvxOgólny serwer rekomendowany przez AWS. Konfiguracja: serwery MCP chmur i platform

Jeśli nie chcesz trzymać stale podłączonego serwera, plugin aws-core z Agent Toolkit for AWS zawiera też skill aws-billing-and-cost-management. Obejmuje analizę kosztów, Savings Plans i Reserved Instances, right-sizing z Compute Optimizer, anomalie i zapytania CUR przez Athenę, a sprawdza się przy prowadzonym przeglądzie kosztów; instalację opisuje strona serwery MCP chmur i platform. W obu przypadkach kontrolą jest rola IAM tylko do odczytu opisana niżej.

W wersji 0.0.39 (sprawdzone 2026-09-26) narzędzia serwera rozliczeń AWS czytają i analizują; żadne nie zmienia rozmiaru zasobu ani go nie usuwa (zapytania Storage Lens zapisują jednak wyniki Athena do S3). Wymuś to przez IAM, zamiast ufać liście narzędzi. Serwer Vantage potrafi też tworzyć obiekty w Vantage, np. raporty, więc odpowiednio ogranicz jego token.

Dopiero zaczynasz z MCP? Zacznij od strony podstawowe serwery MCP.

  1. Utwórz rolę rozliczeniową tylko do odczytu. Dołącz politykę z samymi akcjami odczytu: ce:Get*, ce:Describe*, ce:List*, compute-optimizer:Get*, cost-optimization-hub:Get*, cost-optimization-hub:List*, savingsplans:Describe*, pricing:Get*, pricing:Describe*, budgets:ViewBudget i budgets:DescribeBudgetActionsFor*. Narzędzia generujące rekomendacje Savings Plans i analizę zobowiązań potrzebują też ce:StartSavingsPlansPurchaseRecommendationGeneration i ce:StartCommitmentPurchaseAnalysis. Te akcje uruchamiają zadanie rekomendacji i nie zmieniają żadnego zasobu, ale nie są akcjami Get, więc pomiń je, jeśli nie używasz tych narzędzi. README serwera wymienia dokładne akcje dla każdego narzędzia. Nadaj profilowi nazwę, np. finops-readonly, w ~/.aws/config.

  2. Sprawdź tożsamość, zanim zobaczy ją agent. W terminalu uruchom:

    Okno terminala
    aws sts get-caller-identity --profile finops-readonly

    Jeśli chcesz widzieć koszty całej organizacji, ID konta musi należeć do konta płatnika (management account). Konto członkowskie widzi tylko własne koszty.

  3. Zainstaluj uv według instrukcji Astral. Serwer działa przez uvx.

  4. Zarejestruj serwer. Definicja jest taka sama w każdym narzędziu; różni się tylko plik albo komenda.

    Okno terminala
    claude mcp add aws-billing \
    -e AWS_PROFILE=finops-readonly -e AWS_REGION=us-east-1 -e FASTMCP_LOG_LEVEL=ERROR \
    -- uvx awslabs.billing-cost-management-mcp-server@latest

    Domyślny zakres to local, więc nazwa profilu nie trafia do repozytorium. Połączenie sprawdzisz przez claude mcp list albo /mcp w sesji.

  5. Dodaj Vantage, jeśli masz więcej niż jedną chmurę. Serwer hostowany loguje cię przez przeglądarkę, więc żaden token nie leży w pliku konfiguracyjnym:

    Okno terminala
    # Claude Code: potem uruchom /mcp w sesji, żeby dokończyć OAuth
    claude mcp add --transport http vantage https://mcp.vantage.sh/mcp
    # Codex: uruchom `codex mcp login vantage`, jeśli poprosi o uwierzytelnienie
    codex mcp add vantage --url https://mcp.vantage.sh/mcp

    W Cursorze dodaj "vantage": { "url": "https://mcp.vantage.sh/mcp" } w sekcji mcpServers.

Wyjaśnij rachunek: które usługi urosły i dlaczego?

Dział zatytułowany „Wyjaśnij rachunek: które usługi urosły i dlaczego?”

Sesje analityczne uruchamiaj w trybie, który nie pozwala edytować plików, żeby agent tylko czytał i raportował.

Uruchom claude --permission-mode plan albo naciskaj Shift+Tab, aż pojawi się tryb plan. Claude może wywoływać narzędzia rozliczeniowe i opisać wnioski, ale proponuje zamiast edytować. Claude może pytać przed każdym wywołaniem narzędzia MCP; zatwierdź narzędzia rozliczeniowe tylko do odczytu albo dodaj je do permissions.allow.

Następnie zadaj pytanie z nazwaną metryką, oknem czasu, grupowaniem i kształtem wyniku:

Ostatni numerowany punkt sprawia, że wynik da się sprawdzić. Porównujesz jedną sumę, a nie dziesięć wierszy (zobacz jak udowodnić, że liczby się zgadzają).

Kolejne pytanie to zwykle nieotagowane wydatki, bo duży nieotagowany koszyk to najczęstszy powód, dla którego nikt nie umie wyjaśnić rachunku:

Aktywacja tagu działa od chwili włączenia, a nie wstecz, chyba że zlecisz backfill. Licz się z tym, że raport z bieżącego miesiąca pozostanie częściowo nieotagowany nawet po poprawieniu tagów.

Jeśli masz włączone AWS Cost Anomaly Detection, serwer może czytać jego wyniki. Niech detektor decyduje, co jest anomalią, a agent ją wyjaśnia; agent wymyślający własne progi da inną odpowiedź przy każdym uruchomieniu. Wersjonowane reguły alertów testowane na danych historycznych opisuje strona deterministyczne wykrywanie anomalii.

Zamień rekomendację right-sizingu w zrecenzowaną zmianę

Dział zatytułowany „Zamień rekomendację right-sizingu w zrecenzowaną zmianę”

Kandydatów dostarczają Compute Optimizer i Cost Optimization Hub; zadaniem agenta jest je uszeregować, dopisać ryzyko i zmienić kod infrastruktury, a nie działający zasób. Sam proces recenzji IaC opisuje strona infrastruktura jako kod z AI.

Sposób prowadzenia edycji różni się między narzędziami:

Tylko na ten prompt wyjdź z trybu plan (Shift+Tab do acceptEdits). Claude zapyta przed uruchomieniem terraform plan, chyba że dopuściłeś tę komendę w .claude/settings.json. terraform apply trzymaj poza listą dozwolonych.

Dalej zmiana idzie zwykłym potokiem: pull request, terraform plan w CI i zatwierdzenie przez właściciela usługi. Zakupy Savings Plans i Reserved Instances nigdy nie przechodzą przez agenta. To zobowiązania finansowe na rok lub trzy lata, więc agent szkicuje rekomendację, a podpisują ją finanse.

Tryby zatwierdzania i sandboksy obok siebie znajdziesz na stronie uprawnienia, sandboksy i tryby zatwierdzania.

Prognozuj wydatki na kolejny kwartał i porównaj je z budżetami

Dział zatytułowany „Prognozuj wydatki na kolejny kwartał i porównaj je z budżetami”

Płaska projekcja „tyle samo co w zeszłym miesiącu” zawodzi przy każdej usłudze z sezonowością. Użyj prognozy samego Cost Explorer, która zawiera przedział predykcji, i niech agent zestawi ją z budżetami:

Prognozy dziedziczą jakość tagów. Jeśli ćwierć rachunku jest nieotagowana, każda liczba per zespół jest szacunkiem; najpierw popraw pokrycie tagami.

W raporcie cyklicznym licz liczby w kodzie, a modelowi zostaw tylko ich objaśnienie. Różnice są wtedy deterministyczne i testowalne, a model nie może się pomylić w rachunkach.

// weekly-cost-report.mts: run with `npx tsx weekly-cost-report.mts`
// (.mts makes tsx emit ESM, which the top-level await below needs)
import { CostExplorer } from '@aws-sdk/client-cost-explorer';
import Anthropic from '@anthropic-ai/sdk';
const ce = new CostExplorer({ region: 'us-east-1' }); // uses AWS_PROFILE
const anthropic = new Anthropic(); // reads ANTHROPIC_API_KEY from the environment
const day = (offset: number) => new Date(Date.now() - offset * 864e5).toISOString().slice(0, 10);
async function byService(start: string, end: string): Promise<Map<string, number>> {
const { ResultsByTime = [] } = await ce.getCostAndUsage({
TimePeriod: { Start: start, End: end },
Granularity: 'MONTHLY',
Metrics: ['UnblendedCost'],
GroupBy: [{ Type: 'DIMENSION', Key: 'SERVICE' }],
});
const totals = new Map<string, number>();
for (const period of ResultsByTime) {
for (const g of period.Groups ?? []) {
const name = g.Keys?.[0] ?? 'unknown';
totals.set(name, (totals.get(name) ?? 0) + Number(g.Metrics?.UnblendedCost?.Amount ?? 0));
}
}
return totals;
}
// Skip the last two days: Cost Explorer data for today and yesterday is still incomplete.
const [current, previous] = await Promise.all([byService(day(9), day(2)), byService(day(16), day(9))]);
const movers = [...current]
.map(([service, cost]) => ({ service, cost, delta: cost - (previous.get(service) ?? 0) }))
.sort((a, b) => b.delta - a.delta)
.slice(0, 5);
const msg = await anthropic.messages.create({
model: 'claude-opus-5-5',
max_tokens: 4000, // Opus 5.5 always thinks, and thinking tokens count against this limit
messages: [{
role: 'user',
content: `These are the five AWS services whose cost grew most this week versus last week, as JSON.
Write a five-line summary for the engineering channel. Use the numbers exactly as given; do not compute new ones.
${JSON.stringify(movers)}`,
}],
});
for (const block of msg.content) if (block.type === 'text') console.log(block.text);

claude-opus-5-5 to model, od którego Anthropic zaleca zacząć (i domyślny model Claude Code od v2.1.280, w kanale latest); do tak krótkiego podsumowania wystarczy tańszy model, a ceny znajdziesz w przeglądzie modeli. ANTHROPIC_API_KEY trzymaj w magazynie sekretów harmonogramu, nigdy w skrypcie. API Budgets jest w osobnym pakiecie, @aws-sdk/client-budgets.

Gdy wydatki siedzą w klastrze, marnotrawstwo zwykle kryje się w requests kontenerów znacznie powyżej faktycznego zużycia. Podłącz serwer MCP dla Kubernetesa w trybie tylko do odczytu; konfigurację i ustawienie read_only = true w TOML opisuje strona serwery MCP dla infrastruktury. Serwer widzi bieżące zużycie z metrics API, a nie historię, więc cięcie requestów na podstawie jednego popołudnia to zgadywanie. Połącz go z danymi z Prometheusa, żeby mieć p95 z co najmniej tygodnia.

Jak udowodnić, że liczby kosztów od agenta są poprawne?

Dział zatytułowany „Jak udowodnić, że liczby kosztów od agenta są poprawne?”

Nie czytasz analizy ponownie. Sprawdzasz kilka liczb, od których zależy reszta, a zmianę weryfikują istniejące bramki.

Co sprawdzićJakKto zatwierdza
Sumy rachunkuUruchom to samo zapytanie samodzielnie i porównaj jedną sumę całkowitą, o którą prosił prompt: aws ce get-cost-and-usage --time-period Start=2026-08-01,End=2026-09-01 --granularity MONTHLY --metrics UnblendedCost --group-by Type=DIMENSION,Key=SERVICE --profile finops-readonly (podmień daty na okres podany przez agenta). Rozbieżność oznacza, że agent pytał o inny okres, konto lub metrykę.Ty
Każda rekomendacja jest prawdziwaKażdy wiersz musi wskazywać ARN lub ID zasobu i wynik z Compute Optimizer albo Cost Optimization Hub. Sprawdź wyrywkowo jeden przez aws compute-optimizer get-ec2-instance-recommendations --instance-arns INSTANCE_ARN. INSTANCE_ARN to ARN z wiersza agenta. Odrzuć wiersze bez źródła.Ty
Zmiana robi tylko to, co deklarujeterraform plan w CI pokazuje jedną zmianę atrybutu na zasób i żadnych nieoczekiwanych zastąpień. Linia forces replacement przy bazie danych oznacza stop.Właściciel usługi, w pull requeście
Produkcja to przeżyjePrzez siedem dni po zmianie obserwuj opóźnienia, odsetek błędów i throttling względem SLO usługi, z zapisanym poprzednim typem instancji na wypadek wycofania. Zobacz monitoring i obserwowalność.Dyżurny
Oszczędność naprawdę wystąpiłaW kolejnym miesiącu uruchom ponownie prompt o źródłach kosztów i porównaj koszt usługi z szacunkiem z pull requesta.Tech lead
  1. Każde zapytanie zwraca pusty wynik albo błąd dostępu. Profil wskazuje złe konto, rola nie ma ce:Get* albo Cost Explorer nigdy nie został włączony w konsoli rozliczeń. Uruchom aws sts get-caller-identity --profile finops-readonly, popraw politykę, włącz Cost Explorer i zrestartuj agenta, żeby ponownie uruchomił serwer.

  2. Serwer w ogóle nie startuje. uvx nie jest w PATH widocznym dla procesu agenta, co często się zdarza, gdy agent startuje z aplikacji desktopowej. Uruchom uvx awslabs.billing-cost-management-mcp-server@latest w terminalu: serwer powinien wystartować i czekać na stdin. Potem zrestartuj narzędzie albo wpisz bezwzględną ścieżkę do uvx jako command.

  3. Liczby nie zgadzają się z konsolą. Dane Cost Explorer nie są w czasie rzeczywistym, więc wydatki z dziś i wczoraj mogą być niepełne. Agent mógł też użyć BlendedCost lub AmortizedCost albo konta członkowskiego zamiast płatnika. Poproś go o podanie metryki, okresu i konta, a potem uruchom zapytanie ponownie.

  4. Rośnie rachunek za samą analizę. Zapytania do API Cost Explorer są płatne za każde żądanie, a agent iterujący po dziennych danych każdej usługi potrafi wysłać ich setki. Zacznij od granulacji miesięcznej, schodź do dziennej tylko przy usługach, które urosły, i nie podpinaj serwera rozliczeń do pętli działającej bez nadzoru.

  5. Po right-sizingu pojawia się throttling. Rekomendacja pochodziła z okna obserwacji o niskim ruchu albo ze średniego, a nie szczytowego wykorzystania. Przywróć zapisany typ instancji tym samym potokiem, a potem uruchom prompt right-sizingu z oknem obejmującym miesięczny szczyt.

  6. Alokacja per zespół jest błędna. Brakuje tagów albo aktywowano je w połowie miesiąca. Traktuj liczby per zespół jako szacunki, dopóki pokrycie tagami nie będzie wysokie, i uruchamiaj prompt o nieotagowanych wydatkach po każdej zmianie tagowania.

  7. Agent powołuje się na serwer lub narzędzie, które nie istnieje. Prompt wskazujący nieskonfigurowany serwer nic nie robi, a agent może wypełnić lukę wiarygodnie wyglądającymi liczbami. Używaj dokładnej nazwy serwera z claude mcp list lub codex mcp list i odrzucaj każdą liczbę, której nie da się odtworzyć procedurą z tabeli weryfikacji.