GitHub Enterprise MCP Server

MIT License
2
  • Apple
  • Linux

Integrations

  • Enables Git operations like creating branches, pushing changes, managing commits, and preserving Git history when performing file operations through the GitHub API.

  • Provides comprehensive GitHub API access, enabling file and repository management, code/issues/PRs/users search, branch creation, issue tracking, pull request workflows, and commit history retrieval through the GitHub platform.

GitHub Enterprise MCP 服务器

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

特征

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

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. 复制生成的token

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": [ "/absolute/path/to/github-enterprise-mcp/dist/index.js" ], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "your-personal-access-token", "GITHUB_API_URL": "https://api.github.com" // For GitHub.com // For GitHub Enterprise, use your instance URL, e.g., "https://github.yourdomain.com/api/v3" }, "disabled": false, "autoApprove": [] } } }

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

对于克劳德桌面应用程序
  1. 找到 Claude Desktop 配置文件:
    • 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": [ "/absolute/path/to/github-enterprise-mcp/dist/index.js" ], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "your-personal-access-token", "GITHUB_API_URL": "https://api.github.com" // For GitHub.com // For GitHub Enterprise, use your instance URL, e.g., "https://github.yourdomain.com/api/v3" }, "disabled": false, "autoApprove": [] } } }

5.重启Cline

配置 MCP 设置后,重新启动 Cline(VS Code 或 Claude Desktop)以应用更改。

确认

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

Can you search for repositories with the keyword "react" using the GitHub Enterprise MCP server?

Cline 应该能够使用search_repositories工具来搜索带有关键字“react”的存储库。

与 Cline 的互动装置

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

I want you to help me install the GitHub Enterprise MCP server. Here's what I need you to do: 1. First, explain what the GitHub Enterprise MCP server is and what capabilities it will give you. 2. Guide me through the installation process: - Help me clone the repository (if I haven't already) - Help me install dependencies and build the project - Guide me through creating a GitHub Personal Access Token if I don't have one - Help me configure the MCP settings in either VS Code or Claude Desktop - Verify the installation is working 3. Show me some examples of how I can use the GitHub Enterprise MCP server once it's installed. Please start by explaining what the GitHub Enterprise MCP server is and what it will allow you to do for me.

示例用法

