mcpField
C
changesetgen

changesetgen

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

关于 changesetgen

changesetgen 是 MCP 服务和命令行工具,可根据 Pull Request 的提交生成 changeset 和变更日志条目。它按 Conventional Commits 类型分组,提供版本升级建议,并可列出变更文件。

主要功能

  1. 01生成 changeset Markdown
  2. 02按提交类型分组
  3. 03配置分组顺序和标题
  4. 04标记破坏性变更
  5. 05建议 major、minor 或 patch 升级
  6. 06列出变更文件

适用场景

  1. 01根据 Pull Request 提交创建 changeset
  2. 02检查破坏性变更和升级建议
  3. 03在发布条目中列出改动文件

MCP 相关

提供 `generate_changeset` 工具,接收提交及可选的文件和约定设置,并返回 Markdown、升级信息、计数和分组。

配置

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

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

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

安装包
npm@reneturcios/changesetgen0.1.0
ocighcr.io/cloudcorprecords/changesetgen:0.1.0

工具

1

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

参数类型必填说明
commitsarray是PR 中的提交(至少一个)
conventionobject否仓库约定的覆盖设置(可选)
convention.group_orderarray否按其应显示的顺序排列的分组类型(可选)
convention.include_filesboolean否是否包含 Files changed 部分(可选,默认值为 true)
convention.heading_prefixstring否标题前缀(可选,默认值为 "## Changes")
package_namestring否追加到标题末尾的包名称(可选)
files_changedarray否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

评论

支持 Markdown

第一次接触 MCP?

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

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