mcpField
C
cost-audit

cost-audit

github.com/runpodクラウド・DevOps473.0k 回インストール2 日前に更新
リポジトリ

cost-audit について

Runpod アカウントの支出やアイドル状態のリソース、リソース別の費用を読み取り専用で調べるコスト監査スキルです。生データの読み取りにアイドル判定と費用の帰属分析を加え、変更はユーザーの承認後に別のスキルへ引き継ぎます。

主な機能

  1. 01リソースと請求データの読み取り
  2. 02アイドル状態の Pod とワーカーの特定
  3. 03リソース別の費用帰属
  4. 04アイドル費用の種類の区別
  5. 05承認後の変更引き継ぎ

活用シーン

  1. 01アカウント全体の支出確認
  2. 02稼働中のアイドル Pod の特定
  3. 03Serverless ワーカー費用の分析
  4. 04請求記録から費用元を特定

MCP 対応

runpod-mcp のツールを使って Runpod のリソースと請求情報を読み取ります。リソースの停止、削除、更新は行いません。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/runpod/runpod-plugins-official --skill cost-audit

インストール後、Claude Code で/cost-auditを入力して読み込まれたか確認します。

詳細

コスト監査

Runpod アカウントの支出先と、コストの漏れを止める方法を説明します。このスキルは完全に読み取り専用です。支出を調査、評価、説明した後、判断はユーザーに委ねます。リソースの停止、削除、再設定を独自に行うことは決してありません。適用操作は別のツールに引き継ぎます(Pod の停止は pod-doctor、サーバーレスの min-workers を 0 にする操作は endpoint-ops)。いずれも、ユーザーが明示的に承認した後に限ります。

すべての数値は読み取り結果に基づきます。時間単価はリソース一覧から、現時点までの支出額は請求情報の読み取りから取得します。読み取っていない数値を捏造したり推定したりすることはありません。月間予測を示せるのは、時間単価を併記した read_hourly × hours の計算に限られます。

生の請求情報や一覧の読み取りは runpod-mcp のツール呼び出しで行います。このスキルはその上にある監査の手順です。アイドル状態の評価、アイドルワーカーとアイドル Pod の区別、そして通常の読み取りでは行われないリソースごとの支出の割り当てを担います。

必要な機能

以下は機能の名称です。このサーバーで各機能を提供するツールは、下記のツールバインディングに記載されています。すべて読み取り操作です。

  • コスト情報付きの Pod 一覧表示と、個別 Pod の詳細確認。
  • サーバーレスエンドポイントの一覧表示と、min/max workers 設定の個別確認。
  • ネットワークボリュームの一覧表示。
  • 請求履歴の集計と、リソース別の請求情報(Pod、サーバーレスエンドポイント、Public Endpoints、ネットワークボリューム、クラスター)。

4 つの手順

