Entwickler

Kommandozeile

Jedes Tool des Costfluent-MCP-Servers mit dem Befehl costfluent aus einem Terminal, einem Skript oder einem CI-Job ausführen, ein Token mit costfluent whoami prüfen, sich statt mit einem Token mit costfluent login anmelden, die Kostenschätzung eines Terraform-Pull-Requests aus jeder CI senden und Claude Code, Cursor, Codex, VS Code oder Copilot CLI mit dem MCP-Server verbinden.

Der Befehl costfluent führt jedes Tool des MCP-Servers aus einem Terminal, einem Skript oder einem CI-Job aus. Ein Befehl ist der Name des Tools mit Bindestrichen und nimmt die Argumente des Tools als Flags, sodass er genau das liest, was das Tool liest, mit derselben Prüfung der Berechtigung, derselben Validierung und demselben Ergebnis. Er gibt JSON für ein Skript und eine Tabelle für Sie aus. Der Befehl eines lesenden Tools liest nur; der Befehl eines schreibenden Tools legt an oder ändert, was das Tool tut, und erst, wenn ein Eigentümer KI-Agenten Objekte anlegen und ändern lässt (die MCP-Seite sagt, wie). Kein Befehl löscht etwas in Costfluent oder greift auf Ihre Cloud zu. costfluent estimate, unten beschrieben, sendet die Kostenschätzung eines Terraform-Pull-Requests aus jeder CI.

Bevor Sie beginnen

Enthalten im Pro-, Business- und Custom-Tarif. Tarife vergleichen

  • Ein API-Token. Erstellen Sie es, wie es Token erstellen in der Anleitung zum MCP-Server beschreibt, aus der Vorlage Nur lesen; ein CI-Job bekommt ein eigenes Token. Auf Ihrem eigenen Rechner können Sie sich stattdessen anmelden.
  • Ein Rechner mit macOS, Linux oder Windows, amd64 oder arm64.

Installieren

Laden Sie das Archiv für Ihre Plattform aus dem neuesten Release herunter und legen Sie costfluent in Ihren PATH. Das Archiv enthält costfluent und den MCP-Server costfluent-mcp. Oder bauen Sie beide mit Go:

TerminalCode
go install github.com/costfluent/costfluent-mcp/cmd/costfluent@latest go install github.com/costfluent/costfluent-mcp/cmd/costfluent-mcp@latest

Jedes Release trägt eine Build-Provenance-Attestierung, die gh attestation verify <archive> --repo costfluent/costfluent-mcp prüft.

Einen Befehl ausführen

  1. Setzen Sie COSTFLUENT_API_TOKEN auf das Token, oder melden Sie sich an. COSTFLUENT_BASE_URL ist optional, standardmäßig https://api.costfluent.com und muss https verwenden.
  2. Führen Sie costfluent whoami aus, um zu sehen, was die API über das Token sagt: seinen Namen, seinen Arbeitsbereich und seine Berechtigungen.
  3. Führen Sie einen Befehl aus, etwa die Abfrage unten. costfluent <command> --help listet die Flags eines Befehls.
TerminalCode
export COSTFLUENT_API_TOKEN=<token> costfluent whoami costfluent query-costs --start-date 2026-10-01 --end-date 2026-10-31 --group-by ServiceName costfluent list-budgets --output json | jq '.items[] | select(.state == "over")'

Anmelden

Statt mit einem Token meldet costfluent login Sie über Ihren Browser an, wo Sie den Lesezugriff auf eine Organisation zulassen, wie Mit einer App anmelden beschreibt. Befehle laufen danach ohne COSTFLUENT_API_TOKEN; ein gesetztes Token hat weiter Vorrang. costfluent logout widerruft die Anmeldung und vergisst sie auf diesem Rechner, auch wenn der Widerruf Costfluent nicht erreicht.

