mcpField
S
standup-mr

standup-mr

远程服务
github.com/Jubstaaa版本控制11 周前更新
代码仓库

关于 standup-mr

standup-mr 根据 GitLab 或 GitHub 的合并请求活动生成站会材料,而非读取本地提交历史。它适用于跟踪评审状态和阻塞事项的团队,还可附上失败流水线任务的错误行。

主要功能

  1. 01读取 GitLab 和 GitHub 合并请求状态
  2. 02汇总评审队列和阻塞事项
  3. 03提取失败任务日志中的错误行
  4. 04输出 JSON 或 Markdown 摘要
  5. 05向聊天 Webhook 发布站会记录
  6. 06提供本地和托管 MCP 服务

适用场景

  1. 01根据当前合并请求准备站会内容
  2. 02查看待处理评审和受阻工作
  3. 03通过任务日志诊断流水线失败
  4. 04向 Slack 或 Discord 发布站会记录

MCP 相关

提供三个 MCP 工具,用于收集站会数据、获取记录撰写规则和向聊天 Webhook 发布记录。另有通过 HTTPS 提供、带登录流程的托管 MCP 服务。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://standup.ilkerbalcilar.com/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

安装包
npmstandup-mr1.1.1

工具

详细介绍

standup-mr

standup-mr MCP server Listed on mcpservers.org smithery badge mcprush grade

根据合并请求状态生成站会记录,而不是根据提交日志。

大多数站会工具会读取本地的 git log。这只能回答“我输入了什么”,而这并不是大家在站会上关心的问题。这个工具会读取 GitLab 或 GitHub:哪些内容已准备好合并、哪些内容受阻、哪些内容正在等你处理;如果流水线失败,它还会打开作业日志并告诉你原因。

standup-mr 正在读取 GitLab 项目:已准备就绪、受阻、草稿,以及失败作业中的错误行

有何不同

基于提交日志的工具standup-mr
来源本地 git logGitLab 或 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"
身份验证
GitHubGitLab
标志--host / --token--host / --token
环境变量GITHUB_HOST / GITHUB_TOKENGITLAB_HOST / GITLAB_TOKEN
CLI 会话gh 身份验证配置glab 身份验证配置

如果未指定主机,GitHub 默认使用 github.com。GitLab 没有默认主机——那里通常使用自托管实例,因此必须通过标志、环境变量或 glab 自身的配置指定主机。

提供方会按以下顺序确定:

  1. 如果传入了 --provider github / --provider gitlab,则使用该值
  2. 可识别的 --host(github.com、gitlab.com,或包含 github/gitlab 的主机名)
  3. STANDUP_PROVIDER,或已设置的 GITHUB_* / GITLAB_* 环境变量组
  4. 已登录的 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

添加到 Cursor 在 VS Code 中安装

助手操作
claude.ai(网页、移动端、桌面版)Settings → Connectors → Add custom connector → 粘贴 URL → Connect
Claude Codeclaude 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 CLIgemini extensions install https://github.com/Jubstaaa/standup-mr,然后运行 /mcp auth standup
Codex CLIcodex 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

评论

支持 Markdown

第一次接触 MCP?

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

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