Przejdź do głównej zawartości

Optymalizacja kosztów z AI

Twój rachunek z AWS wzrósł w zeszłym miesiącu o 38%. Dział finansów pyta dlaczego, nowy klaster staging, którego nikt nie otagował, jest zagrzebany gdzieś w EC2-Other, a konsola Cost Explorer wymaga dwudziestu kliknięć, żeby odpowiedzieć na pytanie, na które i tak będziesz musiał odpowiedzieć ponownie za tydzień. Nie potrzebujesz platformy FinOps. Potrzebujesz, żeby Twój agent kodujący odczytał dane rozliczeniowe, uszeregował marnotrawstwo i podał Ci dokładne komendy do naprawy.

I właśnie to robi ten przewodnik: podłącza AWS Billing & Cost Management MCP do Cursora, Claude Code i Codeksa, a następnie przechodzi przez realną pętlę — znajdź generatory kosztów, dopasuj rozmiar najgorszych przypadków, prognozuj trend i utrzymaj człowieka w pętli, zanim cokolwiek destrukcyjnego zostanie uruchomione.

  • Działającą konfigurację AWS Billing & Cost Management MCP, skonfigurowaną identycznie w Cursorze, Claude Code i Codeksie
  • Gotowy do wklejenia prompt, który zwraca Twoje największe generatory kosztów pogrupowane według usługi, uszeregowane działania dopasowujące rozmiar oraz notatkę o ryzyku dla każdego działania
  • 20-liniowy skrypt, który przepuszcza JSON z Cost Explorera przez Claude Opus 4.8 w celu uzyskania uszeregowanych rekomendacji — gdy wolisz to oskryptować, niż rozmawiać
  • Prompt prognozujący, który wykorzystuje Twoją rzeczywistą 90-dniową historię zamiast życzeniowej projekcji liniowej
  • Listę kontrolną Gdy to się zepsuje dla awarii, które faktycznie napotkasz: uwierzytelnianie MCP, nieaktualne dane i agent, który chce zterminować produkcję

Praca zaczyna się i kończy na jednym serwerze MCP. AWS Labs publikuje oficjalny serwer Billing and Cost Management MCP (następcę starszego serwera cost-analysis). Udostępnia on Cost Explorer, budżety, dopasowanie rozmiaru przez Compute Optimizer, Cost Optimization Hub, rekomendacje Savings Plans oraz porównania miesiąc do miesiąca — wszystko poprzez Twoje istniejące poświadczenia AWS.

Działa przez uvx, więc najpierw zainstaluj uv i upewnij się, że aws configure (lub AWS_PROFILE) rozwiązuje się do roli z uprawnieniami odczytu ce:Get*, compute-optimizer:Get* oraz cost-optimization-hub:*.

Sama konfiguracja serwera jest identyczna we wszystkich trzech narzędziach — ta sama komenda, te same argumenty, te same zmienne środowiskowe. Różni się jedynie sposób jego rejestracji.

Dodaj serwer do .cursor/mcp.json (projekt) lub do globalnych ustawień MCP Cursora, a następnie włącz go w Settings → MCP. Cursor automatycznie udostępnia narzędzia trybowi agenta:

{
"mcpServers": {
"awslabs.billing-cost-management-mcp-server": {
"command": "uvx",
"args": ["awslabs.billing-cost-management-mcp-server@latest"],
"env": {
"FASTMCP_LOG_LEVEL": "ERROR",
"AWS_PROFILE": "your-aws-profile",
"AWS_REGION": "us-east-1"
}
}
}
}

Otwórz panel agenta (Cmd/Ctrl+I), przełącz na tryb Agent i potwierdź, że narzędzia rozliczeniowe pojawiają się na liście narzędzi MCP, zanim zaczniesz promptować.

Z podłączonym MCP pierwszym zadaniem jest widoczność: które usługi się zmieniły, o ile i co stoi za zmianą. To tutaj nieprecyzyjny prompt (“przeanalizuj moje koszty”) marnuje turę, a ostry daje Ci uszeregowaną listę działań.

