mcpField
P
publishorder

publishorder

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

publishorder について

publishorder は、依存関係グラフから monorepo のパッケージ公開順を計画するローカルのコマンドラインツール兼 MCP サーバーです。階層や変更パッケージに基づく計画に対応し、順序を決定的に算出して循環も報告します。

主な機能

  1. 01決定的な公開順の算出
  2. 02依存階層ごとのパッケージ分類
  3. 03変更パッケージと依存先の計画
  4. 04依存関係の循環を報告
  5. 05グラフ入力の検証

活用シーン

  1. 01monorepo の公開順を計画
  2. 02変更パッケージと依存先のみを公開
  3. 03公開計画を妨げる循環を特定

MCP 対応

`plan_publish_order` MCP ツールを公開します。クライアントがパッケージ依存関係と任意の変更セットを渡すと、順序、階層、循環、対象・除外パッケージを返します。

設定

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

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

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

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

ツール

1

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

パラメーター型必須説明
changedarrayいいえ変更されたパッケージ名。指定すると、これらのパッケージと、それらに推移的に依存するすべてのパッケージが計画の対象になります(任意)
packagesarrayはいモノレポ内のパッケージ(1 つ以上)

詳細

publishorder

モノレポのリリースを公開する際は、パッケージを正しい順序で公開する必要があります。依存先のパッケージより先に公開することはできません。publishorder はパッケージグラフ(各パッケージの名前と、そのパッケージより先に公開する必要があるパッケージの名前)を受け取り、公開計画を作成します。

  • 公開順序 — Kahn のアルゴリズムで計算した、対象パッケージのトポロジカル順序です。公開可能なパッケージが複数ある場合は、アルファベット順で最も先のパッケージを最初に選ぶため、同じグラフからは常にまったく同じ順序が得られます。
  • レベル — 深さごとにグループ化したパッケージです。レベル 0 には対象となる依存パッケージがないパッケージが含まれます。それ以外のパッケージは、対象となる最も深い依存パッケージより 1 つ上のレベルに配置されます。下位のレベルの公開が完了すれば、同じレベルのパッケージはまとめて公開できます。
  • 変更パッケージの計画 — 変更されたパッケージの名前を渡すと、計画の対象には、それらのパッケージと、それらに直接または推移的に依存するすべてのパッケージが含まれます。残りのパッケージは excluded として報告され、それらを指す依存関係は順序を制約しません。すでに公開済みだからです。
  • 循環の検出 — 対象パッケージを並べ替えられない場合、publishorder はエラーを返したり、推測で順序を決めたりしません。正確な循環とともに ok: false を報告します。名前と依存関係を昇順にたどる深さ優先探索で最初に見つかった循環が、その循環を構成するパッケージのリストとして返されます(自身に依存するパッケージは、名前 1 つの循環として報告されます)。excluded のパッケージ内だけで発生する循環は、変更パッケージの計画を妨げません。

グラフは閉じている必要があります。指定されていないパッケージを依存関係や変更対象として指定すると、検証エラーになります。また、パッケージ名の欠落や重複、不正な型のフィールドも検証エラーです。エラーには問題のあるパスが示されます(たとえば packages[1].dependencies[0] references unknown package "core")。部分的な計画は作成されません。処理は純粋かつローカルに行われ、ネットワークや設定は使用せず、渡された入力以外のファイルも読み込みません。

CLI

npx @reneturcios/publishorder plan --input args.json
npx @reneturcios/publishorder --version

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

{
  "packages": [
    { "name": "core", "version": "1.4.1" },
    { "name": "lib", "dependencies": ["core"] },
    { "name": "app", "dependencies": ["lib"] }
  ],
  "changed": ["core"]
}

dependencies はパッケージごとに [] がデフォルト値です。version は省略可能で、順序に影響を与えずに引き継がれます。changed は全体で省略可能です。計画は JSON として出力されます。

{
  "ok": true,
  "order": ["core", "lib", "app"],
  "levels": [["core"], ["lib"], ["app"]],
  "cycle": [],
  "included": ["app", "core", "lib"],
  "excluded": []
}

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

MCP サーバー

npx -y @reneturcios/publishorder mcp

MCP クライアントの設定:

{
  "mcpServers": {
    "publishorder": {
      "command": "npx",
      "args": ["-y", "@reneturcios/publishorder", "mcp"]
    }
  }
}
ツール
  • plan_publish_order — 依存関係グラフから、モノレポの公開順序を計画します。
    • packages(配列、必須、1 件以上)— {name, dependencies?, version?} オブジェクトとして指定するパッケージです。name はセット内で一意である必要があり、各 dependencies の項目には、指定された別のパッケージの名前を指定します。
    • changed(文字列の配列、省略可能)— 指定すると、これらのパッケージと、それらに推移的に依存するすべてのパッケージが計画の対象になります。

{ok, order, levels, cycle, included, excluded} を返します。

Docker

docker run -i ghcr.io/cloudcorprecords/publishorder
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/publishorder plan --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 — 著作権 (c) 2026 Rene Turcios

コメント

MCP は初めてですか?

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

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