mcpField
R
rebaseplan

rebaseplan

ローカル
github.com/CloudCorpRecordsバージョン管理01 週間前に更新

rebaseplan について

rebaseplanは、Git rebaseを準備する開発者向けのコマンドラインツール兼MCPサーバーです。指定されたコミット履歴と上流の状態を分析し、リポジトリを変更せずに戦略、リスク警告、手順を提示します。

主な機能

  1. 01rebase戦略の提案
  2. 02マージコミットとsquashマーカーの検出
  3. 03公開済み履歴のリスク評価
  4. 04順序付きのrebase・push手順
  5. 05パスを示す入力エラー

活用シーン

  1. 01履歴を書き換える前のブランチ評価
  2. 02マージやsquashコミットに応じた戦略選択
  3. 03公開済みブランチの安全なpush計画

MCP 対応

MCPサーバーは`plan_rebase`ツールを公開します。ブランチのコミット、任意の上流コミット、公開状態を受け取り、警告付きのrebase計画を返します。

設定

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

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

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

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

ツール

1

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

パラメーター型必須説明
commitsarrayはいブランチ固有のコミット(古い順):{hash, subject, merge}
publishedbooleanいいえブランチがプッシュ済み、または共有済みかどうか(任意)
upstream_commitsarrayいいえ上流ブランチにはあり、このブランチにはないコミット(任意):{hash, subject}

詳細

rebaseplan

ブランチのリベースは始めるのは簡単ですが、取り消すのは困難です。 特に、ほかの人が古い履歴を持っている場合はなおさらです。危険な 部分は、ブランチ名からは見えないことがほとんどです。通常のリベースで 平坦化されるマージコミット、元のコミットも上流に存在する可能性がある スカッシュマージのマーカー、大幅に先行した上流ブランチ、そして 書き換えによって孤立する公開済みの履歴などです。rebaseplan は 開始前にこうした状態を読み取り、予期せぬ事態ではなく計画を返します。

ブランチ独自のコミットを古い順に、それぞれハッシュ、件名、必要に応じて マージコミットであることを示すフラグとともに渡します。さらに、この ブランチにない上流のコミットを渡し、ブランチがプッシュ済みまたは共有済みか どうかを指定できます。フェッチ、リベース、プッシュは行いません。 このツールは数を数えて助言するだけです。

コミットがスカッシュマーカーと見なされるのは、次の2つの場合に限られます。 件名が Squashed commit で始まる場合、または GitHub のスカッシュマージの サフィックス((#123) など)で終わる場合です。固定されたテストは 正規表現 /\(#\d+\)$/ です。件名の内容にかかわらず、上流のコミットが マーカーとして数えられることはありません。

強制プッシュのリスクは固定の表に従います。未公開のブランチは low です。 マージコミットもスカッシュマーカーもない公開済みブランチは medium です。 どちらかがある公開済みブランチは high です。

推奨戦略は、最初に一致した条件で選ばれます。マージコミットがある場合は rebase_with_merge_preservation、それ以外でスカッシュマーカーがある場合は interactive_squash_cleanup、どちらもない場合は linear_rebase です。 両方ある場合は、スカッシュマーカーよりマージ履歴が優先されます。

手順は必ず上流のフェッチから始まり、リベース後の HEAD でテストスイートを 実行するところで終わります。また、プッシュ方法も指定します。公開済み ブランチでは、最初にバックアップブランチを作成してから --force ではなく 必ず --force-with-lease を使用します。未公開のブランチでは通常の プッシュを行います。警告は、マージコミット、スカッシュマーカー、上流が 10件以上先行していること(正確な件数にかかわらず、警告文は固定)、 公開済み履歴の書き換えの順に示されます。

不正な入力(commits がない、空、または配列でない場合、エントリーの hash または subject がない、空、もしくは文字列でない場合、merge が 真偽値でない場合、upstream_commits のエントリーの型が不正な場合、 または published が真偽値でない場合)は、該当するパスを示す検証 エラーとなり、部分的な結果は返されません。未知の追加フィールドは無視されます。

CLI

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

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

{
  "commits": [
    { "hash": "a1b2c3", "subject": "Add login form" },
    { "hash": "d4e5f6", "subject": "Merge branch 'main'", "merge": true }
  ],
  "upstream_commits": [
    { "hash": "f7a8b9", "subject": "Bump dependencies" }
  ],
  "published": true
}

upstream_commits の既定値は []、published の既定値は false です。 各コミットの merge の既定値は false です。結果は JSON として 出力されます。

{
  "commit_count": 2,
  "merge_commits": 1,
  "squash_markers": 0,
  "upstream_new_commits": 1,
  "published": true,
  "force_push_risk": "high",
  "recommended_strategy": "rebase_with_merge_preservation",
  "steps": [
    "fetch upstream before planning the final rebase",
    "create a backup branch pointing at the current head",
    "rebase onto upstream preserving merge commits",
    "run the test suite on the rebased head",
    "push with --force-with-lease, never plain --force"
  ],
  "warnings": [
    "history contains merge commits; a plain rebase will flatten them",
    "branch is published; rewriting it rewrites history others may have based work on"
  ]
}

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

MCP サーバー

npx -y @reneturcios/rebaseplan mcp

MCP クライアントの設定:

{
  "mcpServers": {
    "rebaseplan": {
      "command": "npx",
      "args": ["-y", "@reneturcios/rebaseplan", "mcp"]
    }
  }
}
ツール
  • plan_rebase — 開始前に安全なリベースを計画します。

    • commits(配列、必須、空でないこと)— ブランチ独自のコミットを古い順に指定します:{hash, subject, merge}
    • upstream_commits(配列、任意、既定値 [])— このブランチにない上流ブランチのコミットを指定します: {hash, subject}
    • published(真偽値、任意、既定値 false)— ブランチがプッシュ済みまたは共有済みかどうか

    {commit_count, merge_commits, squash_markers, upstream_new_commits, published, force_push_risk, recommended_strategy, steps, warnings} を返します。

Docker

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

コメント

MCP は初めてですか?

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

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