branchname について
branchnameは、課題タイトルと任意の情報からリポジトリの規則に沿ったブランチ名を生成するローカルのMCPサーバー兼コマンドラインツールです。一貫したslug化と4種類の命名規則に対応し、ネットワークやリポジトリにはアクセスしません。
主な機能
- 01課題タイトルの一貫したslug化
- 024種類の命名規則への対応
- 03課題番号と変更種別の付加
- 04slugの最大長の設定
- 05ローカルでの入力検証
活用シーン
- 01課題タイトルからのブランチ名作成
- 02リポジトリ指定の命名規則の適用
- 03長いタイトルのslugの制限
- 04不完全または無効な引数の拒否
MCP 対応
ブランチ名、最終slug、適用した命名規則を返すmake_branch_nameツールをMCPクライアントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
1掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| type | enum | いいえ | 変更タイプのプレフィックス(任意)feat | fix | chore | docs | refactor | test |
| title | string | はい | スラッグ化する issue タイトル |
| convention | enum | いいえ | 組み合わせに使用する命名規則(任意、デフォルトは "type-issue-slug")type-issue-slug | type-slug | issue-slug | slug |
| issue_number | integer | いいえ | issue 番号(任意) |
| max_slug_length | integer | いいえ | 切り詰める前の最大スラッグ長(任意、デフォルトは 40) |
詳細
branchname
ブランチ名を付けるのは簡単に思えますが、すべてのコントリビューターが
それぞれ違う付け方をすると話は別です。fix-login、123-login-bug、
johns-branch、同じ問題を表す十数種類もの名前が生まれ、どれも
同じ方法では検索できません。branchname は逆の方法を取ります。
課題を渡せば、リポジトリのルールに従った名前を毎回ひとつ返します。
タイトルは固定されたレシピに従ってスラッグ化されます。小文字にし、
[a-z0-9] 以外の文字が連続する部分をそれぞれ単一の - に置き換え、
先頭と末尾の - を取り除きます。句読点が連続していても - が増える
ことはなく、数字はそのまま残ります。ASCII 以外の文字(アクセント記号、
ダッシュ、絵文字など)は、ほかの句読点と同じく区切り文字として扱われます。
スラッグ化できる文字がまったく含まれないタイトルは、- という名前の
ブランチになるのではなく、エラー("title produces an empty slug")になります。
スラッグが長すぎる場合は切り詰められます。max_slug_length 文字ちょうど
(デフォルトは 40、最小値は 8)に切り詰めたあと、切断位置に残った末尾の
- を取り除くため、ブランチ名がぶら下がったハイフンで終わることはありません。
その後、次の4種類の規則のいずれかでスラッグを組み立てます。
type-issue-slug(デフォルト) —<type>/<issue_number>-<slug>。例:fix/123-login-redirect-loop。typeとissue_numberの両方が必要です。type-slug—<type>/<slug>。例:docs/update-install-guide。typeが必要です。issue-slug—<issue_number>-<slug>。例:42-login-redirect-loop。issue_numberが必要です。slug—<slug>のみ。例:login-redirect-loop。 どちらも必要ありません。
type は feat、fix、chore、docs、refactor、
test のいずれかです。指定されていない要素を必要とする規則を選ぶと、
その要素名を示すエラーになります。また、入力が不正な場合(title の
欠落、空文字列、または文字列以外の値、1以上の整数ではない
issue_number、列挙値に含まれない type または convention、
8以上の整数ではない max_slug_length)は、不正なパスを示す
バリデーションエラーとなり、部分的な結果は返されません。この処理は
純粋かつローカルです。ネットワークや設定は使用せず、リポジトリの読み取りや
変更も行いません。branchname が行うのは名前の生成だけです。
CLI
npx @reneturcios/branchname make --input args.json
npx @reneturcios/branchname --version
args.json には引数オブジェクト全体を記述します。
{
"title": "Fix login redirect loop",
"issue_number": 123,
"type": "fix"
}
convention のデフォルトは "type-issue-slug"、max_slug_length の
デフォルトは 40 です。結果は JSON として出力されます。
{
"branch": "fix/123-fix-login-redirect-loop",
"slug": "fix-login-redirect-loop",
"convention": "type-issue-slug"
}
終了コード:成功時は 0、実行時エラー(読み取り不可または不正な入力ファイル、
不正な入力を含む)の場合は 1、使用方法のエラーの場合は 2 です。
MCP サーバー
npx -y @reneturcios/branchname mcp
MCP クライアントの設定:
{
"mcpServers": {
"branchname": {
"command": "npx",
"args": ["-y", "@reneturcios/branchname", "mcp"]
}
}
}
ツール
-
make_branch_name— 課題のタイトルからブランチ名を生成します。title(文字列、必須、空でない値)— スラッグ化する課題のタイトルissue_number(整数、任意、1以上)— 課題番号type(文字列、任意)— 変更の種類を示すプレフィックス。feat、fix、chore、docs、refactor、testのいずれかconvention(文字列、任意、デフォルトは"type-issue-slug")—type-issue-slug、type-slug、issue-slug、slugのいずれかmax_slug_length(整数、任意、デフォルトは 40、最小値は 8)— 切り詰める前のスラッグの最大長
{branch, slug, convention}を返します。slugは最終的な (切り詰められている場合もある)スラッグで、conventionは 確定した規則を示します。
Docker
docker run -i ghcr.io/cloudcorprecords/branchname
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/branchname make --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
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。