返回市场
GitHub仓库管理器-MCP

GitHub仓库管理器-MCP

作者:kurdin13 星标更新:2025-09-26

项目介绍

技术文档摘要

github-svgrepo-logo GitHub Repos Manager MCP Server

基于令牌的GitHub自动化管理。无需Docker以获得最佳性能,灵活配置实现细粒度控制,直接API集成89种工具。

这是一个全面的模型上下文协议(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访问
  • 智能错误处理 - 全面的错误报告和恢复

预备条件

最低要求 - 这就是这么简单!

  1. Node.js(版本18或更高) - 就这些!
  2. GitHub个人访问令牌(PAT) - 唯一需要的配置
    • 转到GitHub → 设置 → 开发者设置 → 个人访问令牌 → 经典令牌或精细令牌。
    • 生成具有以下范围的新令牌:
      • repo(完全控制私人存储库) - 推荐用于完整功能。
      • user:readuser:email(读取用户资料数据)。
      • read:org(如果需要访问组织信息)。
    • 重要:安全地存储此令牌。您需要将其直接提供给您的MCP客户端的服务器配置(见下文步骤3)。

快速设置

使用npx(最简单 - 无需安装!)

确保已安装Node.js,然后使用npx直接运行服务器 检查是否已将GitHub令牌导出为名为GH_TOKEN的环境变量或包含在您的MCP客户端配置中。

您可以直接运行此服务器而无需克隆或安装:

# 使用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",
      1. "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个人访问令牌。

3. 测试服务器

一旦MCP客户端配置了正确的server.cjs路径和您的GH_TOKEN,当客户端尝试使用其工具之一时,服务器应该会自动启动。

您也可以直接测试服务器脚本以进行基本身份验证,但这需要暂时在您的shell中设置GH_TOKEN环境变量以进行此特定测试

# 仅用于直接脚本测试(正常操作使用MCP客户端配置)
export GH_TOKEN="ghp_YOUR_TEMPORARY_TEST_TOKEN"
node server.cjs
unset GH_TOKEN # 测试后重要:取消设置

如果成功,您应该看到“GitHub API身份验证成功”和“GitHub Repos Manager MCP Server正在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(路径可能有所不同)

⚙️ 配置选项

默认存储库设置

您可以设置默认存储库以简化工作流程并避免在每个命令中指定ownerrepo。有三种方式可以配置此设置:

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

配置优先级(从高到低)

  1. 命令行参数(--default-owner--default-repo
  2. 环境变量(GH_DEFAULT_OWNERGH_DEFAULT_REPO
  3. 运行时工具调用(set_default_repo

默认存储库的好处

  • 消除了在每个命令中指定ownerrepo的需求
  • 当主要与一个存储库一起工作时,简化了工作流程
  • 可以在会话期间随时使用set_default_repo工具更改
  • 可选 - 所有工具即使未设置默认存储库也能工作

一旦设置了默认存储库,您可以省略命令中的ownerrepo参数:

  • 代替:“列出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_TOOLSGH_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