release-notes-mcp について
release-notes-mcpは、設定したリポジトリのリリース情報とコンテキスト URL を集め、LLM に製品リリースノートをまとめさせる MCP サーバーです。プロバイダー設定により GitHub、GitLab、Gitea/Forgejo に対応します。
主な機能
- 01GitHub、GitLab、Gitea のリリース情報取得
- 02リポジトリ一覧とリリース詳細の取得
- 03バージョン比較と選択したノートの集約
- 04URL からの背景コンテキスト読み込み
- 05環境変数またはファイルによる設定
活用シーン
- 01複数リポジトリのリリースを製品更新向けに統合
- 022つのバージョン間のリリースノート取得
- 03スタイルガイドやバージョンファイルをコンテキストとして提供
MCP 対応
リポジトリやリリースの一覧、バージョンとノートの取得、リリース比較、選択したノートの集約、設定済みコンテキストの読み込みをツールとして提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx release-notes-mcpRELEASE_MCP_CONFIG_JSONConfig (repos + contextSources) as inline JSON, e.g. {"repos":["myorg/web"],"contextSources":[]}. Use this for uvx/hub launches with no file to mount. Either this or RELEASE_MCP_CONFIG is required.RELEASE_MCP_CONFIGAbsolute path to a config.json file (alternative to RELEASE_MCP_CONFIG_JSON). Used when mounting a real file, e.g. in Docker.TOKENシークレットAuth token for the provider (GitHub PAT / GitLab / Gitea token). Optional for public repos.PROVIDERForge to read releases from: github | gitlab | gitea. Defaults to github.BASE_URLAPI base URL — only for self-hosted GitLab or Gitea/Forgejo.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
release-notes-mcp
複数のリポジトリの GitHub リリースを、1 つの製品リリースノートにまとめる、小規模で汎用的な MCP サーバーです。サーバーは生データを取得してまとめるだけで、最終的なノートは LLM が作成します。
特定のアーキテクチャには依存しません。
provider— リリースを取得する forge:github(デフォルト)、gitlab、またはgitea/Forgejo。リリースの取得には小さなアダプターを使用するため、forge の追加はリリース JSON の正規化だけで済みます。変更範囲も限定的です。repos— サーバーがリリースを読み取ることを許可されているリポジトリ。contextSources— 背景情報として読み込む任意の URL(スタイルガイド、バージョンファイル、機能名など、内容は問いません)。サーバーは意味を割り当てません。各ソースが何であるかは、URL の先に何を置くかによって決まります。
設定
設定にシークレットは含まれません。リポジトリの一覧とコンテキストのみです。プロバイダーと認証情報は環境変数で指定します。
// config.json — non-sensitive (required; the server errors if it's missing)
{
"repos": [
"myorg/auth-service",
"myorg/web"
],
"contextSources": [
{
"name": "release-info",
"url": "https://example.github.io/whatever/release.json",
"description": "Extra context to consult when assembling release notes"
}
]
}
環境変数(プロバイダーに依存しません。.env またはシェルで設定します):
| Var | 用途 | デフォルト |
|---|---|---|
TOKEN | プロバイダーの認証トークン — 設定には絶対に含めないでください | (空。公開リポジトリなら問題ありません) |
PROVIDER | github | gitlab | gitea(設定を上書きします) | github |
BASE_URL | API のベース URL — セルフホストの GitLab / Gitea の場合のみ | プロバイダーのデフォルト |
- コンテキストソースの
formatは任意です。Content-Type/URL の拡張子/コンテンツの判定から自動検出されます。検出結果が正しくない場合にのみ上書きしてください。
トークンの権限
サーバーが行うのはリリースの読み取り(GET /repos/{owner}/{repo}/releases…)のみです。そのため、TOKEN には必要最小限の読み取りスコープを付与し、書き込み権限は決して与えないでください。
| プロバイダー | 公開リポジトリ | 非公開リポジトリ |
|---|---|---|
| GitHub — fine-grained PAT | トークン不要 | 各リポジトリに対して Contents: Read-only(リリースは Contents 配下にあります) |
| GitHub — classic PAT | トークン不要(または public_repo) | repo スコープ |
| GitLab | トークン不要 | read_api スコープ |
| Gitea / Forgejo | トークン不要 | read:repository スコープ |
GitHub では、config.json に記載したリポジトリだけを対象に、Contents → Read-only を設定した fine-grained PAT が最も権限を絞った方法であり、このサーバーに必要な権限はこれだけです。
設定(repos + contextSources)は、次の 2 つの場所のいずれかから指定する必要があります。どちらも設定されていない場合、サーバーは起動時にエラーになります。
| ソース | 用途 |
|---|---|
RELEASE_MCP_CONFIG_JSON | 設定をインライン JSONで指定します。ファイルは不要です。すべてを環境変数で設定する uvx や MCP ハブに最適です。 |
RELEASE_MCP_CONFIG | config.json ファイルへのパス(デフォルトは ./config.json)。実際のファイルをマウントするコンテナーで使用します。 |
両方が設定されている場合は、インライン JSON が優先されます。ファイルを使用する場合は、config.example.json をコピーして始めてください。
ツール
| ツール | 用途 |
|---|---|
list_repos() | 設定済みのリポジトリ |
list_releases(repo, limit) | 1 つのリポジトリの最近のリリース |
get_latest_version(repo) | 1 つのリポジトリの最新リリース |
get_release(repo, tag) | 指定したタグの完全なノート |
compare_releases(repo, from_tag, to_tag) | 2 つのバージョン間のすべてのリリース |
gather_release_notes(selections[]) | N 組の (repo, tag) から生のノートをまとめます(並行処理) |
get_context(name?) | 設定済みのコンテキスト URL を読み込みます(形式は自動検出) |
選択は動的です。結合する (repo, tag) の組は、ユーザー(または Claude)が渡します。サーバーの instructions は、最初に get_context() を呼び出すよう Claude に指示します。
実行
サーバーはコンテナー内で HTTP transport を使用し、localhost:8000 で実行されます。まず設定ファイルと環境変数ファイルを作成してください(どちらの実行方法でも必要です)。
cp config.example.json config.json # edit repos + contextSources (no secrets)
cp .env.example .env # set TOKEN (+ PROVIDER / BASE_URL if needed)
通常実行
docker compose up -d
ローカル開発 — docker compose watch
ローカル開発では、docker compose watch を使うと、編集しながらサーバーを起動したままにできます。
docker compose watch
| 変更 | 動作 |
|---|---|
server.py | 同期+再起動 — コンテナにコピーされ、プロセスが再起動します |
requirements.txt、Dockerfile | 再ビルド — イメージが自動的に再ビルドされます |
config.json | バインドマウント(リアルタイム反映)です。再読み込みするには docker compose restart を実行してください |
uvx で実行する(クローン不要、コンテナ不要)
サーバーは PyPI に公開されているため、クライアントは
uvx を使って必要に応じて起動できます。チェックアウトも Docker も不要です。
uvx release-notes-mcp
uvx は stdio(デフォルトのトランスポート)経由でサーバーと通信します。
マウントするファイルがないため、RELEASE_MCP_CONFIG_JSON を使って設定を JSON としてインラインで渡してください
(すべて環境変数のみで設定でき、MCP ハブに最適です)。
RELEASE_MCP_CONFIG_JSON='{"repos":["myorg/web"],"contextSources":[]}' \
TOKEN=ghp_... uvx release-notes-mcp
ファイルを使用する場合は、代わりに RELEASE_MCP_CONFIG に絶対パスを指定してください
(uvx は作業ディレクトリが不明な状態で実行されるため、相対パスでは解決できません)。
RELEASE_MCP_CONFIG=/abs/path/config.json TOKEN=ghp_... uvx release-notes-mcp
Claude Code に登録する
HTTP(コンテナ) — 実行中のサーバーの URL を Claude Code に指定します。
claude mcp add --transport http release-notes http://localhost:8000/mcp
stdio(uvx) — Claude Code にサブプロセスとしてサーバーを起動させます。
claude mcp add release-notes \
--env RELEASE_MCP_CONFIG=/abs/path/config.json \
--env TOKEN=ghp_... \
-- uvx release-notes-mcp
次に Claude にこう依頼します。「auth-service と web の最新リリースをまとめて、プロダクトのリリースノートを作成してください。」
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。