TerminalCode
costfluent login costfluent whoami costfluent logout
  • Die Anmeldung liegt im Anmeldedatenspeicher des Betriebssystems: im macOS-Schlüsselbund, im Secret Service unter Linux oder in der Windows-Anmeldeinformationsverwaltung. Auf einem Rechner ohne einen solchen Speicher legt costfluent login --insecure-storage sie in costfluent/credentials.json unter XDG_CONFIG_HOME oder im Konfigurationsverzeichnis des Systems ab, nur für Sie lesbar, und ein Befehl lehnt die Datei ab, sobald andere sie lesen können. Ohne das Flag schlägt die Anmeldung dort fehl und widerruft, was sie erhalten hat.
  • Die Seite, die sich öffnet, zeigt costfluent login als App, die Costfluent nicht geprüft hat und die nur zu Ihrem Rechner zurückkehrt, weil ihre Antwort an den Befehl auf diesem Rechner zurückgeht: Lassen Sie sie zu, wenn Sie den Befehl selbst ausgeführt haben.
  • --no-browser gibt die Adresse zum Öffnen aus, statt Ihren Browser zu öffnen. --timeout legt fest, wie lange der Befehl auf Ihre Zustimmung wartet, etwa --timeout 10m; sonst wartet er 5 Minuten.
  • COSTFLUENT_BASE_URL wählt die API wie bei jedem Befehl, und jede API behält ihre eigene Anmeldung.
  • Ist die Anmeldung abgelaufen oder wurde sie widerrufen, endet ein Befehl mit 3 und bittet Sie, costfluent login erneut auszuführen.

Befehle

BefehlWas er tutBerechtigung
costfluent list-workspacesDie Arbeitsbereiche, die das Token lesen kannArbeitsbereiche anzeigen
costfluent query-costsKosten, Nutzung oder Ressourcenanzahl über einen Zeitraum, nach bis zu drei Dimensionen gruppiert und durch einen Kostenfilter eingegrenztKosten anzeigen
costfluent list-cost-reportsDie gespeicherten Kostenberichte eines ArbeitsbereichsKostenberichte anzeigen
costfluent get-cost-report-dataDie Zahlen, die ein gespeicherter Bericht jetzt zeigtKosten anzeigen, für einen Bericht mit einer Geschäftskennzahl auch Kostenberichte anzeigen
costfluent list-annotationsDie Anmerkungen eines Arbeitsbereichs nach DatumKostenberichte anzeigen
costfluent list-budgetsBudgets mit ihren aktuellen Ausgaben und ihrem ZustandBudgets anzeigen
costfluent list-anomaliesErkannte Kostenanomalien, die neuesten zuerstAnomalien anzeigen
costfluent list-savings-itemsDie Einsparpotenziale eines Arbeitsbereichs mit ihrer geschätzten monatlichen Einsparung und ihrem StatusEinsparungen anzeigen
costfluent list-commitmentsDie Savings Plans, Reservierungen und Committed Use Discounts eines ArbeitsbereichsKosten anzeigen
costfluent get-commitment-coverageWie viel der dafür infrage kommenden Nutzung Commitments in einem Zeitraum abgedeckt habenKosten anzeigen
costfluent get-kubernetes-efficiencyKosten, Leerlaufkosten sowie genutzte gegenüber angeforderter CPU und angefordertem Speicher je Cluster, Namespace oder WorkloadKosten anzeigen
costfluent create-annotationSetzt eine Notiz an einem Datum an einen oder mehrere gespeicherte KostenberichteKostenberichte bearbeiten
costfluent create-cost-reportSpeichert einen neuen KostenberichtKostenberichte erstellen
costfluent update-cost-reportÄndert einen gespeicherten Kostenbericht; was der Aufruf auslässt, bleibt, wie es istKostenberichte bearbeiten
costfluent create-budgetLegt ein Budget anBudgets erstellen
costfluent update-budgetÄndert ein Budget; was der Aufruf auslässt, seine Warnungen eingeschlossen, bleibt, wie es istBudgets bearbeiten
costfluent create-cost-alertLegt eine Kostenwarnung anKostenwarnungen verwalten
costfluent update-cost-alertÄndert eine Kostenwarnung; was der Aufruf auslässt, bleibt, wie es istKostenwarnungen verwalten
costfluent pause-cost-alertPausiert eine KostenwarnungKostenwarnungen verwalten
costfluent resume-cost-alertSetzt eine pausierte Kostenwarnung fortKostenwarnungen verwalten
costfluent create-dashboardLegt ein Dashboard anDashboards erstellen
costfluent add-dashboard-widgetFügt einem Dashboard ein Widget hinzuDashboards bearbeiten, dazu Kostenberichte anzeigen
costfluent acknowledge-anomalyBestätigt eine erkannte KostenanomalieAnomalien bestätigen
costfluent set-savings-item-statusSetzt ein Einsparpotenzial auf Angenommen, Umgesetzt oder Abgelehnt, eine Ablehnung mit ihrem GrundAuf Einsparungen reagieren
costfluent assign-savings-item-ownerLegt fest, wer für ein Einsparpotenzial verantwortlich istEinsparungen verwalten
costfluent search-docsDurchsucht die Costfluent-Dokumentation auf Deutsch oder Englisch nach den Abschnitten, die eine Frage beantworten; braucht kein TokenKeine
costfluent get-doc-pageGibt eine Seite der Costfluent-Dokumentation oder einen ihrer Abschnitte als Markdown aus; braucht kein TokenKeine

