MCPでSVNのリリースノート生成を自動化してみた
〜Clineと連携するMCPサーバーの設計と実装〜
はじめに
リリースノートを書くのは、地味に面倒な作業です。
- SVNのコミットログを確認する
- 不要なコミットを除外する
- 変更内容を要約する
- Markdown形式で整形する
これを毎回人手でやるのは非効率です。
そこで今回は、
MCP (Model Context Protocol) を使って、SVNのリリースノートを自動生成するサーバー
を実装してみました。
このMCPサーバーでは、SVNのログを取得し、それをユーザーが事前に定義したテンプレートフォーマットで要約します。
ユーザーが事前に定義したフォーマットを使える点は、それなりに便利かなと考えています。
MCPとは何か(簡単に)
MCPは、LLMが外部ツールやデータを安全に利用するためのプロトコルです。
従来のAIツールとの違いは、
「LLMが直接コマンドを実行する」のではなく、
- Tool(操作)
- Resource(データ)
- Prompt(思考テンプレート)
を明確に分離できる点にあります。
今回の実装では、
「SVNログ取得 → LLM要約 → リリースノート生成」
という流れをMCPで構築しました。
システム構成
全体フロー
Cline (MCP Host)
↓
MCP Server (Python)
↓
SVN repository
↓
LLM (Cline or External API)
↓
Release Note (Markdown)
実装したMCP Tool一覧
今回実装したToolは以下の4つです。
1. get_svn_logs
指定したRevision範囲のSVNログを取得します。
@mcp.tool()
async def get_svn_logs(repository_path: str, revision_range: str) -> str:
特徴:
- SVNがインストールされているかチェック
- repository / working copy の両方に対応
-
svn log -rを安全に実行
2. summarize_logs_with_llm
SVNログをLLMで要約します。
@mcp.tool()
async def summarize_logs_with_llm(
svn_logs: str, llm_provider: str = "", use_host_llm: bool = True
) -> str:
特徴:
- デフォルトは「Cline側のLLM」を利用(MCP Prompt経由)
- Claude / Gemini APIにも対応
- Provider自動判定機能あり
3. generate_release_note
SVNログ取得 → LLM要約 → Markdown整形 を一括実行します。
@mcp.tool()
async def generate_release_note(
repository_path: str,
revision_range: str,
output_file: str = "",
append_mode: bool = False,
) -> str:
出力例:
# Release Note
Generated: 2026-02-01 18:30:00
Revision Range: 1200:1250
## New Features
- Added user authentication (r1210)
## Bug Fixes
- Fixed memory leak in parser (r1223)
---
4. append_to_release_note
既存のリリースノートに追記します。
@mcp.tool()
async def append_to_release_note(file_path: str, content: str) -> str:
MCP Promptの設計
今回の実装で特に重要なのはPromptです。
例えば、日本語のリリースノート用テンプレート:
@mcp.prompt()
def summarize_svn_logs_japanese_2_prompt(svn_logs: str) -> str:
テンプレート例:
- 変更内容をカテゴリ分け
- 不要なコミットは除外
- 1行要約
- Markdown形式
👉 MCPの強みは
「PromptをToolとは独立して管理できる」点にあります。
特に、SVNのログをとってくるだけなら汎用的なSVNのMCPを使えばいいのですが、リリースノートの形式は業界や会社、またはチームによって全く異なります。そのため、汎用的なSVNのMCPだけを使った場合、毎回「このテンプレートを使用して」とMCP Hostに指示を出す必要があります。
この手間を省きたいこと(とローカルで動かしたいこと)が、このMCPサーバーを開発した大きな理由です。
実際の使い方(Cline側)
Clineで以下のように指示するだけです。
このBranchのr1200からr1250までの変更を
箇条書きでリリースノートにまとめてください。
するとClineが:
- get_svn_logs を呼び出す
- MCP Promptを利用して要約
- Release Noteを生成
という流れを自動実行します。
このMCPサーバーの価値
1. リリースノート作成の工数削減
- 手作業 → 自動化
- 属人化 → 再現可能
2. MCPを勉強してみたかった
MCPの例はまだ少なく、
- DB検索
- ファイル操作
- API呼び出し
が多いですが、
これからもっと多くの用途のMCPサーバーが登場すると思います。
また、ローカルで動くMCPサーバーは、社内で開発をする上ではそれなりに利便性が高い気がしています。
3. SVN環境でもLLM活用が可能になる
実は、SVNを使っている現場はまだ多いです。
- 組み込み
- レガシー企業
- 社内システム
今後やりたいこと
構想中の拡張機能:
- GitHub対応(PRベースの要約)
- コミット分類の精度向上(embedding)
- 差分コード解析(diffベース要約)
- Jira / Redmine連携
- リリースノートの自動カテゴリ分類
- MCP Resourceとして履歴管理
ソースコード
GitHubに公開しています。
まとめ
MCPを使うと、
- LLMを「便利ツール」から「開発フローの一部」にできる
- 既存の開発プロセスに自然に組み込める
今回のSVNリリースノート自動生成は、
MCPの勉強をしつつ、それなりに使えるものができた気がします。