artifactbloat について
artifactbloat は、GitHub Actions の成果物サイズをワークフローごとに追跡するローカル CLI と MCP サーバーです。日付付きスナップショットを比較し、増加量の算出と、設定したしきい値を超えたワークフローの検出を行います。
主な機能
- 01ワークフロー別スナップショット集計
- 02初回から最新までの増加量
- 03しきい値による増加検出
- 04成果物ごとのサイズ比較
- 05全体のバイト数集計
活用シーン
- 01成果物が急増するワークフローの発見
- 02成果物の追加や削除時期の特定
- 03日付付きスナップショット間のサイズ確認
MCP 対応
日付付きワークフロースナップショットと任意の増加しきい値を受け取る `track_artifact_sizes` ツールを提供します。合計値、ワークフローの詳細、検出結果、判定を返します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
1掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| snapshots | array | はい | 追跡するアーティファクトのスナップショット(1 件以上) |
| growth_threshold_percent | number | いいえ | ワークフローにフラグを付ける増加率のしきい値(任意、デフォルトは 20) |
詳細
artifactbloat
CI アーティファクトは毎週、気付かないうちに数パーセントずつ増えていきます。 かつては小さなバンドルをアップロードしていたワークフローが、 いつの間にか巨大なものを送信するようになっても、 いつそうなったのか誰にも分からないことがあります。artifactbloat は、 アーティファクトのサイズを日付付きでスナップショットに記録し、 ワークフローごとにまとめて、増加量を分かりやすい数値で表示します。
- ワークフローごとの合計 — 日付順に並べたスナップショットと、 各ワークフローの最初、最後、最大のスナップショットの合計
- 増加量の差分 — 最初と最後のスナップショット間の変化を、
バイト数とパーセンテージで表示します(小数点以下4桁に丸めます。
最初の合計がゼロの場合は
nullとなるため、 空の状態から始まったワークフローでゼロ除算が発生することはありません) - 肥大化フラグ — 増加率が指定したしきい値(デフォルトでは20パーセント)
以上のワークフローにフラグを付けます。しきい値ちょうども含まれます。
フラグが付いた名前は個別に一覧表示され、判定結果を決定します。
1つでもフラグが付けば
growth_flagged、それ以外はsteadyとなります - アーティファクトごとの詳細 — ワークフローでこれまでに生成された
すべてのアーティファクト名について、最初と最後のスナップショットでの
サイズを表示します。アーティファクトがその時点で存在しない場合
(新規、削除、または途中のスナップショットにのみ存在する場合)は
いずれかの側が
nullとなり、両方の時点で存在する場合はバイト単位の差分も表示します - 全体の合計 — すべてのワークフローにおける最初と最後の合計値
計算は純粋なローカル処理です。ネットワークも設定も必要なく、 渡されたスナップショット以外のファイルを読み込むこともありません。 入力が無効な場合(スナップショット一覧がない、スナップショットに ワークフローがない、サイズが負の値、同じ日に同じワークフローを 複数回記録している、または1つのスナップショット内に同じアーティファクトが 複数ある場合)は、問題のあるパスを示すエラーで拒否され、 レポートは一部だけ生成されることはありません。
CLI
npx @reneturcios/artifactbloat track --input args.json
npx @reneturcios/artifactbloat --version
args.json には引数オブジェクト全体が含まれます。
{
"snapshots": [
{
"workflow": "build",
"date": "2026-01-01",
"artifacts": [
{ "name": "app-bundle", "size_bytes": 1048576 },
{ "name": "source-maps", "size_bytes": 262144 }
]
},
{
"workflow": "build",
"date": "2026-02-01",
"artifacts": [
{ "name": "app-bundle", "size_bytes": 1572864 },
{ "name": "source-maps", "size_bytes": 262144 }
]
}
],
"growth_threshold_percent": 20
}
growth_threshold_percent は省略可能で、デフォルトは
20です。レポートは JSON として出力されます。
終了コード:成功時は 0、実行時エラー時(読み取り不能または
無効な入力ファイル、無効な入力を含む)は 1、使用方法のエラー時は 2 です。
MCP サーバー
npx -y @reneturcios/artifactbloat mcp
MCP クライアントの設定:
{
"mcpServers": {
"artifactbloat": {
"command": "npx",
"args": ["-y", "@reneturcios/artifactbloat", "mcp"]
}
}
}
ツール
-
track_artifact_sizes— ワークフローごとに Actions アーティファクトの サイズを経時的に追跡します。snapshots(配列、必須、1件以上) —{workflow, date, artifacts}オブジェクトとして指定するスナップショットです。 各アーティファクトは{name, size_bytes}で、dateは記録日を表すYYYY-MM-DD形式ですgrowth_threshold_percent(数値、省略可能、0以上、 デフォルトは20)— 最初から最後のスナップショットまでの合計の 増加率が、このパーセンテージ以上のワークフローにフラグを付けます
{workflow_count, total_first_bytes, total_last_bytes, workflows, flagged_workflows, verdict}を返します。
Docker
docker run -i ghcr.io/cloudcorprecords/artifactbloat
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/artifactbloat track --input /w/args.json
開発
npm install
npm run build # tsc -> dist/
npm test # tsx --test test/*.test.ts (pure local, no network)
npm run dev # run the CLI from source
ライセンス
MIT — Copyright (c) 2026 Rene Turcios
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。