Poniższy prompt jest celowo opiniotwórczy — nazywa grupowanie, metrykę, okno i kształt wyniku. Wklej go bez zmian do dowolnego z trzech narzędzi.

Linijka do not run any modifications ma znaczenie. Bez niej agent w trybie automatycznego zatwierdzania może spróbować zastosować dopasowanie rozmiaru przez narzędzie zapisu. My chcemy analizy i komend — decyzja o zastosowaniu pozostaje po stronie człowieka.

Gdy masz już uszeregowaną listę, działaniem następczym, które się opłaca, jest polowanie na nieotagowane wydatki — to najczęstszy pojedynczy powód, dla którego rachunek jest “niewyjaśniony”:

Krok 3: Dopasuj rozmiar modułu (trzy narzędzia, jeden przepływ)

Dział zatytułowany „Krok 3: Dopasuj rozmiar modułu (trzy narzędzia, jeden przepływ)”

Widoczność mówi Ci, co naprawić. Następnym krokiem jest skłonienie agenta, by przekształcił rekomendację w zweryfikowaną zmianę w Twoim IaC. Rekomendacja jest identyczna we wszystkich narzędziach — “zmniejsz tę przewymiarowaną instancję m5.2xlarge do m5.large” — ale to, jak sterujesz każdym narzędziem, by edytowało Terraform, różni się.

Otwórz moduł Terraform w edytorze. W trybie Agent odwołaj się do pliku i ustalenia MCP, aby Cursor edytował w miejscu i pokazał Ci diff do zaakceptowania lub odrzucenia:

@main.tf The AWS cost MCP flagged aws_instance.api (m5.2xlarge) at 9% average CPU over 30 days. Change it to the Compute Optimizer recommended size, add a comment with the date and the % savings, and show me a terraform plan summary of what changes. Do not apply.

Użyj checkpointu Cursora przed zaakceptowaniem, aby móc cofnąć edycję jednym kliknięciem, jeśli plan wygląda źle.

Liniowa projekcja “w zeszłym miesiącu wydaliśmy X, więc wydamy X znowu” jest błędna w momencie, gdy użycie ma jakąkolwiek sezonowość. Gdy chcesz realnej prognozy, agent ma dwie uczciwe opcje: poprosić MCP o własną prognozę Cost Explorera albo pobrać surową 90-dniową historię i ją dopasować.

Dla większości zespołów wbudowana prognoza MCP wystarczy — poproś o nią wprost:

Gdy wolisz mieć model na własność — na przykład, by zasilić nim dashboard — pomiń czat i przepuść dane bezpośrednio przez Claude. Ten 20-liniowy skrypt pobiera prawdziwą historię z Cost Explorera i prosi Claude Opus 4.8 o uszeregowany, ustrukturyzowany zestaw rekomendacji. Działa tak:

// rank-cost-drivers.ts — run: npx tsx rank-cost-drivers.ts
import { CostExplorer } from '@aws-sdk/client-cost-explorer';
import Anthropic from '@anthropic-ai/sdk';
const ce = new CostExplorer({ region: 'us-east-1' });
const anthropic = new Anthropic(); // reads ANTHROPIC_API_KEY
const end = new Date().toISOString().slice(0, 10);
const start = new Date(Date.now() - 30 * 864e5).toISOString().slice(0, 10);
const { ResultsByTime } = await ce.getCostAndUsage({
TimePeriod: { Start: start, End: end },
Granularity: 'DAILY',
Metrics: ['UnblendedCost'],
GroupBy: [{ Type: 'DIMENSION', Key: 'SERVICE' }],
});
const msg = await anthropic.messages.create({
model: 'claude-opus-4-8',
max_tokens: 1500,
messages: [{
role: 'user',
content: `Here is 30 days of AWS daily cost grouped by service as JSON. Return the top
5 cost drivers, any service trending up more than 20% week-over-week, and one concrete
rightsizing or scheduling action per driver with an estimated monthly saving.
\n\n${JSON.stringify(ResultsByTime)}`,
}],
});
console.log(msg.content);

