返回市场
github企业版-mcp

github企业版-mcp

作者:piyushgIITian2 星标更新:2025-03-31

项目介绍

技术文档摘要

GitHub Enterprise MCP 服务器

用于 GitHub API 的 MCP 服务器,支持文件操作、仓库管理、搜索功能等。

功能

  • 自动分支创建:在创建或更新文件或推送更改时,如果不存在,则会自动创建分支
  • 全面错误处理:常见问题的清晰错误消息
  • 保留 Git 历史记录:操作保持正确的 Git 历史记录,无需强制推送
  • 批量操作:支持单文件和多文件操作
  • 高级搜索:支持代码、问题/拉取请求和用户的搜索

Cline 安装指南

本指南将帮助您安装并配置 Cline 中的 GitHub Enterprise MCP 服务器,使您能够直接通过 Cline 使用 GitHub API 功能。

先决条件

  1. 系统上已安装 Node.js
  2. 具有适当权限的 GitHub 个人访问令牌
  3. 系统上已安装 Cline

安装步骤

1. 克隆仓库

git clone https://github.com/yourusername/github-enterprise-mcp.git
cd github-enterprise-mcp

2. 安装依赖项并构建

npm install
npm run build

这将创建一个包含编译后的 JavaScript 文件的 dist 目录。

3. 创建 GitHub 个人访问令牌

  1. 转到 GitHub 个人访问令牌(在 GitHub 设置 > 开发者设置中)
  2. 单击“生成新令牌”
  3. 选择此令牌应具有访问权限的存储库(公共、所有或选择)
  4. 创建具有 repo 范围(“私有存储库的完全控制”)的令牌
    • 如果仅与公共存储库一起工作,可以选择仅 public_repo 范围
  5. 复制生成的令牌

4. 配置 Cline MCP 设置

对于 Cline VS Code 扩展
  1. 打开 VS Code

  2. 在以下位置找到 Cline MCP 设置文件:

    • Windows: %APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json
    • macOS: ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
    • Linux: ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
  3. 将 GitHub Enterprise MCP 服务器配置添加到 mcpServers 对象:

