Release Notes Mcp

io.github.vaggeliskls由 GitHub 帳號 vaggeliskls 發布v1.0.1更新於 Oct 24, 2026

A small, generic MCP server for combining GitHub/GitLab/Gitea releases into product release notes

已驗證STDIO僅桌面效率與工作流開發者工具

概覽

AI 產生的概覽

一個本機 MCP 伺服器,讀取 GitHub、GitLab 或 Gitea 的發行版本,並合併產生產品發行說明。

可以做什麼
從工作階段中設定的 GitHub、GitLab 或 Gitea 儲存庫讀取發行版本,供應商預設為 GitHub,自架執行個體可另設基礎網址。把多個已設定儲存庫的發行版本合併成產品發行說明。在發行資料之外,一併帶入已設定的內容來源中的補充資訊。儲存庫與內容來源可透過內嵌 JSON 或設定檔路徑提供。
適用情境
適合產品發行說明分散在 GitHub、GitLab 或 Gitea 多個儲存庫,希望由助理彙整各儲存庫的發行版本並草擬合併說明的場合,包括使用自架程式碼代管平台的情況。
執行需求
以 Python 套件形式透過 uvx 在本機以 stdio 執行。需要提供 RELEASE_MCP_CONFIG_JSON 內嵌 JSON 或 RELEASE_MCP_CONFIG 設定檔絕對路徑,其中列出儲存庫和內容來源。PROVIDER 變數選擇 github、gitlab 或 gitea(預設 github);僅自架 GitLab 或 Gitea 需要 BASE_URL。公開儲存庫可不填 TOKEN。需要能連線到對應程式碼代管平台的網路。
安裝前請注意
TOKEN 是 GitHub 個人存取權杖或 GitLab/Gitea 權杖;公開儲存庫可不填,若填寫應盡量縮小權限並優先唯讀。設定透過環境變數傳入,請留意不要在共用的命令歷史或日誌中洩漏儲存庫清單或權杖。伺服器會從第三方程式碼代管平台讀取發行資料。

安裝

在 SourceWeft 中

  1. 開啟 儀表板中的 Release Notes Mcp,將其新增到工作區。
  2. 為需要使用其工具的對話啟用該服務。

Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。

其他 MCP 客戶端

參照 儲存庫 中的啟動說明。

README

release-notes-mcp

A small, generic MCP server that combines GitHub releases from several repositories into a single product release note. The server just fetches and bundles raw data; the LLM synthesizes the final notes.

Nothing is architecture-specific:

  • provider — which forge to read releases from: github (default), gitlab, or gitea/Forgejo. Release fetching goes through a small adapter, so adding a forge means normalizing its release JSON — a contained change.
  • repos — the repos the server is allowed to read releases from.
  • contextSources — arbitrary URLs loaded as background context (a style guide, a versions file, feature names — anything). The server assigns no meaning; what each source is is decided by what you put behind the URL.

Configuration

Config holds no secrets — only the repo set and context. Provider and auth come from the environment.

jsonc
// 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"    }  ]}

Environment (provider-agnostic, set in .env or your shell):

VarPurposeDefault
TOKENAuth token for the provider — never in config(empty; ok for public repos)
PROVIDERgithub | gitlab | gitea (overrides config)github
BASE_URLAPI base — only for self-hosted GitLab / Giteaprovider default
  • format on a context source is optional — auto-detected from Content-Type / URL extension / content sniffing. Override only when wrong.

Token permissions

The server only ever reads releases (GET /repos/{owner}/{repo}/releases…), so give TOKEN the minimum read scope — never write access.

ProviderPublic reposPrivate repos
GitHub — fine-grained PATno token neededContents: Read-only (releases live under Contents), for each repo you list
GitHub — classic PATno token needed (or public_repo)repo scope
GitLabno token neededread_api scope
Gitea / Forgejono token neededread:repository scope

For GitHub, a fine-grained PAT scoped to just the repos in config.json with Contents → Read-only is the tightest setup and is all this server requires.

The config (repos + contextSources) must come from one of two places — the server errors on startup if neither is set:

SourceUse it for
RELEASE_MCP_CONFIG_JSONThe config as inline JSON. No file needed — ideal for uvx / MCP hubs where everything is an env var.
RELEASE_MCP_CONFIGPath to a config.json file (default ./config.json). Used by the container, which mounts a real file.

Inline JSON wins when both are set. Copy config.example.json to get started with the file approach.

Tools

ToolPurpose
list_repos()The configured repos
list_releases(repo, limit)Recent releases for one repo
get_latest_version(repo)Newest release for one repo
get_release(repo, tag)Full notes for one tag
compare_releases(repo, from_tag, to_tag)All releases between two versions
gather_release_notes(selections[])Bundle raw notes from N (repo, tag) pairs (concurrent)
get_context(name?)Load configured context URLs (auto-detected format)

Selection is dynamic — you (or Claude) pass the (repo, tag) pairs to combine. The server's instructions tell Claude to call get_context() first.

Run

The server runs in a container over HTTP transport on localhost:8000. First create the config and env files (both runs need them):

bash
cp config.example.json config.json   # edit repos + contextSources (no secrets)cp .env.example .env                  # set TOKEN (+ PROVIDER / BASE_URL if needed)

Normal run

bash
docker compose up -d

Local development — docker compose watch

For local dev, docker compose watch keeps the server live while you edit:

bash
docker compose watch
ChangeAction
server.pysync + restart — copied into the container, process restarts
requirements.txt, Dockerfilerebuild — image is rebuilt automatically
config.jsonbind-mounted (live); run docker compose restart to reload it

Run with uvx (no clone, no container)

The server is published to PyPI, so a client can launch it on demand with uvx — no checkout and no Docker:

bash
uvx release-notes-mcp

uvx talks to the server over stdio (the default transport). Since there's no file to mount, pass the config inline as JSON via RELEASE_MCP_CONFIG_JSON (everything is env-only — ideal for MCP hubs):

bash
RELEASE_MCP_CONFIG_JSON='{"repos":["myorg/web"],"contextSources":[]}' \  TOKEN=ghp_... uvx release-notes-mcp

Prefer a file? Point RELEASE_MCP_CONFIG at an absolute path instead (uvx runs from an unknown working directory, so a relative path won't resolve):

bash
RELEASE_MCP_CONFIG=/abs/path/config.json TOKEN=ghp_... uvx release-notes-mcp

Register with Claude Code

HTTP (container) — point Claude Code at the running server by its URL:

bash
claude mcp add --transport http release-notes http://localhost:8000/mcp

stdio (uvx) — let Claude Code launch the server as a subprocess:

bash
claude mcp add release-notes \  --env RELEASE_MCP_CONFIG=/abs/path/config.json \  --env TOKEN=ghp_... \  -- uvx release-notes-mcp

Then ask Claude: "Combine the latest releases of auth-service and web into a product release note."

來源:README.md,提交 09fa6c5

工具

0
SourceWeft 尚未在沙箱中啟動過該軟體包,因此其工具未知。

版本歷史

1
  1. v1.0.1最新Sep 16, 2026

評分

已滿足適用檢查項的 40%

該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。

  • 近 30 天內可連通25 分

    請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。

  • 已宣告認證方式10 分

    請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。

  • 已列出工具15 分

    請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。

  • 描述必需15 分
  • 圖示10 分
  • 文件15 分
  • 授權條款10 分

    請在儲存庫或註冊中心條目中宣告授權條款。