关于 GitHub Enterprise MCP Server
GitHub Enterprise MCP Server 将 GitHub API 操作提供给 Cline 等 MCP 客户端,适用于需要管理仓库、文件和议题的开发者。它涵盖代码、仓库、用户及议题和 PR 搜索,并支持批量文件提交。
主要功能
- 01创建和更新仓库文件
- 02单次提交推送多个文件
- 03创建仓库、分支和 PR
- 04管理议题及评论
- 05搜索代码、仓库、议题和用户
适用场景
- 01在仓库中创建或更新文件
- 02批量提交多个文件变更
- 03搜索代码或 GitHub 议题
- 04创建 PR 并处理仓库议题
MCP 相关
该 MCP 服务通过工具向 MCP 客户端开放 GitHub API 能力,包括仓库和文件操作、搜索、议题及 PR 管理。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
GitHub Enterprise MCP 服务
用于 GitHub API 的 MCP 服务,支持文件操作、仓库管理、搜索功能等。
功能
- 自动创建分支:创建或更新文件,或推送更改时,如果分支不存在,则自动创建
- 全面的错误处理:针对常见问题提供清晰的错误消息
- 保留 Git 历史记录:操作会妥善保留 Git 历史记录,不会强制推送
- 批量操作:支持单文件和多文件操作
- 高级搜索:支持搜索代码、问题/PR 和用户
Cline 安装指南
本指南将帮助你在 Cline 中安装和配置 GitHub Enterprise MCP 服务,让你能够直接通过 Cline 使用 GitHub API 功能。
前置条件
- 系统已安装 Node.js
- 拥有权限适当的 GitHub 个人访问令牌
- 系统已安装 Cline
安装步骤
1. 克隆仓库
git clone https://github.com/yourusername/github-enterprise-mcp.git
cd github-enterprise-mcp
2. 安装依赖项并构建
npm install
npm run build
这会创建一个 dist 目录,其中包含编译后的 JavaScript 文件。
3. 创建 GitHub 个人访问令牌
- 前往 GitHub 个人访问令牌(位于 GitHub 设置 > 开发者设置)
- 点击“生成新令牌”
- 选择此令牌可访问的仓库(公开、全部或选择)
- 创建具有
repo范围的令牌(“完全控制私有仓库”)- 或者,如果只使用公开仓库,则仅选择
public_repo范围
- 或者,如果只使用公开仓库,则仅选择
- 复制生成的令牌
4. 配置 Cline MCP 设置
适用于 Cline VS Code 扩展
-
打开 VS Code
-
找到 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
- Windows:
-
在
mcpServers对象中添加 GitHub Enterprise MCP 服务配置:
{
"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 文件的绝对路径。
适用于 Claude 桌面应用
-
找到 Claude 桌面应用配置文件:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
- Windows:
-
在
mcpServers对象中添加 GitHub Enterprise MCP 服务配置:
{
"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’ 的新仓库”
- “搜索与机器学习相关的仓库”
- “创建一个从我的功能分支到 main 的拉取请求”
- “获取仓库 X 中 README.md 文件的内容”
- “列出我仓库中尚未关闭的问题”
故障排查
如果您在使用 GitHub Enterprise MCP 服务时遇到问题:
- 检查 MCP 设置中的 index.js 文件路径是否正确
- 确认您的 GitHub Personal Access Token 具有必要的权限
- 确保 GitHub API URL 与您的 GitHub 实例相符
- 检查日志中是否有错误消息
其他配置选项
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"
}
Enterprise 身份验证
对于使用不同身份验证方法的 GitHub Enterprise 实例,您可能需要提供额外的配置。更多信息请参阅 Octokit 文档。
工具
-
create_or_update_file- 在仓库中创建或更新单个文件
- 输入:
owner(string):仓库所有者(用户名或组织)repo(string):仓库名称path(string):创建或更新文件的路径content(string):文件内容message(string):提交消息branch(string):要在其中创建或更新文件的分支sha(可选 string):要替换的文件的 SHA(用于更新)
- 返回:文件内容和提交详情
-
push_files- 在单次提交中推送多个文件
- 输入:
owner(string):仓库所有者repo(string):仓库名称branch(string):要推送到的分支files(array):要推送的文件,每个文件包含path和contentmessage(string):提交消息
- 返回:更新后的分支引用
-
search_repositories- 搜索 GitHub 仓库
- 输入:
query(string):搜索查询page(可选 number):分页页码perPage(可选 number):每页结果数(最多 100)
- 返回:仓库搜索结果
-
create_repository- 创建新的 GitHub 仓库
- 输入:
name(string):仓库名称description(可选 string):仓库描述private(可选 boolean):是否将仓库设为私有autoInit(可选 boolean):使用 README 初始化
- 返回:已创建的仓库详情
-
get_file_contents- 获取文件或目录的内容
- 输入:
owner(string):仓库所有者repo(string):仓库名称path(string):文件或目录的路径branch(可选 string):要从中获取内容的分支
- 返回:文件或目录内容
-
create_issue- 创建新的 issue
- 输入:
owner(string):仓库所有者repo(string):仓库名称title(string):issue 标题body(可选 string):issue 描述assignees(可选 string[]):要指派的用户名labels(可选 string[]):要添加的标签milestone(可选 number):里程碑编号
- 返回:已创建的 issue 详情
-
create_pull_request- 创建新的拉取请求
- 输入:
owner(string):仓库所有者repo(string):仓库名称title(string):PR 标题body(可选 string):PR 描述head(string):包含更改的分支base(string):要合并到的分支draft(可选 boolean):创建为草稿 PRmaintainer_can_modify(可选 boolean):允许维护者进行编辑
- 返回:已创建的拉取请求详情
-
fork_repository- 复刻仓库
- 输入:
owner(string):仓库所有者repo(string):仓库名称organization(可选 string):要复刻到的组织
- 返回:已复刻的仓库详情
-
create_branch- 创建新分支
- 输入:
owner(string):仓库所有者repo(string):仓库名称branch(string):新分支名称from_branch(optional string):源分支(默认为仓库默认分支)
- 返回:已创建的分支引用
-
list_issues- 列出并筛选仓库问题
- 输入:
owner(string):仓库所有者repo(string):仓库名称state(optional string):按状态筛选('open'、'closed'、'all')labels(optional string[]):按标签筛选sort(optional string):按('created'、'updated'、'comments')排序direction(optional string):排序方向('asc'、'desc')since(optional string):按日期筛选(ISO 8601 时间戳)page(optional number):页码per_page(optional number):每页结果数
- 返回:问题详情数组
-
update_issue- 更新现有问题
- 输入:
owner(string):仓库所有者repo(string):仓库名称issue_number(number):要更新的问题编号title(optional string):新标题body(optional string):新描述state(optional string):新状态('open' 或 'closed')labels(optional string[]):新标签assignees(optional string[]):新受理人milestone(optional number):新里程碑编号
- 返回:已更新的问题详情
-
add_issue_comment- 为问题添加评论
- 输入:
owner(string):仓库所有者repo(string):仓库名称issue_number(number):要评论的问题编号body(string):评论内容
- 返回:已创建的评论详情
-
search_code- 在 GitHub 仓库中搜索代码
- 输入:
q(string):使用 GitHub 代码搜索语法的搜索查询sort(optional string):排序字段(仅支持 'indexed')order(optional string):排序顺序('asc' 或 'desc')per_page(optional number):每页结果数(最多 100)page(optional number):页码
- 返回:包含仓库上下文的代码搜索结果
-
search_issues- 搜索问题和拉取请求
- 输入:
q(string):使用 GitHub 问题搜索语法的搜索查询sort(optional string):排序字段(comments、reactions、created 等)order(optional string):排序顺序('asc' 或 'desc')per_page(optional number):每页结果数(最多 100)page(optional number):页码
- 返回:问题和拉取请求搜索结果
-
search_users- 搜索 GitHub 用户
- 输入:
q(string):使用 GitHub 用户搜索语法的搜索查询sort(optional string):排序字段(followers、repositories、joined)order(optional string):排序顺序('asc' 或 'desc')per_page(optional number):每页结果数(最多 100)page(optional number):页码
- 返回:用户搜索结果
-
list_commits
- 获取仓库分支的提交记录
- 输入:
owner(string):仓库所有者repo(string):仓库名称page(optional string):页码per_page(optional string):每页记录数sha(optional string):分支名称
- 返回:提交记录列表
get_issue
- 获取仓库中某个问题的内容
- 输入:
owner(string):仓库所有者repo(string):仓库名称issue_number(number):要获取的问题编号
- 返回:GitHub Issue 对象及详情
get_pull_request
- 获取特定拉取请求的详细信息
- 输入:
owner(字符串):仓库所有者repo(字符串):仓库名称pull_number(数字):拉取请求编号
- 返回:拉取请求的详细信息,包括差异和审核状态
list_pull_requests
- 列出并筛选仓库的拉取请求
- 输入:
owner(字符串):仓库所有者repo(字符串):仓库名称state(可选字符串):按状态筛选('open'、'closed'、'all')head(可选字符串):按 head 用户/组织和分支筛选base(可选字符串):按 base 分支筛选sort(可选字符串):按('created'、'updated'、'popularity'、'long-running')排序direction(可选字符串):排序方向('asc'、'desc')per_page(可选数字):每页结果数(最多 100)page(可选数字):页码
- 返回:拉取请求详细信息数组
create_pull_request_review
- 在拉取请求上创建审核
- 输入:
owner(字符串):仓库所有者repo(字符串):仓库名称pull_number(数字):拉取请求编号body(字符串):审核评论文本event(字符串):审核操作('APPROVE'、'REQUEST_CHANGES'、'COMMENT')commit_id(可选字符串):要审核的提交 SHAcomments(可选数组):针对特定行的评论,每条评论包含:path(字符串):文件路径position(数字):差异中的行位置body(字符串):评论文本
- 返回:已创建审核的详细信息
merge_pull_request
- 合并拉取请求
- 输入:
owner(字符串):仓库所有者repo(字符串):仓库名称pull_number(数字):拉取请求编号commit_title(可选字符串):合并提交的标题commit_message(可选字符串):合并提交的补充说明merge_method(可选字符串):合并方式('merge'、'squash'、'rebase')
- 返回:合并结果的详细信息
get_pull_request_files
- 获取拉取请求中已更改文件的列表
- 输入:
owner(字符串):仓库所有者repo(字符串):仓库名称pull_number(数字):拉取请求编号
- 返回:已更改文件的数组,包含补丁和状态详细信息
get_pull_request_status
- 获取拉取请求所有状态检查的综合状态
- 输入:
owner(字符串):仓库所有者repo(字符串):仓库名称pull_number(数字):拉取请求编号
- 返回:综合状态检查结果和各项检查的详细信息
update_pull_request_branch
- 使用 base 分支的最新更改更新拉取请求分支(相当于 GitHub 的“Update branch”按钮)
- 输入:
owner(字符串):仓库所有者repo(字符串):仓库名称pull_number(数字):拉取请求编号expected_head_sha(可选字符串):拉取请求 HEAD 引用的预期 SHA
- 返回:分支更新成功时的消息
get_pull_request_comments
- 获取拉取请求上的审核评论
- 输入:
owner(字符串):仓库所有者repo(字符串):仓库名称pull_number(数字):拉取请求编号
- 返回:拉取请求审核评论数组,包含评论文本、作者和在差异中的位置等详细信息
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/
Issues 搜索
is:issue或is:pr:按类型筛选is:open或is:closed:按状态筛选label:bug:按标签搜索author:username:按作者搜索- 示例:
q: "memory leak" is:issue is:open label:bug
用户搜索
type:user或type:org:按账号类型筛选followers:>1000:按关注者数量筛选location:London:按所在地搜索- 示例:
q: "fullstack developer" location:London followers:>100
如需了解详细的搜索语法,请参阅 GitHub 的搜索文档。
设置
个人访问令牌
创建 GitHub 个人访问令牌,并授予适当的权限:
- 前往 个人访问令牌(位于 GitHub 设置 > 开发者设置中)
- 选择此令牌可以访问的仓库(公开、全部或指定仓库)
- 创建一个具有
repo范围的令牌(“对私有仓库的完全控制”)- 或者,如果只处理公开仓库,则只选择
public_repo范围
- 或者,如果只处理公开仓库,则只选择
- 复制生成的令牌
在 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 文件。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。
