mcpField
C
changelogforge

changelogforge

本地服务
github.com/CloudCorpRecords开发工具01 周前更新

关于 changelogforge

changelogforge 是 MCP 服务和命令行工具,可将已合并的 Pull Request 转为分组明确的 Markdown 发布日志。它支持按标签配置分组,并以确定顺序输出,同时在本地校验输入。

主要功能

  1. 01生成 Markdown 发布日志
  2. 02按 Pull Request 标签分组
  3. 03配置分组及标题级别
  4. 04按编号稳定排序
  5. 05返回分组数据并校验输入

适用场景

  1. 01根据已合并的 Pull Request 编写发布日志
  2. 02采用仓库特定的标签分组规则
  3. 03为发布工具生成可重复的 Markdown

MCP 相关

提供 `generate_changelog` 工具,接收发布信息和 Pull Request,并返回分组数据及生成的 Markdown。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"cloudcorprecords-changelogforge": {
"command": "npx",
"args": [
"-y",
"@reneturcios/changelogforge"
]
}
}
}
启动命令npx -y @reneturcios/changelogforge

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@reneturcios/changelogforge0.1.0
ocighcr.io/cloudcorprecords/changelogforge:0.1.0

工具

1

收录的工具列表 · 更新于 1 周前

参数类型必填说明
datestring是发布日期,在标题中原样输出(不解析)
versionstring是发布版本标签,在标题中原样输出
group_orderarray否用于定义分组的标签,按输出顺序排列;拉取请求归入其包含的第一个匹配标签对应的分组(可选,默认值为 ["feature", "bugfix", "documentation", "maintenance"])
heading_levelinteger否版本标题的 Markdown 标题级别;分组标题的级别比它深一级(可选,默认值为 2)
pull_requestsarray是此版本的已合并拉取请求(至少一个)

详细介绍

changelogforge

一个版本已准备就绪,拉取请求已合并,现在需要有人把这份列表整理成读者真正会浏览的变更日志章节。changelogforge 专注于这一项工作:它会获取某个版本已合并的拉取请求,将它们归入带标签的分组,并以固定、可预测的格式将章节渲染为 Markdown。

  • 按标签分组 — 每个拉取请求会归入它所带标签中,在 group_order 里排位最靠前的那个。默认顺序为 feature、bugfix、documentation 和 maintenance,你也可以提供自己的列表来重命名、调整顺序、添加或移除分组。匹配区分大小写,且必须完全一致。
  • 其他分组 — 不带任何分组标签的拉取请求会归入最后一个分组,该分组的标题为 Other changes。最终为空的分组会被完全省略,只有在包含内容时才会显示其他分组。
  • 排序稳定 — 分组遵循 group_order 的顺序,其他分组始终排在最后;每个分组内的拉取请求按编号升序排列,因此相同的输入始终会渲染出相同的章节。
  • 精确的 Markdown — 版本标题位于 heading_level 指定的级别(默认为 2),分组标题则比它深一级。结果还会返回分组结构本身,因此调用方可以用其他方式渲染相同的数据。

版本和日期会按原样显示在标题中,不会解析或重新格式化。拉取请求编号在列表中必须唯一——重复编号会触发验证错误,并指出两处位置,例如 pull_requests[2].number duplicates pull_requests[0].number。其他格式错误的字段也会触发错误,并指出其路径;不会生成不完整的章节。整个计算是纯本地操作:不访问网络、不需要配置,也不会读取你传入输入之外的文件。

CLI

npx @reneturcios/changelogforge generate --input args.json
npx @reneturcios/changelogforge --version

args.json 包含完整的参数对象:

{
  "version": "1.2.0",
  "date": "2026-10-27",
  "pull_requests": [
    { "number": 7, "title": "Add export button", "labels": ["feature"] },
    { "number": 12, "title": "Fix crash on empty input", "labels": ["bugfix"] },
    { "number": 15, "title": "Tidy internals" }
  ]
}

每个拉取请求的 labels 默认为 [],group_order 默认为 ["feature", "bugfix", "documentation", "maintenance"],heading_level 默认为 2。渲染后的章节将以 JSON 格式打印:

{
  "version": "1.2.0",
  "date": "2026-10-27",
  "groups": [
    { "group": "feature", "heading": "feature", "pull_requests": [{ "number": 7, "title": "Add export button" }] },
    { "group": "bugfix", "heading": "bugfix", "pull_requests": [{ "number": 12, "title": "Fix crash on empty input" }] },
    { "group": "other", "heading": "Other changes", "pull_requests": [{ "number": 15, "title": "Tidy internals" }] }
  ],
  "markdown": "## 1.2.0 (2026-10-27)\n\n### feature\n\n- Add export button (#7)\n\n### bugfix\n\n- Fix crash on empty input (#12)\n\n### Other changes\n\n- Tidy internals (#15)",
  "total_pull_requests": 3
}

退出代码:成功时为 0;运行时错误(包括输入文件无法读取或无效,以及输入无效)时为 1;用法错误时为 2。

MCP 服务

npx -y @reneturcios/changelogforge mcp

MCP 客户端配置:

{
  "mcpServers": {
    "changelogforge": {
      "command": "npx",
      "args": ["-y", "@reneturcios/changelogforge", "mcp"]
    }
  }
}
工具
  • generate_changelog — 根据已合并的拉取请求生成版本变更日志章节,并按标签分组。

    • version(字符串,必填)— 版本标签,在标题中按原样显示
    • date(字符串,必填)— 版本日期,在标题中按原样显示
    • pull_requests(数组,必填,至少一个)— 已合并的拉取请求,格式为 {number, title, labels?} 对象;列表中的 number 必须唯一
    • group_order(字符串数组,可选)— 用于定义分组的标签,按输出顺序排列
    • heading_level(整数,可选,1–5)— 版本标题的 Markdown 标题级别

    返回 {version, date, groups, markdown, total_pull_requests}。

Docker

docker run -i ghcr.io/cloudcorprecords/changelogforge
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/changelogforge generate --input /w/args.json

开发

npm install
npm run build   # tsc -> dist/
npm test        # tsx --test test/*.test.ts (pure local, no network)
npm run dev     # run the CLI from source

许可证

MIT — 版权所有 (c) 2026 Rene Turcios

评论

支持 Markdown

第一次接触 MCP?

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

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