mcpField
A
artifactbloat

artifactbloat

ローカル
github.com/CloudCorpRecords開発ツール01 週間前に更新

artifactbloat について

artifactbloat は、GitHub Actions の成果物サイズをワークフローごとに追跡するローカル CLI と MCP サーバーです。日付付きスナップショットを比較し、増加量の算出と、設定したしきい値を超えたワークフローの検出を行います。

主な機能

  1. 01ワークフロー別スナップショット集計
  2. 02初回から最新までの増加量
  3. 03しきい値による増加検出
  4. 04成果物ごとのサイズ比較
  5. 05全体のバイト数集計

活用シーン

  1. 01成果物が急増するワークフローの発見
  2. 02成果物の追加や削除時期の特定
  3. 03日付付きスナップショット間のサイズ確認

MCP 対応

日付付きワークフロースナップショットと任意の増加しきい値を受け取る `track_artifact_sizes` ツールを提供します。合計値、ワークフローの詳細、検出結果、判定を返します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"cloudcorprecords-artifactbloat": {
"command": "npx",
"args": [
"-y",
"@reneturcios/artifactbloat"
]
}
}
}
起動コマンドnpx -y @reneturcios/artifactbloat

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@reneturcios/artifactbloat0.1.0
ocighcr.io/cloudcorprecords/artifactbloat:0.1.0

ツール

1

掲載時のツール一覧 · 1 週間前に更新

パラメーター型必須説明
snapshotsarrayはい追跡するアーティファクトのスナップショット(1 件以上)
growth_threshold_percentnumberいいえワークフローにフラグを付ける増加率のしきい値(任意、デフォルトは 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

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。