安装完成后,你可以让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": "your-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 (可选数字):每页结果数(最多 100 条)
    • 返回:存储库搜索结果
  4. create_repository
    • 创建一个新的 GitHub 存储库
    • 输入:
      • name (字符串):存储库名称
      • description (可选字符串):存储库描述
      • private (可选布尔值):repo 是否应为私有
      • 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 (字符串):PR 标题
      • body (可选字符串):PR 描述
      • head (字符串):包含更改的分支
      • base (字符串):要合并到的分支
      • draft (可选布尔值):创建为 PR 草稿
      • maintainer_can_modify (可选布尔值):允许维护者编辑
    • 返回:创建的拉取请求详细信息
  8. fork_repository
    • 派生一个存储库
    • 输入:
      • owner (字符串):存储库所有者
      • repo (字符串):存储库名称
      • organization (可选字符串):要分叉的组织
    • 返回:分叉存储库详细信息
  9. create_branch
    • 创建新分支
    • 输入:
      • owner (字符串):存储库所有者
      • repo (字符串):存储库名称
      • branch (字符串):新分支的名称
      • from_branch (可选字符串):源分支(默认为 repo default)
    • 返回:创建的分支引用
  10. list_issues
  • 列出并过滤存储库问题
  • 输入:
    • owner (字符串):存储库所有者
    • repo (字符串):存储库名称
    • state (可选字符串):按状态过滤('打开','关闭','全部')
    • labels (可选字符串[]):按标签过滤
    • sort (可选字符串):按('创建','更新','评论')排序
    • direction (可选字符串):排序方向('asc','desc')
    • since (可选字符串):按日期过滤(ISO 8601 时间戳)
    • page (可选数字):页码
    • per_page (可选数字):每页结果数
  • 返回:问题详细信息数组
  1. update_issue
  • 更新现有问题
  • 输入:
    • owner (字符串):存储库所有者
    • repo (字符串):存储库名称
    • issue_number (数字):要更新的问题编号
    • title (可选字符串):新标题
    • body (可选字符串):新的描述
    • state (可选字符串):新状态(“打开”或“关闭”)
    • labels (可选字符串[]):新标签
    • assignees (可选字符串[]):新受让人
    • milestone (可选数字):新的里程碑编号
  • 返回:更新的问题详情
  1. add_issue_comment
  • 向问题添加评论
  • 输入:
    • owner (字符串):存储库所有者
    • repo (字符串):存储库名称
    • issue_number (数字):要评论的问题编号
    • body (字符串):评论文本
  • 返回:创建的评论详情
  1. search_code
  • 在 GitHub 存储库中搜索代码
  • 输入:
    • q (字符串):使用 GitHub 代码搜索语法的搜索查询
    • sort (可选字符串):排序字段(仅限“索引”)
    • order (可选字符串):排序顺序('asc' 或 'desc')
    • per_page (可选数字):每页结果数(最多 100 条)
    • page (可选数字):页码
  • 返回:带有存储库上下文的代码搜索结果
  1. search_issues
  • 搜索问题和拉取请求
  • 输入:
    • q (字符串):使用 GitHub 问题搜索语法的搜索查询
    • sort (可选字符串):排序字段(评论、反应、创建等)
    • order (可选字符串):排序顺序('asc' 或 'desc')
    • per_page (可选数字):每页结果数(最多 100 条)
    • page (可选数字):页码
  • 返回:问题和拉取请求搜索结果
  1. search_users
  • 搜索 GitHub 用户
  • 输入:
    • q (字符串):使用 GitHub 用户搜索语法的搜索查询
    • sort (可选字符串):排序字段(关注者、存储库、加入)
    • order (可选字符串):排序顺序('asc' 或 'desc')
    • per_page (可选数字):每页结果数(最多 100 条)
    • page (可选数字):页码
  • 返回:用户搜索结果
  1. list_commits
  • 获取存储库中分支的提交
  • 输入:
    • owner (字符串):存储库所有者
    • repo (字符串):存储库名称
    • page (可选字符串):页码
    • per_page (可选字符串):每页记录数
    • sha (可选字符串):分支名称
  • 返回:提交列表
  1. get_issue
  • 获取存储库中问题的内容
  • 输入:
    • owner (字符串):存储库所有者
    • repo (字符串):存储库名称
    • issue_number (数字):要检索的问题编号
  • 返回:Github Issue 对象和详细信息
  1. get_pull_request
  • 获取特定拉取请求的详细信息
  • 输入:
    • owner (字符串):存储库所有者
    • repo (字符串):存储库名称
    • pull_number (数字):拉取请求编号
  • 返回:拉取请求详细信息,包括差异和审核状态
  1. list_pull_requests
  • 列出并过滤存储库拉取请求
  • 输入:
    • owner (字符串):存储库所有者
    • repo (字符串):存储库名称
    • state (可选字符串):按状态过滤('打开','关闭','全部')
    • head (可选字符串):按主管用户/组织和分支进行过滤
    • base (可选字符串):按基本分支过滤
    • sort (可选字符串):按('创建','更新','受欢迎程度','长期运行')排序
    • 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 (可选字符串):合并方法('merge','squash','rebase')
  • 返回:合并结果详情
  1. get_pull_request_files
  • 获取拉取请求中更改的文件列表
  • 输入:
    • owner (字符串):存储库所有者
    • repo (字符串):存储库名称
    • pull_number (数字):拉取请求编号
  • 返回:包含补丁和状态详细信息的已更改文件数组
  1. get_pull_request_status
  • 获取拉取请求所有状态检查的综合状态
  • 输入:
    • owner (字符串):存储库所有者
    • repo (字符串):存储库名称
    • pull_number (数字):拉取请求编号
  • 返回:综合状态检查结果和个人检查详情
  1. update_pull_request_branch
  • 使用基础分支的最新更改来更新拉取请求分支(相当于 GitHub 的“更新分支”按钮)
  • 输入:
    • owner (字符串):存储库所有者
    • repo (字符串):存储库名称
    • pull_number (数字):拉取请求编号
    • expected_head_sha (可选字符串):拉取请求的 HEAD ref 的预期 SHA
  • 返回:分支更新时的成功消息
  1. get_pull_request_comments
  • 获取拉取请求的审核意见
  • 输入:
    • owner (字符串):存储库所有者
    • repo (字符串):存储库名称
    • pull_number (数字):拉取请求编号
  • 返回:拉取请求审核评论数组,其中包含评论文本、作者和差异中的位置等详细信息
  1. get_pull_request_reviews
  • 获取拉取请求的评论
  • 输入:
    • owner (字符串):存储库所有者
    • repo (字符串):存储库名称
    • pull_number (数字):拉取请求编号
  • 返回:拉取请求评审数组,其中包含评审状态(APPROVED、CHANGES_REQUESTED 等)、评审人和评审主体等详细信息