{
  "mcpServers": {
    "github-enterprise": {
      "command": "node",
      "args": [
        "/绝对路径/github-enterprise-mcp/dist/index.js"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "您的个人访问令牌",
        "GITHUB_API_URL": "https://api.github.com" // 对于 GitHub.com
        // 对于 GitHub Enterprise,请使用您的实例 URL,例如 "https://github.yourdomain.com/api/v3"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

/绝对路径/github-enterprise-mcp/dist/index.js 替换为您构建的 index.js 文件的绝对路径。

对于 Claude 桌面应用
  1. 在以下位置找到 Claude 桌面配置文件:

    • Windows: %APPDATA%\Claude\claude_desktop_config.json
    • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
    • Linux: ~/.config/Claude/claude_desktop_config.json
  2. 将 GitHub Enterprise MCP 服务器配置添加到 mcpServers 对象:

{
  "mcpServers": {
    "github-enterprise": {
      "command": "node",
      "args": [
        "/绝对路径/github-enterprise-mcp/dist/index.js"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "您的个人访问令牌",
        "GITHUB_API_URL": "https://api.github.com" // 对于 GitHub.com
        // 对于 GitHub Enterprise,请使用您的实例 URL,例如 "https://github.yourdomain.com/api/v3"
      },
      "disabled": false,
      "autoApprove": []
    }
  }
}

5. 重启 Cline

配置好 MCP 设置后,重启 Cline(VS Code 或 Claude 桌面应用)以应用更改。

验证

要验证 GitHub Enterprise MCP 服务器是否正确安装和配置,您可以要求 Cline 使用其中一个 GitHub 工具:

你可以使用 GitHub Enterprise MCP 服务器搜索带有关键词 "react" 的仓库吗?

Cline 应该能够使用 search_repositories 工具来搜索带有关键词 "react" 的仓库。

交互式安装与 Cline

为了获得交互式的安装体验,将以下文本复制粘贴到 Cline 中,它将引导您完成安装过程:

我想让你帮我安装 GitHub Enterprise MCP 服务器。这是你需要做的事情:

1. 首先,解释什么是 GitHub Enterprise MCP 服务器以及它将赋予你的能力。

2. 引导我完成安装过程:
   - 帮助我克隆仓库(如果我还没有这样做)
   - 帮助我安装依赖项并构建项目
   - 如果我没有,指导我创建一个 GitHub 个人访问令牌
   - 帮助我在 VS Code 或 Claude 桌面中配置 MCP 设置
   - 验证安装是否正常工作

3. 展示一些例子,说明如何在安装后使用 GitHub Enterprise MCP 服务器。

请从解释什么是 GitHub Enterprise MCP 服务器以及它将允许你为我做什么开始。

示例用法

安装后,您可以要求 Cline 直接执行 GitHub 操作,例如:

  • “创建名为 'my-project' 的新仓库”
  • “搜索与机器学习相关的仓库”
  • “从我的功能分支到主分支创建拉取请求”
  • “获取仓库 X 中 README.md 文件的内容”
  • “列出我的仓库中的开放问题”

故障排除

如果您遇到 GitHub Enterprise MCP 服务器的问题:

  1. 检查 MCP 设置中的 index.js 文件路径是否正确
  2. 验证您的 GitHub 个人访问令牌是否具有必要的权限
  3. 确保 GitHub API URL 对您的 GitHub 实例是正确的
  4. 检查日志中的任何错误消息

额外配置选项

GitHub API 版本

您可以通过添加 GITHUB_API_VERSION 环境变量来指定 GitHub API 版本:

"env": {
  "GITHUB_PERSONAL_ACCESS_TOKEN": "您的个人访问令牌",
  "GITHUB_API_URL": "https://api.github.com",
  "GITHUB_API_VERSION": "2022-11-28"
}

企业身份验证

对于使用不同身份验证方法的 GitHub Enterprise 实例,您可能需要提供额外的配置。参阅 Octokit 文档 获取更多信息。

工具

  1. create_or_update_file

    • 在仓库中创建或更新单个文件
    • 输入:
      • owner (字符串):仓库拥有者(用户名或组织)
      • repo (字符串):仓库名称
      • path (字符串):创建或更新文件的路径
      • content (字符串):文件内容
      • message (字符串):提交信息
      • branch (字符串):创建或更新文件的分支
      • sha (可选字符串):被替换文件的 SHA(用于更新)
    • 返回:文件内容和提交详情
  2. push_files

    • 在单个提交中推送多个文件
    • 输入:
      • owner (字符串):仓库拥有者
      • repo (字符串):仓库名称
      • branch (字符串):推送至的分支
      • files (数组):要推送的文件,每个文件都有 pathcontent
      • message (字符串):提交信息
    • 返回:更新的分支引用
  3. search_repositories

    • 搜索 GitHub 仓库
    • 输入:
      • query (字符串):搜索查询
      • page (可选数字):分页的页面编号
      • perPage (可选数字):每页的结果数(最大 1 00)
    • 返回:仓库搜索结果
  4. create_repository

    • 创建新的 GitHub 仓库
    • 输入:
      • name (字符串):仓库名称
      • description (可选字符串):仓库描述
      • private (可选布尔值):仓库是否为私有
      • autoInit (可选布尔值):初始化时带有 README
    • 返回:创建的仓库详情
  5. get_file_contents

    • 获取文件或目录的内容
    • 输入:
      • owner (字符串):仓库拥有者
      • repo (字符串):仓库名称
      • path (字符串):文件/目录的路径
      • branch (可选字符串):获取内容的分支
    • 返回:文件/目录的内容
  6. create_issue

    • 创建新的问题
    • 输入:
      • owner (字符串):仓库拥有者
      • repo (字符串):仓库名称
      • title (字符串):问题标题
      • body (可选字符串):问题描述
      • assignees (可选字符串数组):分配给的用户名
      • labels (可选字符串数组):添加的标签
      • milestone (可选数字):里程碑编号
    • 返回:创建的问题详情
  7. create_pull_request

    • 创建新的拉取请求
    • 输入:
      • owner (字符串):仓库拥有者
      • repo (字符串):仓库名称
      • title (字符串):拉取请求标题
      • body (可选字符串):拉取请求描述
      • head (字符串):包含更改的分支
      • base (字符串):合并到的分支
      • draft (可选布尔值):作为草稿拉取请求创建
      • maintainer_can_modify (可选布尔值):允许维护者编辑
    • 返回:创建的拉取请求详情
  8. fork_repository

    • 分叉仓库
    • 输入:
      • owner (字符串):仓库拥有者
      • repo (字符串):仓库名称
      • organization (可选字符串):分叉到的组织
    • 返回:分叉的仓库详情
  9. create_branch

    • 创建新的分支
    • 输入:
      • owner (字符串):仓库拥有者
      • repo (字符串):仓库名称
      • branch (字符串):新分支的名称
      • from_branch (可选字符串):源分支(默认为仓库默认)
    • 返回:创建的分支引用
  10. list_issues

    • 列出并过滤仓库问题
    • 输入:
      • owner (字符串):仓库拥有者
      • repo (字符串):仓库名称
      • state (可选字符串):按状态过滤('open','closed','all')
      • labels (可选字符串数组):按标签过滤
      • sort (可选字符串):排序字段('created','updated','comments')
      • direction (可选字符串):排序方向('asc','desc')
      • since (可选字符串):按日期过滤(ISO 8601 时间戳)
      • page (可选数字):页面编号
      • per_page (可选数字):每页的结果数
    • 返回:问题详情数组
  11. update_issue

    • 更新现有问题
    • 输入:
      • owner (字符串):仓库拥有者
      • repo (字符串):仓库名称
      • issue_number (数字):要更新的问题编号
      • title (可选字符串):新标题
      • body (可选字符串):新描述
      • state (可选字符串):新状态('open' 或 'closed')
      • labels (可选字符串数组):新标签
      • assignees (可选字符串数组):新分配人
      • milestone (可选数字):新里程碑编号
    • 返回:更新的问题详情
  12. add_issue_comment

    • 向问题添加评论
    • 输入:
      • owner (字符串):仓库拥有者
      • repo (字符串):仓库名称
      • issue_number (数字):要评论的问题编号
      • body (字符串):评论文本
    • 返回:创建的评论详情
  13. search_code

    • 在 GitHub 仓库中搜索代码
    • 输入:
      • q (字符串):使用 GitHub 代码搜索语法的搜索查询
      • sort (可选字符串):排序字段(只有 'indexed')
      • order (可选字符串):排序顺序('asc' 或 'desc')
      • per_page (可选数字):每页的结果数(最大 100)
      • page (可选数字):页面编号
    • 返回:带有仓库上下文的代码搜索结果
  14. search_issues

    • 搜索问题和拉取请求
    • 输入:
      • q (字符串):使用 GitHub 问题搜索语法的搜索查询
      • sort (可选字符串):排序字段(评论、反应、创建等)
      • order (可选字符串):排序顺序('asc' 或 'desc')
      • per_page (可选数字):每页的结果数(最大 100)
      • page (可选数字):页面编号
    • 返回:问题和拉取请求搜索结果
  15. search_users

    • 搜索 GitHub 用户
    • 输入:
      • q (字符串):使用 GitHub 用户搜索语法的搜索查询
      • sort (可选字符串):排序字段(关注者、仓库、加入)
      • order (可选字符串):排序顺序('asc' 或 'desc')
      • per_page (可选数字):每页的结果数(最大 100)
      • page (可选数字):页面编号
    • 返回:用户搜索结果
  16. list_commits

  • 获取仓库中分支的提交列表
  • 输入:
    • owner (字符串):仓库拥有者
    • repo (字符串):仓库名称
    • page (可选字符串):页面编号
    • per_page (可选字符串):每页的记录数
    • sha (可选字符串):分支名称
  • 返回:提交列表
  1. get_issue
  • 获取仓库内问题的内容
  • 输入:
    • owner (字符串):仓库拥有者
    • repo (字符串):仓库名称
    • issue_number (数字):要检索的问题编号
  • 返回:GitHub 问题对象及详情
  1. get_pull_request
  • 获取特定拉取请求的详细信息
  • 输入:
    • owner (字符串):仓库拥有者
    • repo (字符串):仓库名称
    • pull_number (数字):拉取请求编号
  • 返回:包括差异和审查状态的拉取请求详细信息
  1. list_pull_requests
  • 列出并过滤仓库拉取请求
  • 输入:
    • owner (字符串):仓库拥有者
    • repo (字符串):仓库名称
    • state (可选字符串):按状态过滤('open','closed','all')
    • head (可选字符串):按头用户/组织和分支过滤
    • base (可选字符串):按基础分支过滤
    • sort (可选字符串):排序字段('created','updated','popularity','long-running')
    • direction (可选字符串):排序方向('asc','desc')
    • per_page (可选数字):每页的结果数(最大 100)
    • page (可选数字):页面编号
  • 返回:拉取请求详细信息数组
  1. create_pull_request_review
  • 在拉取请求上创建审查
  • 输入:
    • owner (字符串):仓库拥有者
    • repo (字符串):仓库名称
    • pull_number (数字):拉取请求编号
    • body (字符串):审查评论文本
    • event (字符串):审查动作('APPROVE','REQUEST_CHANGES','COMMENT')
    • commit_id (可选字符串):要审查的提交的 SHA
    • comments (可选数组):行特定评论,每个评论都有:
      • path (字符串):文件路径
      • position (数字):差异中的行位置
      • body (字符串):评论文本
  • 返回:创建的审查详情
  1. merge_pull_request
  • 合并拉取请求
  • 输入:
    • owner (字符串):仓库拥有者
    • repo (字符串):仓库名称
    • pull_number (数字):拉取请求编号
    • commit_title (可选字符串):合并提交的标题
    • commit_message (可选字符串):合并提交的额外细节
    • merge_method (可选字符串):