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 分

    请在仓库或注册中心条目中声明许可证。