关于 standup-mr
standup-mr 根据 GitLab 或 GitHub 的合并请求活动生成站会材料,而非读取本地提交历史。它适用于跟踪评审状态和阻塞事项的团队,还可附上失败流水线任务的错误行。
主要功能
- 01读取 GitLab 和 GitHub 合并请求状态
- 02汇总评审队列和阻塞事项
- 03提取失败任务日志中的错误行
- 04输出 JSON 或 Markdown 摘要
- 05向聊天 Webhook 发布站会记录
- 06提供本地和托管 MCP 服务
适用场景
- 01根据当前合并请求准备站会内容
- 02查看待处理评审和受阻工作
- 03通过任务日志诊断流水线失败
- 04向 Slack 或 Discord 发布站会记录
MCP 相关
提供三个 MCP 工具,用于收集站会数据、获取记录撰写规则和向聊天 Webhook 发布记录。另有通过 HTTPS 提供、带登录流程的托管 MCP 服务。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://standup.ilkerbalcilar.com/mcpclaude mcp add --transport http jubstaaa-standup-mr https://standup.ilkerbalcilar.com/mcp{"mcpServers":{"jubstaaa-standup-mr":{"type":"http","url":"https://standup.ilkerbalcilar.com/mcp"}}}在 Cursor 中打开{"servers":{"jubstaaa-standup-mr":{"type":"http","url":"https://standup.ilkerbalcilar.com/mcp"}}}在 VS Code 中打开{"mcpServers":{"jubstaaa-standup-mr":{"type":"http","url":"https://standup.ilkerbalcilar.com/mcp"}}}{"mcpServers":{"jubstaaa-standup-mr":{"serverUrl":"https://standup.ilkerbalcilar.com/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
详细介绍
standup-mr
根据合并请求状态生成站会记录,而不是根据提交日志。
大多数站会工具会读取本地的 git log。这只能回答“我输入了什么”,而这并不是大家在站会上关心的问题。这个工具会读取 GitLab 或 GitHub:哪些内容已准备好合并、哪些内容受阻、哪些内容正在等你处理;如果流水线失败,它还会打开作业日志并告诉你原因。

