关于 GitHub Repos Manager MCP Server
GitHub Repos Manager MCP Server 是基于 Node.js 的 MCP 服务,让 MCP 客户端凭借 GitHub 个人访问令牌管理仓库、Issue、PR、分支和提交。项目不依赖 Docker,直接调用 GitHub API,并可限制可访问的仓库和工具。
主要功能
- 01仓库、Issue 与 PR 管理
- 02分支与提交历史查看
- 03提交比较
- 04访问仓库与工具的白名单控制
- 05支持设置默认仓库
- 06图片上传并嵌入 Issue
适用场景
- 01通过 AI 客户端创建和管理 GitHub Issue
- 02查看分支、提交历史并比较差异
- 03限制 AI 只能操作指定仓库
MCP 相关
该项目是 MCP 服务,向 Claude Desktop、Cline、Cursor 等 MCP 客户端暴露 89 个 GitHub 相关工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
GitHub Repos Manager MCP 服务
基于令牌的 GitHub 自动化管理。无需 Docker,性能更优;配置灵活,可进行精细控制;提供 89 个工具并直接集成 API。
一款功能全面的模型上下文协议(MCP)服务,可让你的 MCP 客户端(Claude Desktop、Roo Code、Cline、Cursor、Windsurf 等)使用你的 GitHub 个人访问令牌与 GitHub 仓库交互。
此工具只需使用 GitHub 令牌即可简化 GitHub 仓库管理。它省去了 Docker,避免了不必要的复杂性,并通过直接集成 API 快速、高效地完成任务。
此服务基于 Node.js 构建,提供完整的工具集,用于仓库管理、问题跟踪、协作管理等,同时利用 GitHub API 实现最佳性能。
跳转至快速设置和 MCP 客户端配置
🚀 相较于其他 GitHub 自动化 MCP 服务的主要优势
🎯 简单:基于令牌的访问方式,无需面对复杂配置。
🌿 高效:无需 Docker,轻量运行,性能出色。
💪 强大:89 个工具与 API 直接集成,灵活性无与伦比。
🔒 灵活:支持配置工具,实现精细控制。
🎯 简单的设置与操作
✅ 无需 Docker - 简单的 Node.js 服务,可在任何地方运行
✅ 只需设置一个令牌 - 只需 GitHub 个人访问令牌即可使用
✅ 直接集成 API - 无需依赖 gh CLI,速度更快、可靠性更高
✅ 零配置 - 只需令牌即可开箱即用
🔒 高级安全性与控制
✅ 允许的仓库 - 将操作限制在特定仓库或所有者范围内
✅ 工具管理 - 启用或禁用特定工具,实现精细控制
✅ 默认仓库 - 设置默认仓库,简化工作流
✅ 灵活的权限 - 精确配置服务可访问的内容
💪 强大功能
✅ 全面的工具集 - 89 个强大工具,支持完整的 GitHub 工作流
✅ 分支与提交管理 - 创建分支、浏览历史记录、比较变更
✅ 支持上传图片 - 直接在问题中上传并嵌入图片
✅ 高级筛选 - 根据多项条件排序、筛选和搜索
✅ 速率限制处理 - 内置 GitHub API 速率限制管理
🎯 完整功能集
📁 仓库管理
- 智能仓库列表,支持按可见性(公开/私有/全部)筛选并选择排序方式
- 详细的仓库信息,包括统计数据、URL 和元数据
- 浏览文件和目录,支持指定分支或提交
- 搜索仓库,可在整个 GitHub 中进行高级排序搜索
- 设置默认仓库,简化工作流
🎫 高级问题管理
- 完整的问题生命周期 - 创建、编辑、列出问题并管理其状态
- 丰富的内容支持 - 直接在问题中上传并嵌入图片
- 标签管理 - 使用自定义标签添加、移除和整理标签
- 负责人管理 - 分配或取消分配团队成员
- 锁定/解锁问题,并可自定义原因
- 评论系统 - 创建、编辑、删除和列出问题评论
- 状态管理 - 打开、关闭问题并跟踪进度
🔄 拉取请求管理
- 拉取请求列表,支持按状态筛选和排序
- 全面的 PR 信息,包括分支详情和状态
🌿 分支与提交管理
- 分支操作 - 列出所有分支及其保护状态和最新提交
- 创建分支 - 从现有分支或提交创建新分支
- 提交历史 - 使用高级筛选条件(日期、作者、分支)查看提交历史
- 提交详情 - 获取全面的提交信息,包括文件变更
- 提交比较 - 比较任意两个提交、分支或标签,查看差异
👥 协作与用户管理
- 用户个人资料信息,适用于任何 GitHub 用户或你自己的账户
- 仓库协作者管理,支持按权限筛选
- 团队协作工具,用于管理访问权限
🎨 高级功能
- 图片上传与嵌入 - 将本地图片直接上传到 GitHub
- 批量操作 - 管理多个受指派人、标签和评论
- 灵活的身份验证 - 通过令牌安全访问 GitHub API
- 智能错误处理 - 提供全面的错误报告与恢复机制
前提条件
最低要求——就是这么简单!
- Node.js(版本 18 或更高)——仅此而已!
- GitHub Personal Access Token (PAT) ——唯一需要的配置
- 前往 GitHub → Settings → Developer settings → Personal access tokens → Tokens (classic) 或 Fine-grained tokens。
- 生成新令牌,至少包含以下权限范围:
repo(完全控制私有仓库)——建议启用,以获得完整功能。user:read或user:email(用于读取用户个人资料数据)。read:org(如果需要访问组织信息)。
- 重要:请妥善保管此令牌。你需要在 MCP 客户端对此服务的配置中直接提供该令牌(见下方第 3 步)。
快速设置
使用 npx(最简单——无需安装!)
确保已安装 Node.js,然后使用 npx 直接运行服务
确认已将 GitHub 令牌导出为名为 GH_TOKEN 的环境变量,或将其添加到 MCP 客户端配置中。
无需克隆或安装,即可直接运行此服务:
# Run directly with npx
npx -y github-repos-manager-mcp
适用于 macOS/Linux:
{
"mcpServers": {
"github-repos-manager": {
"command": "npx",
"args": [
"-y",
"github-repos-manager-mcp"
],
"env": {
"GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE"
}
}
}
}
适用于 Windows,某些情况下可能需要使用 npx.cmd 而非 npx:
{
"mcpServers": {
"github-repos-manager": {
"command": "npx.cmd",
"args": [
"-y",
"github-repos-manager-mcp"
],
"env": {
"GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE"
}
}
}
}
此命令会自动下载并运行最新版本的服务,无需在本地安装任何内容。
克隆、安装并在本地运行
如果你希望在本地运行服务,请克隆仓库并安装依赖项:
git clone https://github.com/kurdin/github-repos-manager.git
cd github-repos-manager
npm install
然后,配置 MCP 客户端,使其指向本地服务,并使用 server.cjs 的完整路径:
{
"mcpServers": {
"github-repos-manager": {
"command": "node",
"args": ["/full/path/to/your/project/github-repos-manager-mcp/server.cjs"],
"env": {
"GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE"
}
}
}
}
重要:将 "ghp_YOUR_ACTUAL_TOKEN_HERE" 替换为你的实际 GitHub Personal Access Token。
3. 测试服务
MCP 客户端配置了正确的 server.cjs 路径和 GH_TOKEN 后,当客户端尝试使用其某个工具时,服务应会自动启动。
你也可以直接测试服务脚本以进行基本身份验证,但这需要在此特定测试期间,临时在 shell 中设置 GH_TOKEN 环境变量:
# For direct script testing ONLY (normal operation uses MCP client config)
export GH_TOKEN="ghp_YOUR_TEMPORARY_TEST_TOKEN"
node server.cjs
unset GH_TOKEN # Important: unset after testing
如果成功,你应会看到 "GitHub API authentication successful" 和 "GitHub Repos Manager MCP Server running on stdio"。
注意:只有通过环境变量、命令行参数显式配置,或使用 set_default_repo 工具时,服务才会设置默认仓库。它绝不会自动设置默认仓库。
Claude Desktop 的 claude_desktop_config.json 示例文件位置:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json(路径可能因系统而异)
⚙️ 配置选项
默认仓库设置
你可以设置默认仓库来简化工作流,避免在每条命令中都指定 owner 和 repo。有三种配置方式:
1. 环境变量(推荐用于 MCP 客户端)
在 MCP 客户端配置中添加环境变量:
使用 npx:
{
"mcpServers": {
"github-repos-manager": {
"command": "npx",
"args": ["-y", "github-repos-manager-mcp"],
"env": {
"GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
"GH_DEFAULT_OWNER": "octocat",
"GH_DEFAULT_REPO": "Hello-World"
}
}
}
}
使用本地安装:
{
"mcpServers": {
"github-repos-manager": {
"command": "node",
"args": ["/full/path/to/your/project/github-repos-manager-mcp/server.cjs"],
"env": {
"GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
"GH_DEFAULT_OWNER": "octocat",
"GH_DEFAULT_REPO": "Hello-World"
}
}
}
}
2. 命令行参数
直接运行服务时,可以传入默认仓库设置:
node server.cjs --default-owner octocat --default-repo Hello-World
3. 运行时工具调用
在对话中使用 set_default_repo 工具来设置或更改默认仓库:
- “将默认仓库设置为
microsoft/vscode” - “将默认值更改为我自己的仓库
username/my-project”
配置优先级(从高到低):
- 命令行参数(
--default-owner、--default-repo) - 环境变量(
GH_DEFAULT_OWNER、GH_DEFAULT_REPO) - 运行时工具调用(
set_default_repo)
默认仓库的优势:
- 无需在每条命令中指定
owner和repo - 主要使用一个仓库时,可简化工作流
- 可在会话期间随时使用
set_default_repo工具更改 - 可选项——不设置默认仓库也能使用所有工具
设置默认仓库后,可以在命令中省略 owner 和 repo 参数:
- 不必说:“列出 microsoft/vscode 的议题”
- 只需说:“列出议题”(将 microsoft/vscode 设为默认仓库后)
仓库访问控制
可以使用 GH_ALLOWED_REPOS 环境变量或 --allowed-repos 命令行参数,限制服务可访问的仓库。这项安全功能可确保服务只能对已批准的仓库执行操作。
允许的仓库配置
1. 环境变量(用于 MCP 客户端)
{
"mcpServers": {
"github-repos-manager": {
"command": "node",
"args": ["/path/to/server.cjs"],
"env": {
"GH_TOKEN": "ghp_YOUR_TOKEN",
"GH_ALLOWED_REPOS": "owner1/repo1,owner2/repo2,owner3"
}
}
}
}
2. 命令行参数
node server.cjs --allowed-repos "microsoft/vscode,facebook/react,google"
工作原理:
- 完整仓库路径(
owner/repo):仅允许访问指定仓库 - 仅所有者(
owner):允许访问该所有者的所有仓库 - 混合格式:可以组合使用以上两种格式
示例:
"microsoft/vscode"——仅允许访问 Microsoft 的 vscode 仓库"kurdin"——允许访问 kurdin 拥有的所有仓库"kurdin,microsoft/vscode,facebook/react"——允许访问 kurdin 的所有仓库以及指定仓库
工具访问控制
禁用特定工具
设置 GH_DISABLED_TOOLS 环境变量或使用 --disabled-tools 命令行参数,禁用不希望开放的工具。
仅允许特定工具
为确保最高安全性,可以设置 GH_ALLOWED_TOOLS 环境变量或使用 --allowed-tools 命令行参数,将服务限制为仅允许特定工具。
**重要:**如果同时设置了 GH_ALLOWED_TOOLS 和 GH_DISABLED_TOOLS,则以 GH_ALLOWED_TOOLS 为准。
完整配置示例
使用 npx(macOS/Linux):
{
"mcpServers": {
"github-repos-manager": {
"command": "npx",
"args": ["-y", "github-repos-manager-mcp"],
"env": {
"GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
"GH_DEFAULT_OWNER": "mycompany",
"GH_DEFAULT_REPO": "main-project",
"GH_ALLOWED_REPOS": "mycompany,trusted-org/specific-repo",
"GH_ALLOWED_TOOLS": "list_issues,create_issue,list_prs,get_repo_info"
}
}
}
}
使用 npx(Windows):
{
"mcpServers": {
"github-repos-manager": {
"command": "npx.cmd",
"args": ["-y", "github-repos-manager-mcp"],
"env": {
"GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
"GH_DEFAULT_OWNER": "mycompany",
"GH_DEFAULT_REPO": "main-project",
"GH_ALLOWED_REPOS": "mycompany,trusted-org/specific-repo",
"GH_ALLOWED_TOOLS": "list_issues,create_issue,list_prs,get_repo_info"
}
}
}
}
使用本地安装:
{
"mcpServers": {
"github-repos-manager": {
"command": "node",
"args": ["/full/path/to/your/project/github-repos-manager-mcp/server.cjs"],
"env": {
"GH_TOKEN": "ghp_YOUR_ACTUAL_TOKEN_HERE",
"GH_DEFAULT_OWNER": "mycompany",
"GH_DEFAULT_REPO": "main-project",
"GH_ALLOWED_REPOS": "mycompany,trusted-org/specific-repo",
"GH_ALLOWED_TOOLS": "list_issues,create_issue,list_prs,get_repo_info"
}
}
}
}
对应的命令行参数:
node server.cjs \
--default-owner mycompany \
--default-repo main-project \
--allowed-repos "mycompany,trusted-org/specific-repo" \
--allowed-tools "list_issues,create_issue,list_prs,get_repo_info"
🛠️ 完整工具参考
此服务提供 89 个全面的工具,用于完整管理 GitHub 工作流:
增强型拉取请求管理
create_pull_request:创建新的拉取请求,并指定标题、正文和分支。- 参数:
owner(字符串,可选)、repo(字符串,可选)、title(字符串,必填)、body(字符串,可选)、head(字符串,必填——包含更改的分支)、base(字符串,必填——目标分支)、draft(布尔值,可选)、maintainer_can_modify(布尔值,可选)
- 参数:
edit_pull_request:更新现有拉取请求的标题、正文、状态或基础分支。- 参数:
owner(字符串,可选)、repo(字符串,可选)、pull_number(整数,必填)、title(字符串,可选)、body(字符串,可选)、state(字符串,可选——"open" 或 "closed")、base(字符串,可选)
- 参数:
get_pr_details:获取拉取请求的详细信息,包括状态和合并详情。- 参数:
owner(字符串,可选)、repo(字符串,可选)、pull_number(整数,必填)
- 参数:
list_pr_reviews:列出拉取请求的所有评审及其状态和评论。- 参数:
owner(字符串,可选)、repo(字符串,可选)、pull_number(整数,必填)、per_page(整数,可选,默认值为 30)
- 参数:
create_pr_review:提交对拉取请求的评审,并附上评论和批准状态。- 参数:
owner(字符串,可选)、repo(字符串,可选)、pull_number(整数,必填)、body(字符串,可选)、event(字符串,可选——"APPROVE"、"REQUEST_CHANGES"、"COMMENT")、comments(数组,可选)
- 参数:
list_pr_files:列出拉取请求中所有变更的文件及新增/删除统计信息。- 参数:
owner(字符串,可选)、repo(字符串,可选)、pull_number(整数,必填)、per_page(整数,可选,默认值为 30)
- 参数:
文件与内容管理
create_file:在代码仓库中创建新文件,并提供文件内容和提交消息。- 参数:
owner(字符串,可选)、repo(字符串,可选)、path(字符串,必填)、content(字符串,必填)、message(字符串,必填)、branch(字符串,可选)、committer(对象,可选)
- 参数:
update_file:通过新提交更新现有文件的内容。- 参数:
owner(字符串,可选)、repo(字符串,可选)、path(字符串,必填)、content(字符串,必填)、message(字符串,必填)、sha(字符串,必填——当前文件 SHA)、branch(字符串,可选)
- 参数:
upload_file:将本地文件上传到代码仓库(支持二进制文件)。- 参数:
owner(字符串,可选)、repo(字符串,可选)、local_path(字符串,必填)、repo_path(字符串,必填)、message(字符串,必填)、branch(字符串,可选)
- 参数:
delete_file:从代码仓库中删除文件,并提供提交消息。- 参数:
owner(字符串,可选)、repo(字符串,可选)、path(字符串,必填)、message(字符串,必填)、sha(字符串,必填——当前文件 SHA)、branch(字符串,可选)
- 参数:
安全与访问管理
list_deploy_keys:列出仓库的所有部署密钥及其权限。- 参数:
owner(字符串,可选)、repo(字符串,可选)、per_page(整数,可选,默认值为 30)
- 参数:
create_deploy_key:向仓库添加新的部署密钥,以便安全访问。- 参数:
owner(字符串,可选)、repo(字符串,可选)、title(字符串,必填)、key(字符串,必填——SSH 公钥)、read_only(布尔值,可选,默认值为 true)
- 参数:
delete_deploy_key:从仓库中移除部署密钥。- 参数:
owner(字符串,可选)、repo(字符串,可选)、key_id(整数,必填)
- 参数:
list_webhooks:列出仓库中配置的所有 Webhook。- 参数:
owner(字符串,可选)、repo(字符串,可选)、per_page(整数,可选,默认值为 30)
- 参数:
create_webhook:为仓库事件创建新的 Webhook。- 参数:
owner(字符串,可选)、repo(字符串,可选)、config(对象,必填——包含 url 和 content_type)、events(数组,可选,默认值为 ["push"])、active(布尔值,可选)
- 参数:
edit_webhook:更新 Webhook 配置、事件或启用状态。- 参数:
owner(字符串,可选)、repo(字符串,可选)、hook_id(整数,必填)、config(对象,可选)、events(数组,可选)、active(布尔值,可选)
- 参数:
delete_webhook:从仓库中移除 Webhook。- 参数:
owner(字符串,可选)、repo(字符串,可选)、hook_id(整数,必填)
- 参数:
list_secrets:列出仓库机密(仅名称,值经过加密)。- 参数:
owner(字符串,可选)、repo(字符串,可选)、per_page(整数,可选,默认值为 30)
- 参数:
update_secret:为 Actions 创建或更新仓库机密。- 参数:
owner(字符串,可选)、repo(字符串,可选)、secret_name(字符串,必填)、encrypted_value(字符串,必填)、key_id(字符串,必填)
- 参数:
GitHub Actions 与工作流
注意:这些工具是未来 GitHub Actions 集成的占位项。
list_workflows:列出仓库中的所有 GitHub Actions 工作流。list_workflow_runs:列出工作流运行记录,并提供筛选选项。get_workflow_run_details:获取工作流运行记录的详细信息。trigger_workflow:手动触发工作流调度事件。download_workflow_artifacts:下载工作流运行记录中的构件。cancel_workflow_run:取消正在进行的工作流运行。
仓库分析与洞察
get_repo_stats:获取全面的仓库统计信息,包括贡献者活动情况。- 参数:
owner(字符串,可选)、repo(字符串,可选)
- 参数:
list_repo_topics:列出与仓库关联的所有主题(标签)。- 参数:
owner(字符串,可选)、repo(字符串,可选)
- 参数:
update_repo_topics:更新主题,以便更好地发现仓库。- 参数:
owner(字符串,可选)、repo(字符串,可选)、names(字符串数组,必填)
- 参数:
get_repo_languages:获取仓库使用的编程语言及其字节数。- 参数:
owner(字符串,可选)、repo(字符串,可选)
- 参数:
list_stargazers:列出给仓库点过星的用户。- 参数:
owner(字符串,可选)、repo(字符串,可选)、per_page(整数,可选,默认值为 30)
- 参数:
list_watchers:列出关注仓库并接收通知的用户。- 参数:
owner(字符串,可选)、repo(字符串,可选)、per_page(整数,可选,默认值为 30)
- 参数:
list_forks:列出仓库的所有复刻,并提供排序选项。- 参数:
owner(字符串,可选)、repo(字符串,可选)、sort(字符串,可选——"newest"、"oldest"、"stargazers")、per_page(整数,可选)
- 参数:
get_repo_traffic:获取仓库流量数据,包括浏览量和克隆量(需要管理员权限)。- 参数:
owner(字符串,可选)、repo(字符串,可选)
- 参数:
高级搜索与发现
search_issues:搜索 GitHub 上的问题和拉取请求。- 参数:
query(字符串,必填),sort(字符串,可选 - "comments"、"reactions"、"interactions"、"created"、"updated"),order(字符串,可选 - "asc"、"desc"),per_page(整数,可选)
- 参数:
search_commits:跨仓库搜索提交。- 参数:
query(字符串,必填),sort(字符串,可选 - "author-date"、"committer-date"),order(字符串,可选),per_page(整数,可选)
- 参数:
search_code:跨 GitHub 仓库搜索代码。- 参数:
query(字符串,必填),sort(字符串,可选 - "indexed"),order(字符串,可选),per_page(整数,可选)
- 参数:
search_users:搜索用户和组织。- 参数:
query(字符串,必填),sort(字符串,可选 - "followers"、"repositories"、"joined"),order(字符串,可选),per_page(整数,可选)
- 参数:
search_topics:搜索仓库主题。- 参数:
query(字符串,必填),per_page(整数,可选,默认值为 30)
- 参数:
组织管理
list_org_repos:列出组织中的所有仓库。- 参数:
org(字符串,必填),type(字符串,可选 - "all"、"public"、"private"、"forks"、"sources"、"member"),sort(字符串,可选),per_page(整数,可选)
- 参数:
list_org_members:列出组织成员。- 参数:
org(字符串,必填),filter(字符串,可选 - "2fa_disabled"、"all"),role(字符串,可选 - "all"、"admin"、"member"),per_page(整数,可选)
- 参数:
get_org_info:获取组织的详细信息。- 参数:
org(字符串,必填)
- 参数:
list_org_teams:列出组织中的所有团队。- 参数:
org(字符串,必填),per_page(整数,可选,默认值为 30)
- 参数:
get_team_members:列出特定团队的成员。- 参数:
org(字符串,必填),team_slug(字符串,必填),role(字符串,可选 - "member"、"maintainer"、"all"),per_page(整数,可选)
- 参数:
manage_team_repos:为团队添加或移除仓库访问权限。- 参数:
org(字符串,必填),team_slug(字符串,必填),owner(字符串,必填),repo(字符串,必填),permission(字符串,可选 - "pull"、"push"、"admin"),action(字符串,必填 - "add" 或 "remove")
- 参数:
项目与高级功能
注意:其中一些工具是面向未来增强功能的占位项。
list_repo_projects:列出仓库项目(经典项目)。code_quality_checks:未来代码质量分析功能的占位项。custom_dashboards:自定义仪表板创建功能的占位项。automated_reporting:自动生成报告功能的占位项。notification_management:通知设置功能的占位项。release_management:版本发布管理功能的占位项。dependency_analysis:依赖项扫描功能的占位项。
仓库管理工具
set_default_repo:设置默认所有者和仓库,以简化后续命令的工作流。- 参数:
owner(字符串,必填),repo(字符串,必填)
- 参数:
list_repos:通过高级筛选,列出已通过身份验证的用户的 GitHub 仓库。- 参数:
per_page(数字,可选,默认值 10,最大值 100),visibility(字符串,可选,枚举值:"all"、"public"、"private",默认值 "all"),sort(字符串,可选,枚举值:"created"、"updated"、"pushed"、"full_name",默认值 "updated")
- 参数:
get_repo_info:获取特定仓库的详细信息,包括统计数据和元数据。- 参数:
owner(字符串,必填;未设置默认值时必填),repo(字符串,必填;未设置默认值时必填)
- 参数:
search_repos:在 GitHub 中搜索仓库,并使用高级排序选项。- 参数:
query(字符串,必填),per_page(数字,可选,默认值 10,最大值 100),sort(字符串,可选,枚举值:"stars"、"forks"、"help-wanted-issues"、"updated",默认值 "stars")
- 参数:
get_repo_contents:浏览任意仓库中的文件和目录,并支持分支或提交。- 参数:
owner(字符串,必填;未设置默认值时必填),repo(字符串,必填;未设置默认值时必填),path(字符串,可选,默认值 ""),ref(字符串,可选,例如分支名称或提交 SHA)
- 参数:
高级议题管理工具
list_issues:按状态筛选议题,并支持全面的分页功能。- 参数:
owner(字符串,必填;未设置默认值时必填),repo(字符串,必填;未设置默认值时必填),state(字符串,可选,枚举值:"open"、"closed"、"all",默认值 "open"),per_page(数字,可选,默认值 10,最大值 100)
- 参数:
create_issue:创建功能丰富的议题,支持上传图片、添加标签和指定受理人。- 参数:
owner(字符串,必填),repo(字符串,必填),title(字符串,必填),body(字符串,可选),image_path(字符串,可选,图片的完整本地路径),labels(字符串数组,可选),assignees(字符串数组,可选)
- 参数:
edit_issue:修改现有议题,包括标题、正文、状态、标签、受理人和图片上传。- 参数:
owner(字符串,可选),repo(字符串,可选),issue_number(整数,必填),title(字符串,可选),body(字符串,可选),state(字符串,可选,枚举值:"open"、"closed"),image_path(字符串,可选,图片的完整本地路径),labels(字符串数组,可选),assignees(字符串数组,可选)
- 参数:
get_issue_details:获取任意特定议题的详细信息。- 参数:
owner(字符串,可选),repo(字符串,可选),issue_number(整数,必填)
- 参数:
lock_issue:锁定议题以阻止后续评论,并可自定义锁定原因。- 参数:
owner(字符串,可选),repo(字符串,可选),issue_number(整数,必填),lock_reason(字符串,可选,枚举值:"off-topic"、"too heated"、"resolved"、"spam")
- 参数:
unlock_issue:解锁之前锁定的议题,以恢复讨论。- 参数:
owner(字符串,可选),repo(字符串,可选),issue_number(整数,必填)
- 参数:
add_assignees_to_issue:为议题添加一名或多名团队成员。- 参数:
owner(字符串,可选),repo(字符串,可选),issue_number(整数,必填),assignees(字符串数组,必填)
- 参数:
remove_assignees_from_issue:从议题中移除受理人,以便更好地管理任务。- 参数:
owner(字符串,可选),repo(字符串,可选),issue_number(整数,必填),assignees(字符串数组,必填)
- 参数:
Issue 评论管理工具
list_issue_comments:列出 issue 的所有评论,并支持按时间戳筛选。- 参数:
owner(字符串,可选)、repo(字符串,可选)、issue_number(整数,必需)、per_page(整数,可选,默认值为 30,最大值为 100)、since(字符串,可选,ISO 8601 日期时间格式)
- 参数:
create_issue_comment:在进行中的 issue 讨论中添加新评论。- 参数:
owner(字符串,可选)、repo(字符串,可选)、issue_number(整数,必需)、body(字符串,必需)
- 参数:
edit_issue_comment:修改现有评论,以进行更正或更新。- 参数:
owner(字符串,可选)、repo(字符串,可选)、comment_id(整数,必需)、body(字符串,必需)
- 参数:
delete_issue_comment:在内容管理需要时删除评论。- 参数:
owner(字符串,可选)、repo(字符串,可选)、comment_id(整数,必需)
- 参数:
Pull Request 管理工具
list_prs:列出 Pull Request,并支持按状态筛选和分页。- 参数:
owner(字符串,无默认值时必需)、repo(字符串,无默认值时必需)、state(字符串,可选,枚举值:"open"、"closed"、"all",默认值为 "open")、per_page(数字,可选,默认值为 10,最大值为 100)
- 参数:
分支与提交管理工具
list_branches:列出仓库中的所有分支,并提供保护状态和提交信息。- 参数:
owner(字符串,可选)、repo(字符串,可选)、protected_only(布尔值,可选,默认值为 false)、per_page(数字,可选,默认值为 30)
- 参数:
create_branch:从现有分支或提交创建新分支。- 参数:
owner(字符串,可选)、repo(字符串,可选)、branch_name(字符串,必需)、from_branch(字符串,可选,默认为仓库的默认分支)
- 参数:
list_commits:列出仓库中的提交,并提供详细信息和筛选选项。- 参数:
owner(字符串,可选)、repo(字符串,可选)、sha(字符串,可选,要从中列出提交的分支/标签/提交)、per_page(数字,可选,默认值为 20)、since(字符串,可选,ISO 8601 日期时间)、until(字符串,可选,ISO 8601 日期时间)、author(字符串,可选,GitHub 用户名或电子邮箱)
- 参数:
get_commit_details:获取特定提交的详细信息,包括已更改的文件。- 参数:
owner(字符串,可选)、repo(字符串,可选)、commit_sha(字符串,必需)
- 参数:
compare_commits:比较两个提交或分支以查看差异。- 参数:
owner(字符串,可选)、repo(字符串,可选)、base(字符串,必需,基准分支或提交 SHA)、head(字符串,必需,目标分支或提交 SHA)
- 参数:
用户与协作工具
get_user_info:获取任意 GitHub 用户或你自己的个人资料的详细信息。- 参数:
username(字符串,可选,默认为已验证身份的用户)
- 参数:
list_repo_collaborators:列出仓库协作者,并支持按权限筛选。- 参数:
owner(字符串,可选)、repo(字符串,可选)、affiliation(字符串,可选,枚举值:"outside"、"direct"、"all",默认值为 "all")、permission(字符串,可选,枚举值:"pull"、"triage"、"push"、"maintain"、"admin")、per_page(整数,可选,默认值为 30,最大值为 100)
- 参数:
标签和里程碑管理工具
list_repo_labels:列出仓库中的所有标签及其颜色和描述。- 参数:
owner(字符串,可选)、repo(字符串,可选)、per_page(整数,可选,默认值为 30,最大值为 100)
- 参数:
create_label:创建自定义标签,并设置颜色和描述,以便更好地整理问题。- 参数:
owner(字符串,可选)、repo(字符串,可选)、name(字符串,必填)、color(字符串,可选,不带 # 的十六进制颜色,默认值为 "f29513")、description(字符串,可选)
- 参数:
edit_label:修改现有标签的属性,包括名称、颜色和描述。- 参数:
owner(字符串,可选)、repo(字符串,可选)、current_name(字符串,必填)、name(字符串,可选)、color(字符串,可选,不带 # 的十六进制颜色)、description(字符串,可选)
- 参数:
delete_label:不再需要时,从仓库中移除标签。- 参数:
owner(字符串,可选)、repo(字符串,可选)、name(字符串,必填)
- 参数:
list_milestones:列出仓库里程碑,并可按状态筛选和排序。- 参数:
owner(字符串,可选)、repo(字符串,可选)、state(字符串,可选,枚举值:"open"、"closed"、"all",默认值为 "open")、sort(字符串,可选,枚举值:"due_on"、"completeness",默认值为 "due_on")、direction(字符串,可选,枚举值:"asc"、"desc",默认值为 "asc")、per_page(整数,可选,默认值为 30,最大值为 100)
- 参数:
create_milestone:创建带有截止日期的新里程碑,用于项目规划。- 参数:
owner(字符串,可选)、repo(字符串,可选)、title(字符串,必填)、state(字符串,可选,枚举值:"open"、"closed",默认值为 "open")、description(字符串,可选)、due_on(字符串,可选,ISO 8601 日期时间格式)
- 参数:
edit_milestone:更新里程碑详情,包括标题、描述、状态和截止日期。- 参数:
owner(字符串,可选)、repo(字符串,可选)、milestone_number(整数,必填)、title(字符串,可选)、state(字符串,可选,枚举值:"open"、"closed")、description(字符串,可选)、due_on(字符串,可选,ISO 8601 日期时间格式)
- 参数:
delete_milestone:不再需要时,从仓库中移除里程碑。- 参数:
owner(字符串,可选)、repo(字符串,可选)、milestone_number(整数,必填)
- 参数:
💡 使用示例和工作流
配置完成后,你可以让 MCP 客户端(例如 Claude)执行强大的 GitHub 操作:
仓库发现与管理
- “列出我的 GitHub 仓库,按创建日期排序,并仅显示私有仓库。”
- “将默认仓库设置为
octocat/Spoon-Knife,以便更轻松地开展工作流。” - “获取
microsoft/vscode仓库的详细信息。” - “显示
microsoft/vscode仓库develop分支中src/main.js文件的内容。” - “显示默认仓库
develop分支中src/main.js文件的内容。” (需要先设置默认仓库) - “列出
my-org/my-repo中拥有管理员权限的所有协作者。” - “搜索与 'tensorflow examples language:python' 匹配的仓库,并按星标数排序。”
高级问题管理
- “在
my-org/my-repo中创建一个问题,标题为 ‘Urgent: UI Bug’,内容为 ‘The login button is broken on mobile.’。将其分配给user1和user2,并添加bug标签。” - “创建一个标题为 ‘Feature Request’ 的问题,并添加
enhancement标签。”(需要设置默认仓库) - “将
/Users/me/screenshots/bug_report.png中的屏幕截图上传到 microsoft/vscode 的问题 #42。” - “将
/Users/me/screenshots/bug_report.png中的屏幕截图上传到默认仓库的问题 #42。”(需要设置默认仓库) - “编辑问题 #15:将标题改为 ‘Feature Request: Dark Mode’,添加
enhancement标签,并关闭该问题。” - “锁定问题 #23,原因设为 ‘resolved’,以阻止进一步讨论。”
- “获取问题 #7 的完整详情,包括所有元数据和当前状态。”
- “从问题 #12 中移除
old-assignee,并改为添加new-assignee。”
问题讨论管理
- “列出问题 #7 在过去一周的所有评论。”
- “在问题 #15 中添加评论:‘This looks great! Ready for merge.’”
- “将评论 ID 123456 修改为 ‘Updated: This needs more testing before merge.’”
- “从问题 #20 中删除评论 ID 789012。”
标签和里程碑管理
- “列出
my-org/my-repo中的所有标签,以查看当前的组织体系。” - “列出默认仓库中的所有标签,以查看当前的组织体系。”(需要设置默认仓库)
- “创建一个名为 ‘urgent’ 的新标签,颜色设为红色(#ff0000),描述为 ‘Requires immediate attention’。”
- “将 ‘bug’ 标签的颜色改为橙色(#FFA500),并更新描述。”
- “从仓库中删除过时的 ‘legacy’ 标签。”
- “列出
my-org/project-x中所有未关闭的里程碑,并按截止日期排序。” - “创建一个名为 ‘v2.0 Release’ 的里程碑,截止日期设为 ‘2025-12-31T23:59:59Z’,描述为 ‘Major version release’。”
- “编辑里程碑 #3,将标题改为 ‘Q2 Goals’,并延长截止日期。”
- “删除里程碑 #5,因为它与项目不再相关。”
拉取请求和协作
- “列出
microsoft/vscode中所有未关闭的拉取请求。” - “列出默认仓库中所有未关闭的拉取请求。”(需要设置默认仓库)
- “显示
my-org/project-x上个月已关闭的拉取请求。” - “获取我的 GitHub 用户个人资料信息。”
- “获取
github_username的用户个人资料详情。”
分支和提交管理
- “列出
my-org/my-repo中的所有分支,并显示其保护状态。” - “列出默认仓库中的所有分支,并显示其保护状态。”(需要设置默认仓库)
- “仅显示
my-org/secure-repo中受保护的分支。” - “从
develop分支创建一个名为feature/dark-mode的新功能分支。” - “列出
main分支上最近的 10 次提交。” - “显示
john-doe上周的所有提交。” - “获取提交
abc123def的详细信息,包括所有文件更改。” - “比较
main分支和feature/new-ui,查看两者的差异。” - “显示
v1.0.0和v2.0.0标签之间的提交历史。”
工作流自动化示例
- “将
my-org/main-project设为默认仓库,然后列出分配给我的所有未关闭问题。” - “创建一个标题为 ‘Login Error’ 的错误报告问题,上传
/path/to/error.png中的错误屏幕截图,将其分配给dev-team,并添加bug和high-priority标签。” - “对于问题 #50:添加负责人
reviewer1,以 ‘resolved’ 为原因锁定问题,并添加最后一条评论 ‘Issue resolved in PR #51’。”
🔧 故障排除
认证问题
-
令牌问题:
- 仔细检查 MCP 客户端配置中的
GH_TOKEN值是否正确,且没有拼写错误 - 确认令牌尚未过期或被撤销
- 使用 curl 验证令牌是否有效:
这应该会返回你的 GitHub 用户信息。export TEMP_TOKEN="ghp_YOUR_TOKEN_TO_TEST" curl -H "Authorization: token $TEMP_TOKEN" https://api.github.com/user unset TEMP_TOKEN
- 仔细检查 MCP 客户端配置中的
-
配置问题:
- 确认
GH_TOKEN已正确放在 MCP 客户端服务器配置的env对象中 - 确认
server.cjs的路径是正确的绝对路径 - 检查 Node.js 版本是否为 18 或更高版本:
node --version - 默认仓库:如果设置了
GH_DEFAULT_OWNER和GH_DEFAULT_REPO环境变量,请确认它们正确且仓库存在
- 确认
-
权限问题:
- 确认令牌具有所需的权限范围:
repo或public_repo(用于访问仓库)user(用于获取用户信息)read:org(如有需要,用于访问组织)
- 默认仓库访问权限:如果使用默认仓库,请确认令牌有权访问该特定仓库
- 确认令牌具有所需的权限范围:
默认仓库配置问题
- 环境变量未生效:仔细检查 MCP 客户端配置中的
GH_DEFAULT_OWNER和GH_DEFAULT_REPO拼写是否正确 - 命令行参数:使用
--default-owner和--default-repo标志时,确保语法正确 - 工具调用问题:在
set_default_repo工具中使用准确的仓库名称,格式为owner/repo - 覆盖行为:请记住,运行时工具调用可以覆盖环境变量,而命令行参数可以同时覆盖两者
性能与速率限制
- GitHub API 速率限制:已认证用户每小时可发出 5,000 次请求
- 如果达到限制,请等待限制重置,或使用其他令牌
- 服务内置了速率限制错误处理机制
常见设置问题
- 路径问题:确认 Claude Desktop 配置中的绝对路径正确
- Node.js 版本:确认使用的是 Node.js 18 或更高版本
- 文件权限:确保
server.cjs可执行:chmod +x server.cjs
图片上传故障排除
- 确认指定的本地路径中存在图片文件
- 支持的格式:PNG、JPG、JPEG、GIF、WebP
- 检查文件权限和可访问性
- 确认文件未损坏且文件过大(GitHub 有大小限制)
🚦 API 速率限制与性能
- 标准速率限制:已认证用户每小时可向 GitHub API 发出 5,000 次请求
- 内置处理机制:服务对速率限制响应进行了全面的错误处理
- 性能优化:与 CLI 工具相比,直接发送 HTTP 请求可缩短响应时间
- 缓存建议:可考虑为频繁访问的数据实施缓存策略
🔒 安全最佳实践
- 令牌安全:切勿将
GH_TOKEN提交到版本控制系统或公开分享 - 最小权限:使用的令牌仅授予当前用途所需的最小权限范围
- 环境变量:始终通过 MCP 客户端配置中的
env块提供令牌 - 令牌轮换:定期轮换 GitHub 令牌,以增强安全性
- 安全存储:使用系统的凭据管理功能安全地存储令牌
🔄 开发与贡献
本地开发环境设置
# Clone and setup
mkdir github-repos-manager-mcp
cd github-repos-manager-mcp
# Add the server files
npm install
chmod +x server.cjs
# For development testing with nodemon
npm run dev
使用 MCP 客户端进行测试
推荐的做法是配置 MCP 客户端(例如 Claude Desktop),使其指向开发版本,并正确配置 GH_TOKEN。修改 server.cjs 后,需要重启服务器连接。
直接测试脚本
# Temporarily set token for quick verification
export GH_TOKEN="ghp_YOUR_DEVELOPMENT_TOKEN"
node server.cjs
unset GH_TOKEN # Always clean up after testing
📜 许可证
MIT 许可证 - 欢迎使用、修改和分发此 MCP 服务。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