Ein Flag ist das Argument des Tools mit Bindestrichen: Aus start_date von query_costs wird --start-date. Ein Flag, das eine Liste nimmt, etwa --group-by, geben Sie für jeden Wert einmal an.

In Planung: Commitment-Abdeckung

In Costfluent noch nicht verfügbar.

costfluent list-commitments und costfluent get-commitment-coverage lesen die Commitments, die die Verbindungen eines Arbeitsbereichs halten, und wie viel der infrage kommenden Nutzung sie abgedeckt haben.

Einen Assistenten verbinden

costfluent mcp install gibt den Eintrag aus, der costfluent-mcp in Ihrem Assistenten startet, oder fügt ihn mit --write der Konfigurationsdatei des Assistenten hinzu.

  1. Führen Sie costfluent mcp install --client <client> mit claude-code, cursor, codex, vscode oder copilot aus und prüfen Sie den ausgegebenen Eintrag.
  2. Führen Sie den Befehl erneut mit --write aus, um den Eintrag der Datei hinzuzufügen, die die Tabelle unten nennt. Mit --project schreibt er stattdessen die Projektdatei von Cursor oder Codex im aktuellen Verzeichnis.
  3. Starten Sie den Assistenten neu, aus einer Shell, in der COSTFLUENT_API_TOKEN gesetzt ist.
ClientDatei
claude-code.mcp.json im aktuellen Verzeichnis
cursor~/.cursor/mcp.json, mit --project .cursor/mcp.json
codex~/.codex/config.toml, mit --project .codex/config.toml
vscode.vscode/mcp.json im aktuellen Verzeichnis
copilot~/.copilot/mcp-config.json, oder mcp-config.json in COPILOT_HOME

Der Eintrag enthält das Token nur, wenn Sie es verlangen. Claude Code, Cursor, Codex und Copilot CLI lesen es aus COSTFLUENT_API_TOKEN in ihrer eigenen Umgebung, und VS Code fragt beim ersten Start des Servers danach. Mit --write --embed-token enthält der Eintrag stattdessen das Token aus COSTFLUENT_API_TOKEN, für einen Assistenten, der ohne diese Variable startet, und nur Sie können die Datei dann lesen: Halten Sie sie aus der Versionskontrolle heraus, und widerrufen Sie das Token, wenn Sie den Assistenten nicht mehr nutzen. Ein aus dem Dock gestartetes Cursor sieht die Variablen Ihrer Shell nicht: Starten Sie es aus einer Shell, oder lassen Sie envFile im Eintrag auf eine Datei zeigen, die die Variable setzt. Ein ohne die Variable gestartetes Claude Code gibt dem Server den Text ${COSTFLUENT_API_TOKEN} statt eines Tokens, den die API ablehnt.

Kostenschätzungen aus der CI senden