有何不同
| 基于提交日志的工具 | standup-mr | |
|---|---|---|
| 来源 | 本地 git log | GitLab 或 GitHub API |
| 合并请求状态 | ✗ | 已准备就绪 / 受阻 / 草稿 / 过时 |
| 审核队列 | ✗ | 仅待处理项,已过滤掉已批准项 |
| 流水线失败 | ✗ | 来自作业跟踪记录或 Actions 作业日志的错误行 |
| 可自托管(GitLab CE/EE、GitHub Enterprise) | 不定 | 一等支持 |
使用
npx standup-mr fetch # JSON, provider auto-detected
npx standup-mr fetch --provider github # GitHub
npx standup-mr fetch --provider gitlab # GitLab
npx standup-mr fetch --markdown # structured digest
npx standup-mr fetch --lang tr # Turkish date labels
npx standup-mr fetch --markdown | npx standup-mr post --google-chat "$URL"
身份验证
| GitHub | GitLab | |
|---|---|---|
| 标志 | --host / --token | --host / --token |
| 环境变量 | GITHUB_HOST / GITHUB_TOKEN | GITLAB_HOST / GITLAB_TOKEN |
| CLI 会话 | gh 身份验证配置 | glab 身份验证配置 |
如果未指定主机,GitHub 默认使用 github.com。GitLab 没有默认主机——那里通常使用自托管实例,因此必须通过标志、环境变量或 glab 自身的配置指定主机。
提供方会按以下顺序确定:
- 如果传入了
--provider github/--provider gitlab,则使用该值 - 可识别的
--host(github.com、gitlab.com,或包含github/gitlab的主机名) STANDUP_PROVIDER,或已设置的GITHUB_*/GITLAB_*环境变量组- 已登录的
gh/glab
如果无法通过这些方式确定提供方,或者结果不明确(两者都符合),命令会报出清晰的错误,而不是猜测。
因此,如果你已经在使用 gh 或 glab,就无需进行任何配置。
发布到聊天
npx standup-mr fetch --markdown | npx standup-mr post --slack "$SLACK_WEBHOOK_URL"
托管连接器:适用于任何 AI 助手
无需令牌,也无需配置文件——只需登录。托管服务支持标准 MCP OAuth 流程,因此任何支持远程 MCP 服务的助手都可以使用它:添加 URL,然后会打开一个浏览器页面供你登录。
https://standup.ilkerbalcilar.com/mcp
| 助手 | 操作 |
|---|---|
| claude.ai(网页、移动端、桌面版) | Settings → Connectors → Add custom connector → 粘贴 URL → Connect |
| Claude Code | claude mcp add --scope user --transport http standup https://standup.ilkerbalcilar.com/mcp,然后运行 /mcp 登录 |
| Cursor | 点击上方按钮,或在 ~/.cursor/mcp.json 中添加 "standup": { "url": "https://standup.ilkerbalcilar.com/mcp" } |
| VS Code(Copilot) | 点击上方按钮,或在 mcp.json 中添加 "standup": { "type": "http", "url": "https://standup.ilkerbalcilar.com/mcp" } |
| Gemini CLI | gemini extensions install https://github.com/Jubstaaa/standup-mr,然后运行 /mcp auth standup |
| Codex CLI | codex mcp add standup --url https://standup.ilkerbalcilar.com/mcp,然后运行 codex mcp login standup |
| ChatGPT | 开启开发者模式后:Settings → Apps → Create → 粘贴 URL,OAuth |
claude.ai 和 Claude Code 已通过端到端测试;其他客户端使用相同的 标准流程。如果其中某个无法登录,请 提交问题。
在登录页面关联账户时,说明中应写:
- GitHub — 通过 standup-mr GitHub App 登录。它只能查看安装了该应用的 仓库,因此也要在你的组织中安装;如果组织不批准安装,请改用精细权限令牌添加 github.com。
- gitlab.com — 使用 GitLab 登录。
- 你公司的 GitLab 或 GitHub Enterprise — 输入主机名。如果公司里 已有人设置了登录方式,你会看到“使用……登录”按钮。否则,只需设置一次: 页面会显示在你的主机上创建 OAuth 应用所需的确切重定向 URI 和权限范围, 你粘贴应用 ID 和密钥,此后该主机上的所有人都可以登录。只读令牌也可用。
- 聊天 Webhook (可选) — Slack、Discord 或 Google Chat,这样你可以让助手 在完成说明后代为发布。
可关联任意多个账户,例如,用 GitHub 处理个人项目,用公司的 GitLab 处理工作,然后请求“我的站会”或“我的工作站会”。关联了 多个账户时,助手会询问你指的是哪个账户。
在带有移动应用的助手中添加此服务——例如 Claude 或 ChatGPT—— 也可以通过手机使用:在去会议的路上请求生成站会说明。
存储内容。 你的服务提供商令牌和 Webhook URL 会使用
AES-256-GCM 加密,仅用于读取合并请求和发布说明。助手持有的
访问令牌以哈希形式存储。断开连接会删除所有数据;连续 30 天未使用的连接也会被删除。服务端代码位于
remote/。
何时改用本地服务。 托管服务无法访问位于 VPN 后面或私人网络上的 GitLab。请在自己的机器上运行下方的 stdio 服务——令牌不会离开本机。
四种使用方式
CLI — 核心组件。输出 JSON;零运行时依赖。
MCP 服务(mcp/)— 提供三个工具,可供 Claude Desktop、Claude Code、Cursor
或任何可运行本地进程的 MCP 客户端使用。参见 mcp/README.md。
远程 MCP 服务(remote/)— 通过 HTTPS 提供相同的工具,并支持登录,适用于
任何支持远程 MCP 服务的助手,包括网页版和移动应用。参见上文。
Claude Code 插件 — 笔记编写指南,以 standup 技能的形式提供。在 Claude Code 中:
/plugin marketplace add Jubstaaa/standup-mr
/plugin install standup@standup-mr
然后输入 /standup。使用 /plugin marketplace update standup-mr 获取更新。
在 Cursor、Codex 或其他助手中使用
如果你不使用 Claude Code,请配置 MCP 服务以获取实时数据,并另外粘贴笔记编写规则。
Cursor — 添加到 ~/.cursor/mcp.json(全局)或 .cursor/mcp.json
(项目本地):
{
"mcpServers": {
"standup": {
"command": "npx",
"args": ["-y", "standup-mr", "mcp"],
"env": {
"GITHUB_TOKEN": "ghp_..."
}
}
}
}
Codex — 添加到 ~/.codex/config.toml:
[mcp_servers.standup]
command = "npx"
args = ["-y", "standup-mr", "mcp"]
[mcp_servers.standup.env]
GITHUB_TOKEN = "ghp_..."
这两个客户端的具体配置键和文件路径都因版本而异 — 如果上面的代码片段不起作用,请查阅 Cursor 的 MCP 文档或 Codex 自己的配置 文档,了解当前格式,不要盲目相信此文件。
服务提供三个工具:
| 工具 | 功能 |
|---|---|
get_standup_data | 读取数据源并以 JSON 格式返回报告。可选参数 provider、host、lang。 |
get_note_instructions | 返回笔记编写规则,让助手能按照该技能的方式编写笔记。 |
post_standup_note | 将完成的笔记发布到 Slack、Discord 或 Google Chat webhook。 |
post_standup_note 从 STANDUP_WEBHOOK_URL 读取 webhook URL,绝不会将其作为参数接收 —
任何持有该 URL 的人都可以向频道发布内容,因此它应与令牌放在一起,而不应出现在对话记录中。负载格式根据 URL 主机推断;只有代理隐藏了主机信息时才需要 kind。
目前实现了三种格式:slack 和 google-chat 都会发布 {"text"},
discord 会发布 {"content"}。
Slack 和 Google Chat 不支持标准 Markdown 渲染,因此笔记在发送前会进行改写:**粗体** 会变成 *粗体*,## 标题会变成粗体行。行内代码、围栏代码块及其内容保持不变。Discord 原生支持 Markdown,因此发送内容不会改动。其他任何接受 Slack 格式正文的服务 —
Mattermost、Rocket.Chat、n8n 或 Zapier 端点 — 都可以通过传入 kind: "slack" 来使用,或在 CLI 中使用 --slack URL。
在 MCP 之外,同样的规则也可通过标准输出获取:
npx standup-mr instructions >> AGENTS.md
--markdown 是摘要,不是写好的笔记
--markdown 会将原始材料整理成易读的章节。它不会
将事件归纳为主题,也不会诊断阻塞问题 — 这些是模型的工作,位于 MCP 客户端的提示词或 Claude Code 技能中。
- 不使用 AI:结构化摘要。
- 使用 AI:可以直接读出来的笔记。
摘要示例
一次真实周一运行的匿名化输出 — 请注意,周五和周六各自有独立的章节,而且 GitLab 尚未评估的合并请求不会被标记为已就绪:
# Monday, 31 August — dev
_Structured digest — not a written note._
## Previous working day: Friday, 28 August
- `acme/ui` pushed to — fix(keyboard): scale keys to viewport (4 commits)
- `acme/ui` accepted — chore(deps): bump @acme/ui to 0.5.18
- `acme/api` opened — feat: package subscription sales
## Previous working day: Saturday, 29 August
- `acme/ui` pushed to — fix(keyboard): close the autofill bar (1 commit)
## Ready to merge (2)
- `acme/api` !196 fix: normalise the +90 trunk prefix
- `acme/web` !194 refactor: loading state — **no pipeline ran**
## Blocked (1)
- `acme/terminal` !49 fix: relative date chips — **1 unresolved comment(s)**
## Reviews (2 pending)
- `acme/mobile` !501 chore: upgrade to RN 0.87 — Teammate
## Blockers
- `acme/mobile` !6 — job `quality`
- `npm ERR! code E404`
- `npm ERR! 404 Not Found - GET https://registry.example.com/@acme%2fui`
最后一节正是这个工具的价值所在。其他所有 standup 工具都能告诉你流水线失败了;而这个工具会打开失败作业的日志,并显示 404 — 相比 403,404 通常意味着令牌的作用域设置有误,而不是缺少软件包。
稳定性
自 1.0.0 起,CLI 命令和标志、fetch 和
get_standup_data 返回的 JSON、MCP 工具名称和参数,以及
环境变量均遵循语义化版本:会破坏现有配置的
变更将等到主版本发布。次要版本中可能会新增 JSON 字段,因此请按名称
读取,而不要按位置读取。standup.ilkerbalcilar.com 上的托管服务会
持续更新,不受 npm 版本限制。
已知限制
- GitHub 的事件动态记录较浅。 它最多约包含过去 90 天内的 300 条事件, 因此,活动非常频繁的账户或较早的空档可能会导致最早的事件悄然丢失。 GitLab 没有类似的已记录上限。
- 只有属于同一账户的令牌才能查看 GitHub 活动,而且其他人的令牌 无法看到私有仓库事件,即使该令牌拥有其他方面足够的权限范围也不行。
- 在 GitHub 上,仅通过旧版 commit-statuses API 报告状态的 CI
——某些供应商仍以这种方式集成——会显示为
pipelineMissing。 检查状态仅从 check-runs 中读取。 - 无法获取诊断信息的阻塞项仍会报告,其形式为
job: "unknown",并附带一行diagnosis unavailable: …错误。 无论如何,合并请求都会被阻止;缺少的只是说明。服务器错误会先重试两次, 被拒绝的令牌仍会导致本次运行失败。
从 0.1.x 升级
0.2.0 改动了 JSON 输出、库 API 和 MCP 选项。如果你会将
standup fetch 的输出传递给其他程序,或导入此包,请在升级前阅读
CHANGELOG.md。简要说明如下:
previous和previousEvents已替换为previousDays[],其中每个活跃日 对应一个条目,因此周末不再吞掉周五的数据。现在,jq .previous在无错误的情况下会返回null。MergeRequest、Review和Blocker都新增了必需的provider字段, 而Provider.getReviews接受的是Identity,而非数字 ID。- MCP 的
CollectOptions.provider现在是一个 provider 名称;请通过providerImpl注入Provider实例。
Claude Code 插件用户应运行 /plugin marketplace update standup-mr —
standup 技能也随报告格式一同更改。
要求
Node 20 或更高版本。CLI 核心(fetch、post、instructions)不需要
运行时依赖。MCP 服务(mcp 命令)需要一个依赖:
@modelcontextprotocol/sdk。
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。