必ず最初に読み取りを行います。プロンプトに合う手順を 1 つ選び、求められていない限り 4 つすべてを実行しないでください。

  • アカウント全体の状況。 Pod、エンドポイント、ネットワークボリュームを一覧表示し、直近の期間の請求額の合計を取得します。各カテゴリの件数と実行状態、現在の消費額、請求情報の読み取り結果に基づく現時点までの支出額を報告します。空のカテゴリは、状況を取り繕わず「ネットワークボリュームなし」のように空であることを示します。
  • アイドル状態の Pod。 Pod を一覧表示します。Pod のレコードでは、status が状態フィールド、cost が Pod の 1 時間あたりの料金(米ドル)です(読み取り結果にある正確なフィールド名です)。status=RUNNING の各 Pod について、cost を記載し、cost × 730 を「このレートでの $/月」として算出します。予測コストの高い順に並べ、1 つの表(名前、GPU、$/時、稼働時間、$/月)にまとめ、最もコストの高い Pod を示します。すべての Pod が停止中/EXITED の場合も、「実行中のものはありません」だけで済ませないでください。GPU の消費がないこと、そして停止中の Pod も終了するまではボリュームのディスク料金が発生し続けることを明記し、そのうえで Pod ごとの表を示します。停止中の Pod の cost は 0 なので、再開した場合の料金は、そのタイプの GPU カタログ価格を使い、その旨を明記します。行の cost が欠落している場合は ? と表示し、合計から除外します。値を捏造してはいけません。長期間停止しているものは停止(または終了)するよう推奨しますが、何も変更しないでください。
  • サーバーレスのアイドルワーカー費用。 min workers ≥ 1 のサーバーレスエンドポイントは、トラフィックがゼロでも課金されるワーカーを常時起動します。これがサーバーレスのアイドルワーカー費用であり、アイドル状態の Pod とは異なります。エンドポイントのワーカー設定を調べて min-workers ≥ 1 であることを確認し、そのエンドポイントのサーバーレス請求情報の読み取り結果を引用して、仕組みを説明します。対処法は min-workers を 0 にすることです(コールドスタートとのトレードオフがあります)。これを推奨し、適用は endpoint-ops に引き継ぎます。ここでは変更しないでください。min-workers ≥ 1 のエンドポイントがない場合、費用はスケール・トゥ・ゼロのエンドポイントで発生したワーカー実行時間です。ワーカーは実行を開始した時点から完全に停止するまで課金され、モデルの読み込み、ジョブ自体、最後のリクエスト後のアイドルタイムアウトを含めて、秒単位で切り上げられます。ジョブが完了したか、失敗したか、あるいは何も完了しないままワーカーがクラッシュループしたかは関係ありません。エンドポイントごとのサーバーレス請求行とワーカー/ジョブの状態から費用の発生元を特定し、該当するエンドポイントを示します。これは稼働中のスケール・トゥ・ゼロエンドポイントで発生したワーカー実行時間(起動、実行、アイドルタイムアウト)であり、常時起動ワーカーでも架空の請求でもないことを明確に述べます。
  • 支出の内訳。 まず集計結果の list-billing を読み取り、タイプ別の合計を取得します。内訳はこの結果で直接確認できます。必要な場合のみタイプごとに詳しく調べ、必ずサイズに配慮します。サーバーレスの読み取りでは lastN: 1(または対象期間全体をカバーする bucketSize)を指定し、各エンドポイントにつき 1 件のレコードだけ取得します。エンドポイントが多いアカウントでエンドポイントごと・バケットごとのデータを既定のまま取得すると、ツールの結果上限を超えます。大きすぎる結果は途中で切り詰められ、監査を続けられなくなります。支出をリソース名ごとに特定して降順に並べ、最もコストの高いものを示します。金額は請求情報の読み取り結果から得たものとして提示します。カテゴリに結果が返されなかった場合も、省略せず $0/空として示します。すべてのカテゴリがゼロを返した場合(どこにも支出がない場合)は、その旨を述べます。各タイプを $0、合計を $0 とした表を提示し、稼働中の一覧(list-pods/list-endpoints/list-network-volumes がすべて空であることを確認)と照合します。請求が発生したものも、現在費用が発生しているものもないため、最もコストの高いタイプは存在しないと明記します。対象期間については読み取り結果が信頼できる情報です。ユーザーが別の期間を指定した場合にのみ、再取得してください。
  • 支出元を明確にする(すべての支出に関する質問)。 請求情報の読み取り結果で実際の支出が確認された場合は、原因となったリソースがすでに削除されていても、手元のデータに基づいて支出元を明示します(「存在しなくなったエンドポイントで実行されたサーバーレスジョブから $X(請求行に記載された時刻に実行)」など)。その帰属を答えとして明確に伝え、追加の説明はユーザーが選べるものを最大 1 文だけ付けます。質問をユーザーに返すのではなく、読み取り結果から裏付けられる支出元を最初に示します。与えられていないツール(シェル、ウェブなど)を使ってはいけません。必要な金額はすべて、すでに取得した請求情報の読み取り結果と一覧に含まれているので、返信内で直接分析します。エンドポイントごとのサーバーレスの詳細を調べるツールは list-serverless-billing です。list-endpoint-billing は Public Endpoint(従量課金制のモデル API)の支出を取得するもので、別の製品です。まず結論を伝えてください。つまり、判明した内容を示し、その後に推奨する次のステップまたは追加の質問を最大 1 つだけ提示します。

