name: github-automation description: 通过Rube MCP(Composio)自动化GitHub仓库、问题、拉取请求、分支、CI/CD和权限。以编程方式管理代码工作流、审查PR、搜索代码和处理部署。 requires: mcp: [rube]
通过Rube MCP实现GitHub自动化
通过Composio的GitHub工具包自动化GitHub仓库管理、问题跟踪、拉取请求工作流、分支操作和CI/CD。
前提条件
- Rube MCP必须已连接(RUBE_SEARCH_TOOLS可用)
- 通过
RUBE_MANAGE_CONNECTIONS与工具包github建立活跃的GitHub连接 - 始终先调用
RUBE_SEARCH_TOOLS以获取当前工具模式
设置
获取Rube MCP:在客户端配置中将https://rube.app/mcp添加为MCP服务器。无需API密钥——只需添加端点即可工作。
- 通过确认
RUBE_SEARCH_TOOLS响应来验证Rube MCP可用 - 使用工具包
github调用RUBE_MANAGE_CONNECTIONS - 如果连接不活跃,按照返回的认证链接完成GitHub OAuth
- 在运行任何工作流前确认连接状态显示为活跃
核心工作流
1. 创建和管理问题
使用场景:用户想要创建、列出或管理GitHub问题
工具序列:
GITHUB_LIST_REPOSITORIES_FOR_THE_AUTHENTICATED_USER- 如果未知,查找目标仓库 [前提]GITHUB_LIST_REPOSITORY_ISSUES- 列出现有问题(包括PR) [必需]GITHUB_CREATE_AN_ISSUE- 创建新问题 [必需]GITHUB_CREATE_AN_ISSUE_COMMENT- 向问题添加评论 [可选]GITHUB_SEARCH_ISSUES_AND_PULL_REQUESTS- 按关键词跨仓库搜索 [可选]
关键参数:
owner:仓库所有者(用户名或组织),不区分大小写repo:仓库名称,不带.git扩展title:问题标题(创建时必需)body:问题描述(支持Markdown)labels:标签名称数组assignees:GitHub用户名数组state:‘open’、'closed’或’all’用于过滤
常见陷阱:
GITHUB_LIST_REPOSITORY_ISSUES返回问题和拉取请求;检查pull_request字段以区分- 只有具有推送访问权限的用户才能设置分配者、标签和里程碑;否则会静默丢弃
- 分页:
per_page最大100;迭代页面直到为空
2. 管理拉取请求
使用场景:用户想要创建、审查或合并拉取请求
工具序列:
GITHUB_FIND_PULL_REQUESTS- 搜索和过滤PR [必需]GITHUB_GET_A_PULL_REQUEST- 获取详细PR信息,包括可合并状态 [必需]GITHUB_LIST_PULL_REQUESTS_FILES- 审查更改的文件 [可选]GITHUB_CREATE_A_PULL_REQUEST- 创建新PR [必需]GITHUB_CREATE_AN_ISSUE_COMMENT- 发布审查评论 [可选]GITHUB_LIST_CHECK_RUNS_FOR_A_REF- 在合并前验证CI状态 [可选]GITHUB_MERGE_A_PULL_REQUEST- 在明确用户批准后合并 [必需]
关键参数:
head:源分支(必须存在;跨仓库:‘用户名:分支’)base:目标分支以合并到(如’main’)title:PR标题(除非提供issue号码,否则必需)merge_method:‘merge’、‘squash’或’rebase’state:‘open’、‘closed’或’all’
常见陷阱:
- 如果base/head无效、相同或已合并,
GITHUB_CREATE_A_PULL_REQUEST会失败并返回422 - 如果PR是草稿、已关闭或应用分支保护,
GITHUB_MERGE_A_PULL_REQUEST可能被拒绝 - 在合并前始终用
GITHUB_GET_A_PULL_REQUEST验证可合并状态 - 在调用MERGE前要求明确的用户确认
3. 管理仓库和分支
使用场景:用户想要创建仓库、管理分支或更新仓库设置
工具序列:
GITHUB_LIST_REPOSITORIES_FOR_THE_AUTHENTICATED_USER- 列出用户的仓库 [必需]GITHUB_GET_A_REPOSITORY- 获取详细仓库信息 [可选]GITHUB_CREATE_A_REPOSITORY_FOR_THE_AUTHENTICATED_USER- 创建个人仓库 [必需]GITHUB_CREATE_AN_ORGANIZATION_REPOSITORY- 创建组织仓库 [替代]GITHUB_LIST_BRANCHES- 列出分支 [必需]GITHUB_CREATE_A_REFERENCE- 从SHA创建新分支 [必需]GITHUB_UPDATE_A_REPOSITORY- 更新仓库设置 [可选]
关键参数:
name:仓库名称private:可见性的布尔值ref:完整引用路径(如’refs/heads/new-branch’)sha:指向新引用的提交SHAdefault_branch:默认分支名称
常见陷阱:
GITHUB_CREATE_A_REFERENCE只创建新引用;对现有引用使用GITHUB_UPDATE_A_REFERENCEref必须以’refs/'开头并至少包含两个斜杠GITHUB_LIST_BRANCHES通过page/per_page分页;迭代直到空页GITHUB_DELETE_A_REPOSITORY是永久且不可逆的;需要管理员权限
4. 搜索代码和提交
使用场景:用户想要跨仓库查找代码、文件或提交
工具序列:
GITHUB_SEARCH_CODE- 搜索文件内容和路径 [必需]GITHUB_SEARCH_CODE_ALL_PAGES- 多页代码搜索 [替代]GITHUB_SEARCH_COMMITS_BY_AUTHOR- 按作者/日期/组织搜索提交 [必需]GITHUB_LIST_COMMITS- 列出特定仓库的提交 [替代]GITHUB_GET_A_COMMIT- 获取详细提交信息 [可选]GITHUB_GET_REPOSITORY_CONTENT- 获取文件内容 [可选]
关键参数:
q:带有限定符的搜索查询(language:python、repo:owner/repo、extension:js)owner/repo:用于仓库特定的提交列表author:按提交作者过滤since/until:提交的ISO 8601日期范围
常见陷阱:
- 代码搜索只索引默认分支下小于384KB的文件
- 代码搜索最多返回1000个结果
GITHUB_SEARCH_COMMITS_BY_AUTHOR需要除限定符外的关键词;仅限定符查询不被允许- 在空仓库上,
GITHUB_LIST_COMMITS返回409
5. 管理CI/CD和部署
使用场景:用户想要查看工作流、检查CI状态或管理部署
工具序列:
GITHUB_LIST_REPOSITORY_WORKFLOWS- 列出GitHub Actions工作流 [必需]GITHUB_GET_A_WORKFLOW- 按ID或文件名获取工作流详情 [可选]GITHUB_CREATE_A_WORKFLOW_DISPATCH_EVENT- 手动触发工作流 [必需]GITHUB_LIST_CHECK_RUNS_FOR_A_REF- 检查提交/分支的CI状态 [必需]GITHUB_LIST_DEPLOYMENTS- 列出部署 [可选]GITHUB_GET_A_DEPLOYMENT_STATUS- 获取部署状态 [可选]
关键参数:
workflow_id:数字ID或文件名(如’ci.yml’)ref:工作流调度的Git引用(分支/标签)inputs:匹配on.workflow_dispatch.inputs的工作流输入JSON字符串environment:按环境名称过滤部署
常见陷阱:
GITHUB_CREATE_A_WORKFLOW_DISPATCH_EVENT要求工作流配置有workflow_dispatch触发器- 完整路径
.github/workflows/main.yml自动简化为main.yml - 输入最多10个键值对;必须匹配工作流的
on.workflow_dispatch.inputs定义
6. 管理用户和权限
使用场景:用户想要检查协作者、权限或分支保护
工具序列:
GITHUB_LIST_REPOSITORY_COLLABORATORS- 列出仓库协作者 [必需]GITHUB_GET_REPOSITORY_PERMISSIONS_FOR_A_USER- 检查特定用户的访问权限 [可选]GITHUB_GET_BRANCH_PROTECTION- 检查分支保护规则 [必需]GITHUB_UPDATE_BRANCH_PROTECTION- 更新保护设置 [可选]GITHUB_ADD_A_REPOSITORY_COLLABORATOR- 添加/更新协作者 [可选]
关键参数:
affiliation:协作者过滤的’outside’、‘direct’或’all’permission:按’pull’、‘triage’、‘push’、‘maintain’、'admin’过滤branch:分支保护规则的分支名称enforce_admins:保护是否适用于管理员
常见陷阱:
- 对于未受保护的分支,
GITHUB_GET_BRANCH_PROTECTION返回404;视为无保护规则 - 从
permissions.push或role_name确定推送能力,而非显示标签 GITHUB_LIST_REPOSITORY_COLLABORATORS分页;迭代所有页面- 对于非协作者,
GITHUB_GET_REPOSITORY_PERMISSIONS_FOR_A_USER可能不确定
常见模式
ID解析
- 仓库名称 -> 所有者/仓库:
GITHUB_LIST_REPOSITORIES_FOR_THE_AUTHENTICATED_USER - PR号码 -> PR详情:
GITHUB_FIND_PULL_REQUESTS然后GITHUB_GET_A_PULL_REQUEST - 分支名称 -> SHA:
GITHUB_GET_A_BRANCH - 工作流名称 -> ID:
GITHUB_LIST_REPOSITORY_WORKFLOWS
分页
所有列表端点使用基于页面的分页:
page:页码(从1开始)per_page:每页结果数(最大100)- 迭代直到响应返回少于
per_page的结果
安全
- 在合并前始终验证PR可合并状态
- 对破坏性操作(合并、删除)要求明确的用户确认
- 在合并前用
GITHUB_LIST_CHECK_RUNS_FOR_A_REF检查CI状态
已知陷阱
- 问题 vs PRs:
GITHUB_LIST_REPOSITORY_ISSUES返回两者;检查pull_request字段 - 分页限制:
per_page最大100;始终迭代页面直到为空 - 分支创建:如果引用已存在,
GITHUB_CREATE_A_REFERENCE失败并返回422 - 合并防护:合并可能因分支保护、失败检查或草稿状态而失败
- 代码搜索限制:只索引默认分支下小于384KB的文件;最大1000个结果
- 提交搜索:需要搜索文本关键词和限定符
- 破坏性操作:仓库删除不可逆;合并不能撤销
- 静默权限丢弃:没有推送访问权限时,标签、分配者、里程碑静默丢弃
快速参考
| 任务 | 工具模式 | 关键参数 |
|---|---|---|
| 列出仓库 | GITHUB_LIST_REPOSITORIES_FOR_THE_AUTHENTICATED_USER |
type, sort, per_page |
| 获取仓库 | GITHUB_GET_A_REPOSITORY |
owner, repo |
| 创建问题 | GITHUB_CREATE_AN_ISSUE |
owner, repo, title, body |
| 列出问题 | GITHUB_LIST_REPOSITORY_ISSUES |
owner, repo, state |
| 查找PRs | GITHUB_FIND_PULL_REQUESTS |
repo, state, author |
| 创建PR | GITHUB_CREATE_A_PULL_REQUEST |
owner, repo, head, base, title |
| 合并PR | GITHUB_MERGE_A_PULL_REQUEST |
owner, repo, pull_number, merge_method |
| 列出分支 | GITHUB_LIST_BRANCHES |
owner, repo |
| 创建分支 | GITHUB_CREATE_A_REFERENCE |
owner, repo, ref, sha |
| 搜索代码 | GITHUB_SEARCH_CODE |
q |
| 列出提交 | GITHUB_LIST_COMMITS |
owner, repo, author, since |
| 搜索提交 | GITHUB_SEARCH_COMMITS_BY_AUTHOR |
q |
| 列出工作流 | GITHUB_LIST_REPOSITORY_WORKFLOWS |
owner, repo |
| 触发工作流 | GITHUB_CREATE_A_WORKFLOW_DISPATCH_EVENT |
owner, repo, workflow_id, ref |
| 检查CI | GITHUB_LIST_CHECK_RUNS_FOR_A_REF |
owner, repo, ref |
| 列出协作者 | GITHUB_LIST_REPOSITORY_COLLABORATORS |
owner, repo |
| 分支保护 | GITHUB_GET_BRANCH_PROTECTION |
owner, repo, branch |