搜索查询语法

代码搜索

  • language:javascript :按编程语言搜索
  • repo:owner/name :在特定存储库中搜索
  • path:app/src :在特定路径中搜索
  • extension:js :按文件扩展名搜索
  • 例如: q: "import express" language:typescript path:src/

问题搜索

  • is:issueis:pr :按类型过滤
  • is:openis:closed :按状态过滤
  • label:bug :按标签搜索
  • author:username :按作者搜索
  • 例如: q: "memory leak" is:issue is:open label:bug

用户搜索

  • type:usertype:org :按帐户类型过滤
  • followers:>1000 :按关注者过滤
  • location:London :按地点搜索
  • 例如: q: "fullstack developer" location:London followers:>100

有关详细的搜索语法,请参阅GitHub 的搜索文档

设置

个人访问令牌

创建具有适当权限的 GitHub 个人访问令牌

  • 转到个人访问令牌(在 GitHub 设置 > 开发人员设置中)
  • 选择您希望此令牌可以访问的存储库(公共、全部或选择)
  • 创建具有repo范围的令牌(“完全控制私有存储库”)
    • 或者,如果仅使用公共存储库,则仅选择public_repo范围
  • 复制生成的token

与 Claude Desktop 一起使用

要将其与 Claude Desktop 一起使用,请将以下内容添加到您的claude_desktop_config.json中:

{ "mcpServers": { "github": { "command": "node", "args": [ "/path/to/github-enterprise-mcp/dist/index.js" ], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>" } } } }

建造

# Install dependencies npm install # Build the project npm run build # Start the server npm start

执照

此 MCP 服务器采用 MIT 许可证。这意味着您可以自由使用、修改和分发该软件,但须遵守 MIT 许可证的条款和条件。更多详情,请参阅项目仓库中的 LICENSE 文件。

-
security - not tested
A
license - permissive license
-
quality - not tested

通过 GitHub API 实现与 GitHub 仓库的交互,允许通过自然语言命令进行文件操作、仓库管理、问题跟踪和代码搜索。

  1. Features
    1. Cline Installation Guide
      1. Prerequisites
      2. Installation Steps
      3. Verification
      4. Interactive Installation with Cline
      5. Example Usage
      6. Troubleshooting
      7. Additional Configuration Options
    2. Tools
      1. Search Query Syntax
        1. Code Search
        2. Issues Search
        3. Users Search
      2. Setup
        1. Personal Access Token
        2. Usage with Claude Desktop
      3. Build
        1. License
          ID: jnoaw00dv3