Dla masowych, prostych przebiegów klasyfikacyjnych — na przykład oznaczania tysięcy zasobów według środowiska na podstawie ich nazw — zejdź do najtańszego modelu zamiast flagowego:

const msg = await anthropic.messages.create({
model: 'claude-haiku-4-5', // cheapest tier, ~$1/$5 per Mtok — fine for bulk tagging
max_tokens: 256,
messages: [{ role: 'user', content: tagInferencePrompt }],
});

Jeśli Twoje wydatki żyją w Kubernetes, a nie w surowym EC2, zamień AWS MCP na MCP klastra. Społecznościowy serwer Kubernetes MCP (mcp-server-kubernetes na npm) pozwala agentowi odczytać żądania zasobów względem rzeczywistego użycia — to dane stojące za niemal każdym ustaleniem o marnotrawstwie na poziomie poda.

Dodaj go w ten sam sposób (claude mcp add --transport stdio k8s -- npx -y mcp-server-kubernetes albo odpowiadający blok .cursor/mcp.json / config.toml), a następnie:

Dla prawdziwego porównania kosztów multi-cloud bądź szczery co do narzędzi: nie istnieje pojedynczy godny zaufania MCP do “arbitrażu”. Używaj własnego MCP każdego dostawcy (AWS billing MCP powyżej; GCP i Azure mają własne eksporty rozliczeniowe) i każ agentowi znormalizować liczby — a oszczędności z migracji między chmurami traktuj jako model, a nie gwarancję, bo koszty transferu wychodzącego i przebudowy architektury rutynowo wymazują nagłówkową różnicę.

  1. Narzędzia MCP w ogóle się nie pojawiają / każde wywołanie zwraca błąd uwierzytelniania. Serwer startuje, ale Cost Explorer zwraca 403. Niemal zawsze AWS_PROFILE rozwiązuje się do złego konta lub do roli bez ce:Get*. Uruchom aws sts get-caller-identity z tym profilem, potwierdź konto i sprawdź, czy polityka IAM zawiera akcje odczytu Cost Explorer, Compute Optimizer i Cost Optimization Hub. Cost Explorer musi też być włączony w konsoli rozliczeniowej, zanim jakiekolwiek API zwróci dane.

  2. uvx nie zostaje znaleziony lub serwer nie uruchamia się. Konfiguracja jest poprawna, ale uv nie jest zainstalowany albo nie ma go w PATH, który widzi narzędzie. Zainstaluj uv, zrestartuj narzędzie, aby podchwyciło nowy PATH, i przetestuj surową komendę w terminalu: uvx awslabs.billing-cost-management-mcp-server@latest powinno wystartować i czekać na stdio.

  3. Liczby wyglądają na nieaktualne o dzień czy dwa. Dane Cost Explorera mają opóźnienie 24–48 godzin i aktualizują się do trzech razy dziennie — nie są w czasie rzeczywistym. Jeśli agent zgłasza wczorajszy skok jako brakujący, to jest oczekiwane. Dla czegoś bliższego czasu rzeczywistego potrzebujesz eksportów CUR lub metryk rozliczeniowych CloudWatch, a nie Cost Explorera.

  4. Agent chce zastosować destrukcyjną zmianę. Proponuje zterminowanie instancji lub zmniejszenie produkcji i — w trybie automatycznego zatwierdzania — próbuje to uruchomić. Właśnie dlatego każdy prompt powyżej kończy się słowami “do not apply” i dlatego profil MCP jest tylko do odczytu. Trzymaj zatwierdzenia włączone (--ask-for-approval on-request w Codeksie, akceptacja/odrzucanie diffów w Cursorze, weryfikacja przed uruchomieniem w Claude Code) dla wszystkiego, co modyfikuje infrastrukturę.

  5. Rekomendacja dopasowania rozmiaru opiera się na cichym oknie. Compute Optimizer mówi “zmniejsz”, bo okres obserwacji ominął Twój miesięczny szczyt. Zawsze każ agentowi podać okno obserwacji i pogodzić je ze znaną sezonowością przed zastosowaniem.