mcpField
R
release-notes-mcp

release-notes-mcp

本地服务
github.com/vaggeliskls版本控制017 周前更新

关于 release-notes-mcp

release-notes-mcp 汇集指定仓库的发布数据和上下文网址,供 LLM 综合生成产品发布说明。它通过提供方配置支持 GitHub、GitLab 和 Gitea/Forgejo。

主要功能

  1. 01读取 GitHub、GitLab 和 Gitea 发布信息
  2. 02列出仓库并获取发布详情
  3. 03比较版本并汇总选定的说明
  4. 04从网址加载背景上下文
  5. 05通过环境变量或文件配置仓库和提供方

适用场景

  1. 01汇总多个仓库的发布内容以编写产品更新
  2. 02获取两个版本之间的发布说明
  3. 03将风格指南或版本文件作为上下文

MCP 相关

该 MCP 服务提供列出仓库和发布、获取版本及说明、比较发布、汇总所选说明以及加载配置上下文的工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"vaggeliskls-release-notes": {
"command": "uvx",
"args": [
"release-notes-mcp"
],
"env": {
"RELEASE_MCP_CONFIG_JSON": "<RELEASE_MCP_CONFIG_JSON>",
"RELEASE_MCP_CONFIG": "<RELEASE_MCP_CONFIG>",
"TOKEN": "<TOKEN>",
"PROVIDER": "<PROVIDER>",
"BASE_URL": "<BASE_URL>"
}
}
}
}
启动命令uvx release-notes-mcp
需要配置的环境变量
RELEASE_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypirelease-notes-mcp1.0.1

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

release-notes-mcp

一个小巧、通用的 MCP 服务,可将多个仓库的 GitHub 发布记录合并为一份产品发布说明。服务只负责获取并打包原始数据;最终说明由大模型综合生成。

不依赖特定架构:

  • provider — 要从哪个代码托管平台读取发布记录:github(默认)、gitlab 或 gitea/Forgejo。发布记录通过一个小型适配器获取,因此添加代码托管平台只需规范化其发布记录 JSON——改动范围有限。
  • repos — 服务获准读取发布记录的仓库。
  • contextSources — 用作背景上下文的任意 URL(风格指南、版本文件、功能名称等)。服务不会赋予它们任何含义;每个来源代表什么,取决于你在 URL 后提供的内容。

配置

配置中不包含任何密钥——只有仓库列表和上下文。Provider 和身份验证信息来自环境变量。

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

环境变量(与 provider 无关,在 .env 或 shell 中设置):

变量用途默认值
TOKENProvider 的身份验证令牌——绝不能放在配置中(空;公开仓库可用)
PROVIDERgithub | gitlab | gitea(覆盖配置)github
BASE_URLAPI 基础 URL——仅用于可自托管的 GitLab / Giteaprovider 默认值
  • 上下文来源中的 format 可选——会根据 Content-Type / URL 扩展名 / 内容嗅探自动检测。仅在检测结果错误时覆盖。
令牌权限

服务只会读取发布记录(GET /repos/{owner}/{repo}/releases…),因此请为 TOKEN 授予最低限度的读取权限——绝不能授予写入权限。

Provider公开仓库私有仓库
GitHub — 细粒度 PAT无需令牌Contents:只读(发布记录归属 Contents),需针对你列出的每个仓库
GitHub — 经典 PAT无需令牌(或使用 public_repo)repo scope
GitLab无需令牌read_api scope
Gitea / Forgejo无需令牌read:repository scope

对于 GitHub,使用一个仅限 config.json 中所列仓库且具有 Contents → 只读权限的细粒度 PAT,是权限最精简的配置,也是此服务所需的全部权限。

配置(repos + contextSources)必须来自以下两个来源之一——如果两者都未设置,服务会在启动时出错:

来源用途
RELEASE_MCP_CONFIG_JSON将配置作为内联 JSON提供。无需文件——适合所有内容都通过环境变量设置的 uvx / MCP Hub。
RELEASE_MCP_CONFIGconfig.json 文件的路径(默认 ./config.json)。供挂载实际文件的容器使用。

两者都设置时,内联 JSON 优先。复制 config.example.json 即可开始使用文件配置方式。

工具

工具用途
list_repos()列出已配置的仓库
list_releases(repo, limit)获取一个仓库的近期发布记录
get_latest_version(repo)获取一个仓库的最新发布版本
get_release(repo, tag)获取一个标签对应的完整说明
compare_releases(repo, from_tag, to_tag)获取两个版本之间的所有发布记录
gather_release_notes(selections[])汇总 N 个 (repo, tag) 对应的原始说明(并发)
get_context(name?)加载已配置的上下文 URL(格式自动检测)

选择是动态的——你(或 Claude)可以传入要合并的 (repo, tag) 对。服务的 instructions 会告诉 Claude 首先调用 get_context()。

运行

服务通过容器在 localhost:8000 上使用 HTTP 传输运行。 首先创建配置文件和环境变量文件(两种运行方式都需要):

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 hub):

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 的最新发布内容合并成一份产品发布说明。"

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。