mcpField
P
parallelmap

parallelmap

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

parallelmap について

parallelmapは、ジョブやテストの依存グラフを分析するローカルMCPサーバー兼コマンドラインツールです。並列実行のレベル、所要時間、クリティカルパス、任意のワーカー割り当て、循環依存を示します。

主な機能

  1. 01依存関係ごとのジョブ分類
  2. 02逐次時間と並列時間の比較
  3. 03決定的なクリティカルパスの特定
  4. 04ワーカー数に応じたジョブ割り当て
  5. 05依存サイクルの報告
  6. 06グラフ入力の検証

活用シーン

  1. 01テストスイートの並列実行時間の見積もり
  2. 02固定ワーカープールでのジョブパイプライン計画
  3. 03スケジュールを妨げる依存サイクルの特定

MCP 対応

MCPクライアントに`map_parallelization`ツールを提供します。ジョブの所要時間と依存関係を受け取り、任意でワーカー数に応じたスケジュールを生成します。

設定

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

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

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

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

ツール

1

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

パラメーター型必須説明
jobsarrayはいワークロード内のジョブまたはテスト(1 つ以上)
workersintegerいいえ貪欲法によるスケジュールで使用する並列ワーカー数(任意。省略した場合、スケジュールは空になり、全体の所要時間は上限のない並列実行時間になります)

詳細

parallelmap

テストスイートやジョブパイプラインの所要時間は、実行にかかる時間そのものです — ただし、一部を並行して実行できる場合は別です。parallelmap は ワークロードグラフ — 各ジョブの名前、所要時間、 開始前に完了していなければならないジョブの名前 — を受け取り、安全に並列化できる部分を示します。

  • レベル — 深さごとにまとめたジョブです。レベル 0 には 依存関係のないジョブが入り、それ以外のジョブは最も深い依存先の 1 つ上のレベルに配置されます。下位のレベルが 完了すれば、同じレベルのすべてのジョブを同時に実行できます。
  • 逐次実行時間と並列実行時間 — すべての所要時間の合計と、 無制限のワーカーを使った場合のメイクスパン(最も遅い最早終了時刻)、 およびその間のスピードアップです。報告される秒数はすべて小数点以下 3 桁に丸められ、スピードアップは丸め後の値から計算されます。
  • クリティカルパス — 並列実行時間を決めるチェーンを、 実行順に示します。終了ジョブとチェーンをさかのぼる各ステップで 同順位の場合は、ジョブ名が最も小さいものを選ぶため、 パスは完全に決定論的です。
  • ワーカースケジュール — ワーカー数を指定すると、貪欲な リストスケジューリングにより、(レベル、名前)の優先順位でジョブを割り当てます。 各ジョブは、最も早く空くワーカー(同順位の場合はインデックスが最小のワーカー)に割り当てられ、 そのスケジュールで依存先が完了する時刻より前には開始しません。 スケジュールには各ジョブのワーカー、開始時刻、終了時刻が (開始時刻、ワーカー、ジョブ)の順に並べて報告され、 結果のメイクスパンも含まれます。 ワーカー数が指定されていない場合、スケジュールはなく、 メイクスパンは無制限のワーカーでの並列実行時間になります。
  • サイクル検出 — ジョブをスケジュールできない場合、parallelmap は エラーを返したり推測したりしません。ok: false と正確なサイクルを報告します。 名前と依存先を昇順にたどる深さ優先探索によって、最初に見つかったサイクルが そのサイクルを構成するジョブのリストとして返されます(ジョブが自分自身に依存している場合は、 そのジョブ名だけのサイクルとして報告されます)。時間フィールドは null になります。

グラフは閉じている必要があります。指定されていないジョブ名を参照する depends_on エントリは検証エラーになります。また、ジョブ名の欠落または重複、 所要時間の欠落、負数または有限値でない値、1 以上の整数ではないワーカー数もエラーになります。 エラーには問題のあるパスが示され(例:jobs[1].depends_on[0] references unknown job "build")、部分的なマップは生成されません。計算は純粋かつローカルで行われます。 ネットワークや設定は不要で、渡された入力以外のファイルを読み込むこともありません。

CLI

npx @reneturcios/parallelmap map --input args.json
npx @reneturcios/parallelmap --version

args.json には引数オブジェクト全体を指定します。

{
  "jobs": [
    { "name": "compile", "duration_seconds": 30 },
    { "name": "unit", "duration_seconds": 45, "depends_on": ["compile"] },
    { "name": "lint", "duration_seconds": 10, "depends_on": ["compile"] },
    { "name": "package", "duration_seconds": 5, "depends_on": ["unit", "lint"] }
  ],
  "workers": 2
}

ジョブごとの depends_on のデフォルト値は [] で、全体の workers は省略できます。 マップは JSON として出力されます。

{
  "ok": true,
  "levels": [["compile"], ["lint", "unit"], ["package"]],
  "sequential_seconds": 90,
  "parallel_seconds": 80,
  "speedup": 1.125,
  "critical_path": ["compile", "unit", "package"],
  "cycle": [],
  "schedule": [
    { "job": "compile", "worker": 0, "start": 0, "finish": 30 },
    { "job": "unit", "worker": 0, "start": 30, "finish": 75 },
    { "job": "lint", "worker": 1, "start": 30, "finish": 40 },
    { "job": "package", "worker": 1, "start": 75, "finish": 80 }
  ],
  "makespan_seconds": 80
}

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

MCP サーバー

npx -y @reneturcios/parallelmap mcp

MCP クライアントの設定:

{
  "mcpServers": {
    "parallelmap": {
      "command": "npx",
      "args": ["-y", "@reneturcios/parallelmap", "mcp"]
    }
  }
}
ツール
  • map_parallelization — どのジョブやテストを安全に 並行実行できるかをマッピングします。

    • jobs(配列、必須、1 件以上)— {name, duration_seconds, depends_on?} オブジェクトとして 指定するジョブです。name はセット内で一意であり、各 depends_on エントリには、指定された別のジョブ名を記述します。
    • workers(整数、省略可能、1 以上)— 指定すると、その数のワーカーに対する 貪欲なスケジュールが含まれます。

    {ok, levels, sequential_seconds, parallel_seconds, speedup, critical_path, cycle, schedule, makespan_seconds} を返します — サイクルがある場合は、{ok: false, cycle, levels: [], sequential_seconds, parallel_seconds: null, speedup: null, critical_path: [], schedule: [], makespan_seconds: null} を返します。

Docker

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