costfluent estimate submit sendet die Schätzung, die Infracost für einen Terraform-Pull-Request erstellt, an Costfluent, und costfluent estimate apply hält fest, dass die Änderung angewendet wurde, mit den IDs, die Terraform den erstellten oder ersetzten Ressourcen gegeben hat. Mit diesen IDs findet Costfluent jede Ressource in Ihren Abrechnungsdaten und vergleicht die Schätzung mit den Kosten, die folgten. Die beiden Befehle tun aus jeder CI, was die Kostenschätzungs-Action von Costfluent in GitHub Actions tut, und wandeln das JSON von Infracost und Terraform mit den Programmen der Action selbst um, sodass beide dieselbe Schätzung senden.

  1. Öffnen Sie Einstellungen, dann API-Token, und wählen Sie API-Token erstellen. Wählen Sie unter Zugriff den Arbeitsbereich, zu dem die Schätzungen gehören, und unter Vorlage die Vorlage Nur lesen; entfernen Sie dann jede Berechtigung und wählen Sie Kostenschätzungen übermitteln, die einzige, die die Befehle brauchen.
  2. Speichern Sie das Token als maskiertes Secret der Pipeline und geben Sie es dem Job als COSTFLUENT_API_TOKEN. Kein Flag nimmt das Token.
  3. Schreiben Sie im Job, der bei Merge Requests oder Pull Requests läuft, den Vergleich von Infracost als JSON (infracost diff --format json mit Infracost v0.10, infracost diff --json mit Infracost v2) und den gespeicherten Plan mit terraform show -json, und führen Sie dann costfluent estimate submit aus.
  4. Wenden Sie im Job, der die gemergte Änderung anwendet, den gespeicherten Plan an, schreiben Sie den Plan und dann den Zustand mit terraform show -json und führen Sie costfluent estimate apply mit der Nummer des gemergten Pull Requests aus.
FlagWas es nimmt
--workspace-idDen Arbeitsbereich, zu dem die Schätzung gehört; erforderlich
--repositoryDas Repository, etwa acme/infra; erforderlich
--pull-requestDie Nummer des Pull Requests oder Merge Requests; erforderlich
--infracost-jsonFür submit das JSON von Infracost; erforderlich
--terraform-plan-jsonterraform show -json des gespeicherten Plans: optional für submit, wo es jeder geänderten Ressource die IDs gibt, über die Costfluent ihre Kosten misst, und erforderlich für apply
--terraform-state-jsonFür apply terraform show -json des Zustands nach dem Anwenden; erforderlich
--commit, --url, --infracost-versionFür submit den Commit, einen https-Link zum Pull Request und die Version von Infracost, die mit der Schätzung gespeichert werden
--fail-aboveFür submit den Höchstwert der geplanten monatlichen Änderung in der Währung der Schätzung

GitLab CI

Dieser Job läuft bei Merge Requests, nach einem Job plan, der infracost.json und plan.json als Artefakte behält. COSTFLUENT_API_TOKEN ist eine maskierte CI/CD-Variable.

YAMLCode
cost-estimate: image: golang:1.27.4 needs: [plan] rules: - if: $CI_PIPELINE_SOURCE == "merge_request_event" script: - go install github.com/costfluent/costfluent-mcp/cmd/costfluent@latest - >- costfluent estimate submit --workspace-id wsp_8f3k2m --repository "$CI_PROJECT_PATH" --pull-request "$CI_MERGE_REQUEST_IID" --infracost-json infracost.json --terraform-plan-json plan.json --commit "$CI_COMMIT_SHA" --url "$CI_MERGE_REQUEST_PROJECT_URL/-/merge_requests/$CI_MERGE_REQUEST_IID" --fail-above 500

Azure Pipelines

Diese Pipeline läuft bei Pull Requests in Azure Repos, die eine Richtlinie zur Buildvalidierung auf dem Zielbranch startet. COSTFLUENT_API_TOKEN ist eine geheime Pipelinevariable, die ein Schritt nur sieht, wenn sein env sie zuordnet.

YAMLCode
trigger: none pool: vmImage: ubuntu-24.04 steps: - task: GoTool@0 inputs: version: 1.27.4 - script: | go install github.com/costfluent/costfluent-mcp/cmd/costfluent@latest echo "##vso[task.prependpath]$HOME/go/bin" displayName: Install costfluent # Run Terraform and Infracost here, writing plan.json and infracost.json. - script: >- costfluent estimate submit --workspace-id wsp_8f3k2m --repository "$(Build.Repository.Name)" --pull-request "$(System.PullRequest.PullRequestId)" --infracost-json infracost.json --terraform-plan-json plan.json --commit "$(System.PullRequest.SourceCommitId)" --fail-above 500 displayName: Post the cost estimate env: COSTFLUENT_API_TOKEN: $(COSTFLUENT_API_TOKEN)

