mcpField
S
standupgen

standupgen

本地服务
github.com/CloudCorpRecords生产力01 周前更新

关于 standupgen

standupgen 将提供的 Git 提交和 PR 记录整理成事实性的 Markdown 站会摘要,适用于准备状态更新的团队成员。它只依据输入记录生成内容,并可按作者筛选,同时返回对应数量。

主要功能

  1. 01生成 Markdown 站会摘要
  2. 02按状态归类合并、进行中及已关闭 PR
  3. 03保留提交输入顺序
  4. 04按作者筛选记录
  5. 05返回活动数量

适用场景

  1. 01根据近期提交准备站会内容
  2. 02按状态汇总 PR
  3. 03生成指定作者的活动更新
  4. 04查看摘要内容对应的数量

MCP 相关

向 MCP 客户端提供 `generate_standup` 工具。客户端传入提交和 PR 记录,并可选提供作者和日期标签;工具返回站会摘要及数量。

配置

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

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

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

安装包
npm@reneturcios/standupgen0.1.0
ocighcr.io/cloudcorprecords/standupgen:0.1.0

工具

1

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

参数类型必填说明
authorstring否指定后,仅纳入此作者的提交和拉取请求(精确匹配)(可选)
commitsarray否要报告的提交(可选)
date_labelstring否每日站会标题的标签(可选,默认值为 "Yesterday")
pull_requestsarray否要报告的拉取请求活动(可选)

详细介绍

standupgen

凭记忆撰写的站会记录容易偏向当时觉得最重要的内容,也会悄悄漏掉那些实际已交付的小修复。standupgen 采用相反的做法:你将活动记录——git 提交和拉取请求活动——交给它,它只根据这些记录起草站会内容,不添加任何内容,也不加以润饰。结果客观、在本地生成,并且由你编辑后再粘贴到任何地方。

生成的站会内容是简短的 Markdown,最多包含三个部分:

  • 已完成 — 按你提供的顺序列出每个提交,显示其哈希的前 7 个字符;随后按编号排序列出已合并的拉取请求。
  • 进行中 — 按编号排序列出状态为 opened 或 updated 的拉取请求,并标注各自的状态。
  • 已关闭但未合并 — 按编号排序列出状态为 closed 的拉取请求。

没有内容的部分会完全省略。如果完全没有活动,站会内容只有标题和“No recorded activity.”。除文本外,结果还包含计数——提交、已合并、进行中、已关闭——确保数字和文字始终一致。

可选的 author 筛选器会将站会内容缩小到一个人:只包含其 author 字段存在且完全匹配的提交和拉取请求,计数也基于筛选后的记录计算。没有作者的记录不会通过筛选。标题标签默认为“Yesterday”,可通过 date_label 设置。

格式错误的输入——不是数组的列表、不是对象的条目、缺失或为空的哈希、主题或标题,或其类型不是字符串;缺失、不是整数、小于 1 或重复的拉取请求编号;不属于 opened / updated / merged / closed 的状态;为空的作者或日期标签——都会导致验证错误,并指出出错路径(例如 pull_requests[1].number must be an integer >= 1),且不会生成不完整的站会内容。计算是纯粹且本地进行的:不访问网络、不需要配置,也不会读取任何仓库——只处理你传入的记录。

命令行

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

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

{
  "date_label": "Yesterday",
  "commits": [
    { "hash": "a1b2c3d4e5", "subject": "Fix retry backoff", "author": "rene" },
    { "hash": "f6e7d8c9b0", "subject": "Add export button", "author": "rene" }
  ],
  "pull_requests": [
    { "number": 42, "title": "Retry backoff", "state": "merged", "author": "rene" },
    { "number": 43, "title": "Dark mode", "state": "opened", "author": "rene" },
    { "number": 40, "title": "Old experiment", "state": "closed", "author": "rene" }
  ]
}

commits 和 pull_requests 都是可选的,默认值为空。输出对象以 JSON 格式打印:

{
  "standup": "## Standup — Yesterday\n\n### Done\n- Fix retry backoff (a1b2c3d)\n- Add export button (f6e7d8c)\n- Merged #42: Retry backoff\n\n### In progress\n- #43: Dark mode (opened)\n\n### Closed without merging\n- #40: Old experiment",
  "counts": { "commits": 2, "merged": 1, "in_progress": 1, "closed": 1 }
}

生成的站会内容如下:

站会 — Yesterday

已完成
  • 修复重试退避(a1b2c3d)
  • 添加导出按钮(f6e7d8c)
  • 已合并 #42:重试退避
进行中
  • #43:深色模式(opened)
已关闭但未合并
  • #40:旧实验

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

MCP 服务

npx -y @reneturcios/standupgen mcp

MCP 客户端配置:

{
  "mcpServers": {
    "standupgen": {
      "command": "npx",
      "args": ["-y", "@reneturcios/standupgen", "mcp"]
    }
  }
}
工具
  • generate_standup — 根据 git 提交和拉取请求活动起草客观的站会内容。

    • commits(数组,可选,默认值为 [])— 提交记录,采用 {hash, subject, author?} 对象;hash 会显示其前 7 个字符
    • pull_requests(数组,可选,默认值为 [])— 拉取请求记录,采用 {number, title, state, author?} 对象;number 是集合中唯一的正整数,state 是 opened、updated、merged、closed 之一
    • author(字符串,可选)— 若提供,则仅包含此作者的提交和拉取请求(完全匹配);没有作者的记录会被排除
    • date_label(字符串,可选,默认值为 "Yesterday")— 站会标题的标签

    返回 {standup, counts},其中 counts 为 {commits, merged, in_progress, closed},基于筛选后的记录计算。

Docker

docker run -i ghcr.io/cloudcorprecords/standupgen
docker run --rm -v "$PWD:/w" ghcr.io/cloudcorprecords/standupgen 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 — Copyright (c) 2026 Rene Turcios

评论

支持 Markdown

第一次接触 MCP?

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

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