mcpField
M
matrixshrink

matrixshrink

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

matrixshrink について

matrixshrinkは、実行結果とカバレッジ履歴を基に、CIマトリックスから安全に削除できる組み合わせを特定します。CIマトリックスを管理するチーム向けで、決定的なローカル分析を行います。

主な機能

  1. 01冗長な組み合わせの特定
  2. 02失敗実績のある組み合わせの保持
  3. 03実行履歴のない組み合わせの表示
  4. 04カバレッジ項目と合計の報告
  5. 05入力検証とエラー箇所の報告
  6. 06CLIまたはMCPでのローカル分析

活用シーン

  1. 01大規模なCIマトリックスの縮小
  2. 02組み合わせ削除前のカバレッジ確認
  3. 03失敗に関係する組み合わせの保持
  4. 04実行履歴の不足状況の確認

MCP 対応

組み合わせと実行記録を受け取り、冗長、保持、失敗、実行履歴なしの各グループと合計を返すMCPツール `find_redundant_combos` を提供します。

設定

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

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

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

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

ツール

1

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

パラメーター型必須説明
runsarrayはい記録された CI の実行(1 件以上)
combosarrayはいCI マトリックス内の組み合わせ(1 件以上)

詳細

matrixshrink

CI マトリックスは、組み合わせが一つずつ増えていきます。新しいオペレーティングシステムが加わり、新しいランタイムバージョンが加わりますが、どれを安全に削除できるか誰にも分からないため、削除されるものはありません。matrixshrink は、根拠に基づいてそれを判断します。マトリックス内の組み合わせと、記録された実行履歴(各実行でテストされた組み合わせ、成功か失敗か、テストされたカバレッジキー(テストファイル、機能 ID など、追跡しているもの))を入力すると、削除できる組み合わせを報告します。

  • 冗長 — ある組み合わせのすべての実行が成功し、そのカバレッジが、残す組み合わせによってすべてカバーされている場合、その組み合わせは冗長です。スキャンは貪欲かつ決定的に行われます。対象となる組み合わせを ID の昇順で調べ、一度対象としてマークされた組み合わせは、それ以降に調べる組み合わせのカバレッジとして数えません。そのため、カバレッジが同一の組み合わせが二つある場合、アルファベット順で先のものが対象となり、後のものが残ります。カバレッジを維持するには、どちらか一方を残す必要があります。カバレッジをまったくテストしなかったものの、常に成功する組み合わせは冗長です。空集合は、何もない場合を含め、どの集合によってもカバーされるためです。
  • 失敗あり — 実行に一度でも失敗があった組み合わせは、冗長とはなりません。失敗は、その組み合わせが何かを検出するという根拠なので、常に残され、failing に列挙されます。また、そのカバレッジは他の組み合わせをカバーするものとして引き続き数えられます。
  • 実行なし — 記録された実行がない組み合わせは no_runs に列挙され、対象となることはありません。根拠がないため、matrixshrink は推測しません。

レポートには、冗長な各組み合わせ、その完全なカバレッジ(実行全体の和集合をソートしたもの)、残された ID、失敗した ID、実行のない ID、入力された組み合わせと実行の合計数が含まれます。

検証は厳格です。組み合わせ ID の欠落や重複、指定されていない組み合わせを示す実行、"pass" または "fail" 以外の結果、文字列以外のディメンション値やカバレッジキー、その他の不正なフィールドはすべて、問題のあるパス(例:runs[2].combo references unknown combination "node22-linux")を示すエラーになり、部分的なレポートは生成されません。計算は純粋かつローカルで行われます。ネットワークや設定は不要で、渡された入力以外のファイルを読み込むこともありません。

CLI

npx @reneturcios/matrixshrink analyze --input args.json
npx @reneturcios/matrixshrink --version

args.json には引数オブジェクト全体が含まれます。

{
  "combos": [
    { "id": "linux-node20", "dimensions": { "os": "linux", "node": "20" } },
    { "id": "linux-node18", "dimensions": { "os": "linux", "node": "18" } },
    { "id": "mac-node20", "dimensions": { "os": "macos", "node": "20" } }
  ],
  "runs": [
    { "combo": "linux-node20", "outcome": "pass", "covered": ["unit", "integration", "e2e"] },
    { "combo": "linux-node18", "outcome": "pass", "covered": ["unit"] },
    { "combo": "mac-node20", "outcome": "fail", "covered": ["unit", "integration"] }
  ]
}

各組み合わせの dimensions は省略可能(デフォルト {})で、各実行の covered も省略可能(デフォルト [])です。レポートは JSON として出力されます。

{
  "redundant": [{ "id": "linux-node18", "covered": ["unit"] }],
  "kept": ["linux-node20", "mac-node20"],
  "failing": ["mac-node20"],
  "no_runs": [],
  "total_combos": 3,
  "total_runs": 3
}

終了コード:成功時は 0、実行時エラー(読み取り不能または無効な入力ファイル、無効な入力を含む)では 1、使用方法のエラーでは 2 です。

MCP サーバー

npx -y @reneturcios/matrixshrink mcp

MCP クライアントの設定:

{
  "mcpServers": {
    "matrixshrink": {
      "command": "npx",
      "args": ["-y", "@reneturcios/matrixshrink", "mcp"]
    }
  }
}
ツール
  • find_redundant_combos — 実行履歴とカバレッジの重複に基づいて、冗長な CI マトリックスの組み合わせを見つけます。
    • combos(配列、必須、1 件以上)— {id, dimensions?} オブジェクトとして指定する組み合わせ。id は集合内で一意であり、各 dimensions の値は文字列です。
    • runs(配列、必須、1 件以上)— {combo, outcome, covered?} オブジェクトとして指定する記録済みの実行。combo は指定済みの組み合わせを示し、outcome は "pass" または "fail" です。

{redundant, kept, failing, no_runs, total_combos, total_runs} を返します。

Docker

docker run -i ghcr.io/cloudcorprecords/matrixshrink
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/matrixshrink analyze --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 つのサーバーを複数のクライアントで再利用できます。