厳守事項

  • 読み取り専用です。このスキルは変更を伴うツールを呼び出しません。停止、削除、更新は行いません。
  • ユーザーが指定していないリソースについては、変更をどれほど緊急に命じられても同様です。指示によって変わるのは緊急度であり、権限ではありません。監査結果と、ユーザーが実行するための正確な ID および操作を示すことが、その命令への完全な回答です。許可を尋ねるのではなく、その回答を提示し、「とにかく試す」ために変更を実行してはいけません。
  • 付与されたツールを使用してください。MCP のみのセッションでは、シェル、スクリプト、ウェブ取得ツールなど、利用できないものに手を伸ばしてはいけません。利用できないツールは呼び出せず、監査結果を何も提示できなくなります。このスキルに必要な数値はすべて、MCP の課金情報とリストの読み取りで得られます。
  • 読み取り結果が切り詰められて返された場合は、より範囲を絞って再読み取りします(ページを小さくする、エンドポイントを1つずつ読む、lastN: 1 を指定する、対象バケットを絞る)。欠落した出力の復元を試みたり、外部スクリプトで解析したり、追加のツールアクセスを求めたりしてはいけません。
  • 変更の適用を推奨する場合は、ユーザーが同意した後に限り、pod-doctor(停止)または endpoint-ops(min-workers-0)に引き継ぎます。引き継ぎ先を示してください。実行してはいけません。
  • すべての金額はツールの読み取り結果に基づくものとします。時間単価または課金の情報源を明記してください。予測値は read_hourly × hours で計算し、根拠のない数値を提示してはいけません。
  • 該当項目がないカテゴリは、ないものとして報告してください。存在しないことも監査結果であり、補うべき欠落ではありません。
  • 稼働時間が1時間未満の Pod をアイドルとして判定してはいけません。アイドルとみなすには稼働したばかりです。
  • Pod のアイドル時の費用と、サーバーレスのアイドルワーカー費用の両方が関係する可能性がある場合は、明確に区別してください。

エラー処理

  • いずれかのリストで 401 が発生した場合、API キーが無効です。その旨を伝えて終了してください。キーなしでは監査できません。
  • 監査の途中で 429 が発生した場合は、部分的な状況を報告し、未完了であることを明記してください。短時間に繰り返し再試行してはいけません。
  • Pod の行に cost がない場合や、課金バケットが空の場合、それはエラーではなくデータです。? / $0 と表示して続行してください。

ツールの対応表

機能ツール
Pod の一覧(費用付き)list-pods
Pod 1つの詳細を確認get-pod
エンドポイントの一覧/詳細を確認list-endpoints、get-endpoint
エンドポイントのワーカー設定/数list-endpoint-workers、endpoint-health
ネットワークボリュームの一覧list-network-volumes
課金の集計(種類ごとに1回の呼び出し)list-billing
リソースごとの課金list-pod-billing、list-serverless-billing(サーバーレスエンドポイント)、list-endpoint-billing(パブリックエンドポイント)、list-network-volume-billing、list-cluster-billing

ここに記載されているツールがセッションのツール一覧にない場合は、その旨を伝え、結果を捏造せず、代わりに最も近い読み取りツールを使用してください。

レポートテンプレート — 費用の概要

費用に関する回答には、今回実行した課金情報の読み取り結果だけを使った種類別の表(Pod/サーバーレス/パブリックエンドポイント/ネットワークボリューム/クラスター/ストレージ。$0.00 の場合も含め、すべての種類を必ず記載)、合計行、最も費用の高い項目(または課金対象がなかったことの明示)、ユーザーの質問に答える1文の結論を含めます。費用の帰属には、上記のコミットルールを適用してください。

数値の形式:

  • 金額は、課金情報と一覧の読み取り結果から得た正確なドル金額とします。
  • 表の行の合計は、記載した合計額と一致させてください。

契約

この一連の操作におけるすべての応答には、複数の操作にまたがる回答契約(読み取り結果に基づく確定情報、曖昧さを避けた確定的な報告、変更対象はこの会話で作成されたリソースに限定、独立して完結した最終メッセージ、失敗を正直に報告、付与されたツールのみを使用)が適用されます。この契約は runpod-mcp スキルで定義されています。この会話で runpod-mcp スキルがまだ読み込まれていない場合は、次のツール呼び出しの前に読み込んでください。変更できるリソース、依頼を実行に移してよい条件、ユーザーの判断を待つべき場合に関するルールは、このスキル内では繰り返していません。

コメント