用途:为 Claude 提供统一稳定的“等待某事件发生”能力,用于在编排流程中暂停,直到 PR 检查变绿、PR 被合并或检查失败等。目前支持 GitHub,GitLab 计划中。
主要能力:提供 wait.start(返回 wait_id)、wait.status(返回 pending|satisfied|failed|timeout|cancelled|unknown)、wait.cancel、wait.await(指数退避轮询并发送进度通知)。支持条件:checks_succeeded、checks_failed、pr_merged、pr_approved、changes_requested、workflow_completed、comment_received。选择器格式为 {owner, repo, pr}。comment_received 可加 filters(since、include_bots、author_allowlist、author_denylist),默认 since 为等待创建时间。
使用方式:先构建 stdio MCP 服务器(cargo build && target/debug/dumbwaiter-mcp),设置 export GITHUB_TOKEN=…(仓库读权限即可)。可选环境变量:DUMBWAITER_DB 覆盖 ./state/dumbwaiter.sqlite,DUMBWAITER_AWAIT_TTL_SECS 默认 900,DUMBWAITER_WATCHER=1 启用后台轮询。典型流程:wait.start 捕获 wait_id,再 wait.await 观察进度并处理最终结果,必要时 wait.status 或 wait.cancel。
适用场景:需要持久、可取消、重启后可恢复的等待;需要向宿主展示进度;需要逐条响应 PR 评论/评审/反应事件。
限制:仅 GitHub 已支持;需有效 GITHUB_TOKEN;宿主需支持 MCP 通知才能看到进度;超时返回 timeout 与耗时;unknown 表示 wait_id 未找到;认证失败或限流时应给出明确提示并遵守退避,不要激进重试;切勿回显令牌,使用最小权限。