changesetgen について
changesetgenは、Pull Requestのコミットからchangesetと変更履歴を作成するMCPサーバー兼コマンドラインツールです。コミット種別で分類し、バージョン更新の提案を示し、変更ファイルも含められます。
主な機能
- 01changeset Markdownの生成
- 02コミット種別による分類
- 03グループ順と見出しの設定
- 04破壊的変更の表示
- 05major・minor・patchの更新提案
- 06変更ファイルの一覧表示
活用シーン
- 01Pull Requestのコミットからchangesetを作成
- 02破壊的変更と更新提案を確認
- 03リリース項目に変更ファイルを記載
MCP 対応
コミットと任意のファイル・規約設定を受け取り、Markdown、更新情報、件数、グループを返す`generate_changeset`ツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
1掲載時のツール一覧 · 1 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| commits | array | はい | PR 内のコミット(1件以上)。 |
| convention | object | いいえ | リポジトリ規約の上書き設定(任意)。 |
| convention.group_order | array | いいえ | 表示順に並べたグループの種類(任意)。 |
| convention.include_files | boolean | いいえ | Files changed セクションを含めるかどうか(任意、デフォルトは true)。 |
| convention.heading_prefix | string | いいえ | 見出しの接頭辞(任意、デフォルトは "## Changes")。 |
| package_name | string | いいえ | 見出しの末尾に追加するパッケージ名(任意)。 |
| files_changed | array | いいえ | PR で変更されたファイル(任意)。 |
詳細
changesetgen
すべてのプルリクエストには、いずれ変更セットが必要になります。これは、次回のリリースで何が変更され、バージョンをどの程度上げるべきかを伝える短い Markdown エントリーです。changesetgen は、リポジトリ独自の規約に従って、PR のコミットからそのエントリーを作成します。
- 種類ごとにグループ化 — コミットは Conventional Commits の種類ごとに分類され、固定のセクションラベル(Features、Fixes、Performance、Refactoring、Documentation、Tests、Build、CI、Style、Chores、Reverts、Other changes)の下に出力されます。固定ラベルのない種類は、先頭の文字を大文字にして出力され、種類がないコミットは Other changes に分類されます。
- 順序を指定可能 — デフォルトでは、グループは標準の順序に従います。
convention.group_orderを渡すと、優先したいグループを先頭にできます。残りのグループは引き続き標準の順序に従い、指定されていない種類は末尾にアルファベット順で並びます。グループ内のコミットは、渡された順序を維持します。 - 詳細を記載したエントリー行 — スコープ付きのコミットは
- **scope:** descriptionとして出力され、破壊的変更を含むコミットの行末には[breaking]が付き、リスクのある変更をひと目で確認できます。 - 変更ファイル — PR のファイル一覧を渡すと、末尾の Files changed セクションに入力順で一覧表示されます。
convention.include_files: falseで無効にできます。 - バージョンアップの提案 — 破壊的変更があれば
major、なければfeatのコミットがあればminor、それ以外はpatchです。コミット数、破壊的変更の数、出力順のグループごとの概要も併せて表示されます。
見出しのデフォルトは ## Changes です。名前を渡すとパッケージ名を含めることができ、convention.heading_prefix で見出し全体を置き換えられます。コミットハッシュは参照用に受け付けますが、出力されません。処理は純粋かつローカルで行われます。ネットワークも設定も必要なく、渡された引数以外のファイルを読み込むこともありません。コミット一覧が空、コミットに説明がない、フィールドの入力ミスなど、無効な入力は問題のあるパスを示すエラーとともに拒否され、エントリーの一部だけが生成されることはありません。
CLI
npx @reneturcios/changesetgen generate --input args.json
npx @reneturcios/changesetgen --version
args.json には引数オブジェクト全体を記述します。
{
"commits": [
{ "type": "feat", "scope": "ui", "description": "add export button" },
{ "type": "fix", "description": "stop crash on empty file", "hash": "abc123" },
{ "type": "feat", "scope": "api", "description": "drop the v1 endpoints", "breaking": true }
],
"files_changed": ["src/export.ts", "src/api.ts"],
"package_name": "my-pkg",
"convention": { "group_order": ["feat", "fix"] }
}
必須なのは commits だけで、各コミットで必須なのは description だけです。生成された変更セットは JSON として出力されます:{markdown, bump, commit_count, breaking_count, groups}。
終了コード:成功時は 0、実行時エラー時(入力ファイルを読み取れない場合や無効な場合、無効な入力を含む)は 1、使用方法のエラー時は 2 です。
MCP サーバー
npx -y @reneturcios/changesetgen mcp
MCP クライアントの設定:
{
"mcpServers": {
"changesetgen": {
"command": "npx",
"args": ["-y", "@reneturcios/changesetgen", "mcp"]
}
}
}
ツール
-
generate_changeset— PR のコミットから変更セットと変更履歴エントリーを生成します。commits(配列、必須、1 件以上)—{description, hash?, type?, scope?, breaking?}オブジェクトとしてのコミットです。descriptionは必須で、空でない値を指定してください。files_changed(文字列の配列、任意)— PR で変更されたファイルです。Files changed セクションに一覧表示されます。package_name(文字列、任意)— 見出しに追加されます。convention(オブジェクト、任意)— 見出しのテキスト、グループの順序、ファイルのセクションを表示するかどうかを上書きする{heading_prefix?, group_order?, include_files?}。
{markdown, bump, commit_count, breaking_count, groups}を返します。
Docker
docker run -i ghcr.io/cloudcorprecords/changesetgen
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/changesetgen generate --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 つのサーバーを複数のクライアントで再利用できます。