关于 changesetgen
changesetgen 是 MCP 服务和命令行工具,可根据 Pull Request 的提交生成 changeset 和变更日志条目。它按 Conventional Commits 类型分组,提供版本升级建议,并可列出变更文件。
主要功能
- 01生成 changeset Markdown
- 02按提交类型分组
- 03配置分组顺序和标题
- 04标记破坏性变更
- 05建议 major、minor 或 patch 升级
- 06列出变更文件
适用场景
- 01根据 Pull Request 提交创建 changeset
- 02检查破坏性变更和升级建议
- 03在发布条目中列出改动文件
MCP 相关
提供 `generate_changeset` 工具,接收提交及可选的文件和约定设置,并返回 Markdown、升级信息、计数和分组。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
1收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| commits | array | 是 | PR 中的提交(至少一个) |
| convention | object | 否 | 仓库约定的覆盖设置(可选) |
| convention.group_order | array | 否 | 按其应显示的顺序排列的分组类型(可选) |
| convention.include_files | boolean | 否 | 是否包含 Files changed 部分(可选,默认值为 true) |
| convention.heading_prefix | string | 否 | 标题前缀(可选,默认值为 "## Changes") |
| package_name | string | 否 | 追加到标题末尾的包名称(可选) |
| files_changed | array | 否 | PR 中变更的文件(可选) |
详细介绍
changesetgen
每个拉取请求最终都需要一个 changeset:一段简短的 Markdown 条目,用于告知下一次发布有哪些变更,以及应提升哪个版本号。changesetgen 会根据该 PR 的提交,按照仓库自身的约定生成这段条目:
- 按类型分组 — 根据常规提交类型对提交进行分类,并在固定的章节标签下列出(Features、Fixes、Performance、Refactoring、Documentation、Tests、Build、CI、Style、Chores、Reverts、Other changes)。没有固定标签的类型会将首字母大写后显示,没有类型的提交则归入 Other changes。
- 按你的方式排序 — 默认情况下,各组按规范顺序排列;传入
convention.group_order,即可将你关注的分组移到前面,其余分组仍按规范顺序排列,未列出的类型按字母顺序排在最后。同一组内的提交保持你提供的顺序。 - 包含详细信息的条目行 — 带作用域的提交会显示为
- **scope:** description,破坏性提交的行末会加上[breaking],让高风险变更一目了然。 - 变更文件 — 提供 PR 的文件列表时,末尾的 Files changed 章节会按输入顺序列出文件;将
convention.include_files: false设为关闭此章节。 - 版本提升建议 — 有任何破坏性变更时建议提升
major;否则只要有任何feat提交,就建议提升minor;其余情况建议提升patch。同时输出提交数、破坏性变更数,以及按输出顺序排列的分组摘要。
标题默认为 ## Changes;传入软件包名称后,标题会包含该名称;也可以通过 convention.heading_prefix 完全替换标题。接受提交哈希作为参考,但不会打印。计算过程纯粹且在本地完成:不访问网络、不需要配置,也不会读取你传入参数之外的文件。无效输入——例如提交列表为空、提交缺少描述或字段类型错误——会被拒绝,并报错指出出错路径;不会生成不完整的条目。
命令行
npx @reneturcios/changesetgen generate --input args.json
npx @reneturcios/changesetgen --version
args.json 包含完整的参数对象:
{
"commits": [
{ "type": "feat", "scope": "ui", "description": "add export button" },
{ "type": "fix", "description": "stop crash on empty file", "hash": "abc123" },
{ "type": "feat", "scope": "api", "description": "drop the v1 endpoints", "breaking": true }
],
"files_changed": ["src/export.ts", "src/api.ts"],
"package_name": "my-pkg",
"convention": { "group_order": ["feat", "fix"] }
}
只有 commits 是必填项,每个提交也只要求提供 description。生成的 changeset 会以 JSON 格式打印:{markdown, bump, commit_count, breaking_count, groups}。
退出码:成功时为 0;运行时错误时为 1(包括输入文件无法读取或无效,以及输入无效);用法错误时为 2。
MCP 服务
npx -y @reneturcios/changesetgen mcp
MCP 客户端配置:
{
"mcpServers": {
"changesetgen": {
"command": "npx",
"args": ["-y", "@reneturcios/changesetgen", "mcp"]
}
}
}
工具
-
generate_changeset— 根据 PR 的提交生成 changeset 和变更日志条目。commits(数组,必填,至少一个)— 提交对象,格式为{description, hash?, type?, scope?, breaking?};description必填且不能为空files_changed(字符串数组,可选)— PR 修改的文件,会列在 Files changed 章节中package_name(字符串,可选)— 附加到标题中convention(对象,可选)—{heading_prefix?, group_order?, include_files?}覆盖项,用于设置标题文本、分组顺序,以及是否显示文件章节
返回
{markdown, bump, commit_count, breaking_count, groups}。
Docker
docker run -i ghcr.io/cloudcorprecords/changesetgen
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/changesetgen 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
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。