mcpField
C
changelogforge

changelogforge

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

changelogforge について

changelogforgeは、マージ済みPull Requestからグループ分けされたMarkdownのリリースノートを作るMCPサーバー兼コマンドラインツールです。ラベルによる分類を設定でき、一定の順序で出力し、入力をローカルで検証します。

主な機能

  1. 01Markdownリリースノートの生成
  2. 02Pull Requestラベルによる分類
  3. 03グループと見出しレベルの設定
  4. 04番号順の安定した並べ替え
  5. 05グループデータの返却と入力検証

活用シーン

  1. 01マージ済みPull Requestからリリースノートを作成
  2. 02リポジトリ固有のラベル分類を適用
  3. 03リリースツール向けに再現可能なMarkdownを生成

MCP 対応

リリース情報とPull Requestを受け取り、分類データとMarkdownを返す`generate_changelog`ツールを提供します。

設定

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

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

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

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

ツール

1

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

パラメーター型必須説明
datestringはいリリース日。見出しにそのまま出力されます(解析されません)。
versionstringはいリリースバージョンラベル。見出しにそのまま出力されます。
group_orderarrayいいえグループを定義するラベル(出力順)。プルリクエストは、該当するラベルのうち最初のもののグループに分類されます(任意、デフォルトは ["feature", "bugfix", "documentation", "maintenance"])。
heading_levelintegerいいえバージョン見出しの Markdown 見出しレベル。グループ見出しは1レベル下になります(任意、デフォルトは 2)。
pull_requestsarrayはいこのリリースでマージされたプルリクエスト(1件以上)。

詳細

changelogforge

リリースの準備が整い、プルリクエストがマージされたら、次はその一覧を、読者が実際に目を通す変更履歴のセクションにまとめる作業が待っています。changelogforge は、その作業だけを担います。リリースに含まれるマージ済みプルリクエストを受け取り、ラベルごとにグループ分けして、固定された予測可能な形式の Markdown セクションとして出力します。

  • ラベルによるグループ分け — 各プルリクエストは、group_order 内で最初に一致するラベルのグループに入ります。既定の順序は feature、bugfix、documentation、maintenance です。グループ名の変更、順序の入れ替え、追加、削除には、独自のリストを指定できます。照合は大文字と小文字を区別する完全一致です。
  • その他グループ — グループのラベルが付いていないプルリクエストは、見出しが Other changes の最後のグループに入ります。空になったグループは完全に省略され、「その他」グループは項目がある場合にのみ表示されます。
  • 安定した並び順 — グループは group_order の順に並び、「その他」グループは常に最後になります。各グループ内ではプルリクエスト番号の昇順に並ぶため、同じ入力からは常に同じセクションが出力されます。
  • 正確な Markdown — バージョン見出しのレベルは heading_level(既定値は 2)で、グループ見出しはその 1 つ下のレベルになります。結果にはグループ分けされたデータ自体も含まれるため、呼び出し側で同じデータを別の形式で出力することもできます。

バージョンと日付は、見出しに指定されたとおりにそのまま出力されます。解析や形式の変更は行いません。プルリクエスト番号はリスト内で一意でなければなりません。重複があると、たとえば pull_requests[2].number duplicates pull_requests[0].number のように、両方の位置を示す検証エラーになります。そのほかの不正なフィールドについても、該当するパスを示すエラーになり、セクションの一部だけが出力されることはありません。処理は純粋かつローカルで行われます。ネットワークや設定は使わず、渡された入力以外のファイルも読み込みません。

CLI

npx @reneturcios/changelogforge generate --input args.json
npx @reneturcios/changelogforge --version

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

{
  "version": "1.2.0",
  "date": "2026-10-27",
  "pull_requests": [
    { "number": 7, "title": "Add export button", "labels": ["feature"] },
    { "number": 12, "title": "Fix crash on empty input", "labels": ["bugfix"] },
    { "number": 15, "title": "Tidy internals" }
  ]
}

プルリクエストごとの labels の既定値は []、group_order の既定値は ["feature", "bugfix", "documentation", "maintenance"]、heading_level の既定値は 2 です。出力されたセクションは JSON として表示されます。

{
  "version": "1.2.0",
  "date": "2026-10-27",
  "groups": [
    { "group": "feature", "heading": "feature", "pull_requests": [{ "number": 7, "title": "Add export button" }] },
    { "group": "bugfix", "heading": "bugfix", "pull_requests": [{ "number": 12, "title": "Fix crash on empty input" }] },
    { "group": "other", "heading": "Other changes", "pull_requests": [{ "number": 15, "title": "Tidy internals" }] }
  ],
  "markdown": "## 1.2.0 (2026-10-27)\n\n### feature\n\n- Add export button (#7)\n\n### bugfix\n\n- Fix crash on empty input (#12)\n\n### Other changes\n\n- Tidy internals (#15)",
  "total_pull_requests": 3
}

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

MCP サーバー

npx -y @reneturcios/changelogforge mcp

MCP クライアントの設定:

{
  "mcpServers": {
    "changelogforge": {
      "command": "npx",
      "args": ["-y", "@reneturcios/changelogforge", "mcp"]
    }
  }
}
ツール
  • generate_changelog — マージ済みプルリクエストをラベルごとにグループ分けし、リリースの変更履歴セクションを出力します。

    • version(文字列、必須)— リリースのバージョンラベル。見出しにそのまま出力されます。
    • date(文字列、必須)— リリース日付。見出しにそのまま出力されます。
    • pull_requests(配列、必須、1 件以上)— {number, title, labels?} オブジェクト形式のマージ済みプルリクエスト。number はリスト内で一意でなければなりません。
    • group_order(文字列の配列、任意)— 出力順にグループを定義するラベルです。
    • heading_level(整数、任意、1~5)— バージョン見出しの Markdown 見出しレベルです。

    {version, date, groups, markdown, total_pull_requests} を返します。

Docker

docker run -i ghcr.io/cloudcorprecords/changelogforge
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/changelogforge 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

コメント

MCP は初めてですか?

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

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