Das Anwenden festhalten

Nachdem die gemergte Änderung aus ihrem gespeicherten Plan angewendet ist, in jeder CI:

TerminalCode
terraform show -json tfplan > plan.json terraform apply -input=false tfplan terraform show -json > state.json costfluent estimate apply --workspace-id wsp_8f3k2m --repository acme/infra --pull-request 42 \ --terraform-plan-json plan.json --terraform-state-json state.json
  • submit erstellt die Schätzung des Pull Requests beim ersten Senden und ersetzt sie bei jedem weiteren, bis die Änderung angewendet ist. Ein Vergleich, der keine bepreiste Ressource ändert, sendet nichts, und der Befehl endet mit 0.
  • Beide Befehle geben die Quittung der Schätzung aus: ihre ID und ihren Zustand und, von submit, die geplanten monatlichen Kosten vorher und nachher, die Änderung und wie viele Ressourcen Infracost nicht bepreisen konnte, wie Costfluent sie in der Währung der Schätzung berechnet hat. Eine Zeile auf stderr sagt, ob die Schätzung erstellt oder aktualisiert wurde.
  • --fail-above wird geprüft, nachdem die Quittung ausgegeben ist, und vergleicht die exakten Beträge: Eine Änderung gleich --fail-above besteht, eine Änderung darüber endet mit 4, und eine negative Änderung nie. Antwortet Costfluent ohne die geplanten Summen, sagt eine Warnung, dass --fail-above nicht angewendet wird, und der Befehl endet mit 0, statt jeden Pull Request an einer Änderung scheitern zu lassen, die er nicht lesen kann.
  • apply warnt vor jeder Ressource, die der Plan erstellt oder ersetzt hat und für die der Zustand keine ID enthält, und lässt sie weg. Ein Pull Request ohne Schätzung im Arbeitsbereich hat nichts anzuwenden: Der Befehl sagt es mit dem Grund der API und endet mit 0.
  • Ein falsches oder fehlendes Flag oder eine Eingabedatei, die kein JSON ist, endet mit 2, bevor eine Anfrage gesendet wird.

Wie es sich verhält

  • Ein Befehl gibt JSON aus, wenn seine Ausgabe in eine Datei, eine Pipe oder ein CI-Log geht, und eine Tabelle, wenn sie in ein Terminal geht; --output json oder --output table legt es fest. Beträge behalten jede Stelle, die die API sendet.
  • Ein Befehl endet mit 0, wenn er erfolgreich war, mit 1, wenn der Aufruf fehlschlug, mit 2, wenn die Kommandozeile falsch ist, mit 3, wenn das Token fehlt, abgelehnt wird oder die Berechtigung nicht trägt, die der Befehl braucht, bevor der Befehl etwas liest, und mit 4, wenn ein von Ihnen gesetzter Schwellenwert überschritten wurde, wie ihn costfluent estimate submit --fail-above setzt.
  • Ein Fehler geht nach stderr: der Fehler der API als JSON, mit Status, Code, Detail und Trace-ID, wenn stderr kein Terminal ist, und eine Zeile, wenn es eines ist.
  • Eine Liste liefert eine Seite, wie das Tool; das Ergebnis nennt die nächste Seite, die --page liest.
  • Jeder Befehl zählt gegen das Anfragelimit des Tokens und wartet ein kurzes Limit ab, wie es der MCP-Server tut.
  • Eine Tabelle schreibt Steuerzeichen in Namen, Titeln und Tag-Werten als Escape-Folgen, denn Ihre Nutzer und Ihre Cloud-Konten schreiben sie, und ein Terminal würde sie ausführen.
  • Kein Befehl gibt das Token aus, und costfluent mcp install schreibt es nur mit --embed-token in eine Datei, das --write voraussetzt.
  • --write behält jeden anderen Server in der Datei und lehnt eine Datei ab, die schon einen Eintrag costfluent hat, sofern --force ihn nicht ersetzt. Eine Datei, die es nicht als reines JSON lesen kann, etwa eine mit Kommentaren, lässt es unverändert.

Verwandte Seiten