mcpField
P
prbody

prbody

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

prbody について

prbody は、指定されたタイトル、コミット一覧、任意の issue 番号を使ってプルリクエストのテンプレートを埋めます。リポジトリやネットワークにアクセスせず、PR 本文の形式を整えたい作成者向けです。

主な機能

  1. 01タイトルとコミットのプレースホルダー補完
  2. 02短縮ハッシュ付きコミット要約の生成
  3. 03issue を閉じる文の追加
  4. 04未知のプレースホルダーの報告
  5. 05入力検証と構造化結果の返却

活用シーン

  1. 01コミットから PR 本文の下書きを作成
  2. 02リポジトリの PR テンプレートを補完
  3. 03ツールが埋められないテンプレート項目を特定

MCP 対応

MCP クライアントに build_pr_body ツールを公開します。呼び出し側がテンプレート、コミット、任意のタイトルと issue 番号を渡します。

設定

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

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

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

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

ツール

1

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

パラメーター型必須説明
titlestringいいえプルリクエストのタイトル(任意)
commitsarrayはいPR のコミット。古い順:{hash, subject}
templatestringはい{{...}} プレースホルダーを含む、リポジトリの PR テンプレートテキスト
issue_numberintegerいいえ関連 issue 番号(任意)

詳細

prbody

各リポジトリには PR テンプレートがあり、PR の作成者はそれぞれ異なる方法で記入します。テンプレートを上書きしたり、見出しを空のままにしたりすることもあります。prbody を使えば、作成者が行う機械的な作業を省けます。テンプレート、PR のコミット、クローズする issue を渡すと、テンプレートのプレースホルダーを埋めた本文が、毎回同じ方法で返されます。

次の 4 つのプレースホルダーが固定で、表記は正確に以下のとおりです。

  • {{title}} — PR のタイトル。タイトルが指定されていない場合は空文字列です。
  • {{summary}} — コミットごとに 1 行、指定された順に並べます:- <subject>。
  • {{commits}} — コミットごとに 1 行、同じ順に並べ、短縮ハッシュを付けます: - <subject> (<hash7>)。<hash7> はコミットのハッシュの先頭 7 文字です(ハッシュが 7 文字未満の場合は全体)。
  • {{issue_link}} — issue 番号が指定されている場合は Closes #<issue_number>、指定されていない場合は空文字列です。

既知のプレースホルダーは、出現するたびに置換されます。それ以外の {{...}} の範囲({{ から次の }} まで)は、本文内で記述されたとおりにそのまま残されます。また、その内側の名前から前後の空白を取り除いたものが unfilled_placeholders に報告されます(重複なし、昇順)。これにより、prbody が認識しない内容を求めるテンプレートも、黙って取り除かれることなく確認できます。後続に }} がない {{ はプレースホルダーではないため、そのまま残され、報告もされません。置換後のテキストは再スキャンされないため、タイトルやコミットの subject に含まれる {{...}} はリテラルのままです。

結果には commit_count(コミット数)と closes_issue(issue 番号が指定されている場合に限り true)も含まれます。不正な入力(template がない、空、または文字列ではない場合、commits がない、配列ではない、または空の場合、コミット項目がオブジェクトではない、あるいは hash または subject がない、空、または文字列ではない場合、issue_number が 1 以上の整数ではない場合、または title が指定されているのに空か文字列ではない場合)は、該当するパスを示すバリデーションエラーになります(例:commits[1].subject must be a non-empty string)。部分的な結果は返されません。余分なフィールドは無視されます。コミット項目内の余分なフィールドも同様です。処理は純粋かつローカルで行われ、ネットワーク、設定、リポジトリの読み取りや変更はありません。prbody は渡されたテンプレートを埋めるだけです。

CLI

npx @reneturcios/prbody build --input args.json
npx @reneturcios/prbody --version

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

{
  "template": "## {{title}}\n\n### Commits\n{{commits}}\n\n{{issue_link}}",
  "commits": [
    { "hash": "abc1234def5678", "subject": "Add login form" },
    { "hash": "9876fedcba4321", "subject": "Fix redirect loop" }
  ],
  "issue_number": 42,
  "title": "Login rework"
}

結果は JSON として出力されます:

{
  "body": "## Login rework\n\n### Commits\n- Add login form (abc1234)\n- Fix redirect loop (9876fed)\n\nCloses #42",
  "unfilled_placeholders": [],
  "commit_count": 2,
  "closes_issue": true
}

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

MCP サーバー

npx -y @reneturcios/prbody mcp

MCP クライアントの設定:

{
  "mcpServers": {
    "prbody": {
      "command": "npx",
      "args": ["-y", "@reneturcios/prbody", "mcp"]
    }
  }
}
ツール
  • build_pr_body — PR のタイトル、コミットの概要、コミット一覧全体、およびリンクされた issue をクローズする行を使って、リポジトリの PR テンプレートを埋め、プルリクエストの本文を作成します。

    • template(文字列、必須、空でない)— {{...}} プレースホルダーを含む、リポジトリの PR テンプレートのテキスト
    • commits(配列、必須、空でない)— PR のコミット。古いものから順に並べます。各項目は hash(文字列、必須、空でない)と subject(文字列、必須、空でない)を含むオブジェクトです。
    • issue_number(整数、任意、1 以上)— リンクされた issue の番号
    • title(文字列、任意。指定する場合は空でないこと)— プルリクエストのタイトル

    {body, unfilled_placeholders, commit_count, closes_issue} を返します。

Docker

docker run -i ghcr.io/cloudcorprecords/prbody
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/prbody build --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 つのサーバーを複数のクライアントで再利用できます。