](https://mseep.ai/app/piyushgiitian-github-enterprice-mcp)
GitHub企业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-mcp2.安装依赖关系并构建
npm install
npm run build这将创建一个 dist 包含已编译JavaScript文件的目录。
3.创建GitHub个人访问令牌
- 首选 (在GitHub设置>开发者设置中)
- 点击“生成新令牌”
- 选择您希望此令牌访问的存储库(公共、全部或选择)
- 使用创建令牌
repo范围(“完全控制私有存储库”)
- 或者,如果仅使用公共存储库,请仅选择 public_repo 范围
- 复制生成的令牌
4.配置临床MCP设置
Cline VS代码扩展
- 打开VS代码
- 在以下位置找到Cline MCP设置文件:
- 窗户: %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
- 将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文件的绝对路径。
适用于Claude桌面应用程序
- 在以下位置找到Claude Desktop配置文件:
- 窗户: %APPDATA%\Claude\claude_desktop_config.json - macOS: ~/Library/Application Support/Claude/claude_desktop_config.json - Linux: ~/.config/Claude/claude_desktop_config.json
- 将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操作,例如:
- “创建一个名为“我的项目”的新存储库”
- “搜索与机器学习相关的存储库”
- “创建从我的功能分支到main的pull请求”
- “获取存储库X中README.md文件的内容”
- “列出我的存储库中的未解决问题”
故障排除
如果您遇到GitHub Enterprise MCP服务器的问题:
- 检查MCP设置中index.js文件的路径是否正确
- 验证您的GitHub个人访问令牌是否具有必要的权限
- 确保GitHub API URL对于您的GitHub实例是正确的
- 检查日志中是否有任何错误消息
其他配置选项
GitHub API版本
您可以通过添加 GITHUB_API_VERSION 环境变量:
"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文档 了解更多信息。
工具
create_or_update_file
- 在存储库中创建或更新单个文件 - 输入: - owner (string):存储库所有者(用户名或组织) - repo (string):存储库名称 - path (string):创建/更新文件的路径 - content (string):文件内容 - message (string):提交消息 - branch (string):创建/更新文件的分支 - sha (可选字符串):要替换的文件的SHA(用于更新) - 返回:文件内容和提交详细信息
push_files
- 在一次提交中推送多个文件 - 输入: - owner (string):存储库所有者 - repo (string):存储库名称 - branch (string):要推送的分支 - files (array):要推送的文件,每个文件都有 path 和 content - message (string):提交消息 - 返回:更新了分支引用
search_repositories
- 搜索GitHub存储库 - 输入: - query (string):搜索查询 - page (可选编号):分页页码 - perPage (可选数字):每页结果(最多100个) - 返回:存储库搜索结果
create_repository
- 创建新的GitHub存储库 - 输入: - name (string):存储库名称 - description (可选字符串):存储库描述 - private (可选布尔值):repo是否应该是私有的 - autoInit (可选布尔值):使用README进行初始化 - 返回:已创建存储库详细信息
get_file_contents
- 获取文件或目录的内容 - 输入: - owner (string):存储库所有者 - repo (string):存储库名称 - path (string):文件/目录的路径 - branch (可选字符串):从中获取内容的分支 - 返回:文件/目录内容
create_issue
- 创建新问题 - 输入: - owner (string):存储库所有者 - repo (string):存储库名称 - title (string):发行标题 - body (可选字符串):问题描述 - assignees (可选字符串\[\]):要分配的用户名 - labels (可选字符串\[\]):要添加的标签 - milestone (可选编号):里程碑编号 - 退货:已创建问题详细信息
create_pull_request
- 创建新的pull请求 - 输入: - owner (string):存储库所有者 - repo (string):存储库名称 - title (字符串):PR标题 - body (可选字符串):PR描述 - head (string):包含更改的分支 - base (string):要合并的分支 - draft (可选布尔值):创建为PR草稿 - maintainer_can_modify (可选布尔值):允许维护者编辑 - 返回:已创建拉取请求详细信息
fork_repository
- 分叉存储库 - 输入: - owner (string):存储库所有者 - repo (string):存储库名称 - organization (可选字符串):要分叉的组织 - 返回:分叉存储库详细信息
create_branch
- 创建新分支 - 输入: - owner (string):存储库所有者 - repo (string):存储库名称 - branch (string):新分支的名称 - from_branch (可选字符串):源分支(默认为repo默认值) - 返回:已创建分支引用
list_issues
- 列出和筛选存储库问题 - 输入: - owner (string):存储库所有者 - repo (string):存储库名称 - state (可选字符串):按状态筛选(“打开”、“关闭”、“全部”) - labels (可选字符串\[\]):按标签筛选 - sort (可选字符串):排序方式(“已创建”、“已更新”、“注释”) - direction (可选字符串):排序方向('sc','sec') - since (可选字符串):按日期筛选(ISO 8601时间戳) - page (可选编号):页码 - per_page (可选数字):每页结果 - 返回:问题详细信息数组
update_issue
- 更新现有问题 - 输入: - owner (string):存储库所有者 - repo (string):存储库名称 - issue_number (number):要更新的发行号 - title (可选字符串):新标题 - body (可选字符串):新描述 - state (可选字符串):新状态(“打开”或“关闭”) - labels (可选字符串\[\]):新标签 - assignees (可选字符串\[\]):新受让人 - milestone (可选编号):新里程碑编号 - 退货:更新的问题详细信息
add_issue_comment
- 向问题添加评论 - 输入: - owner (string):存储库所有者 - repo (string):存储库名称 - issue_number (number):要评论的问题编号 - body (string):注释文本 - 返回:已创建评论详细信息
search_code
- 在GitHub存储库中搜索代码 - 输入: - q (string):使用GitHub代码搜索语法搜索查询 - sort (可选字符串):排序字段(仅“索引”) - order (可选字符串):排序顺序(“asc”或“desc”) - per_page (可选数字):每页结果(最多100个) - page (可选编号):页码 - 返回:带有存储库上下文的代码搜索结果
search_issues
- 搜索问题并提取请求 - 输入: - q (string):使用GitHub发布搜索语法的搜索查询 - sort (可选字符串):排序字段(注释、反应、创建等) - order (可选字符串):排序顺序(“asc”或“desc”) - per_page (可选数字):每页结果(最多100个) - page (可选编号):页码 - 返回:问题和拉取请求搜索结果
search_users
- 搜索GitHub用户 - 输入: - q (string):使用GitHub用户搜索语法搜索查询 - sort (可选字符串):排序字段(关注者、存储库、已加入) - order (可选字符串):排序顺序(“asc”或“desc”) - per_page (可选数字):每页结果(最多100个) - page (可选编号):页码 - 返回:用户搜索结果
list_commits
- 获取存储库中分支的提交
- 输入:
- owner (string):存储库所有者 - repo (string):存储库名称 - page (可选字符串):页码 - per_page (可选字符串):每页记录数 - sha (可选字符串):分支名称
- 返回:提交列表
get_issue
- 获取存储库中问题的内容
- 输入:
- owner (string):存储库所有者 - repo (string):存储库名称 - issue_number (number):要检索的问题编号
- 返回:Github Issue对象和详细信息
get_pull_request
- 获取特定拉取请求的详细信息
- 输入:
- owner (string):存储库所有者 - repo (string):存储库名称 - pull_number (number):拉取请求编号
- 返回:拉取请求详细信息,包括差异和审核状态
list_pull_requests
- 列出和筛选存储库拉取请求
- 输入:
- owner (string):存储库所有者 - repo (string):存储库名称 - state (可选字符串):按状态筛选(“打开”、“关闭”、“全部”) - head (可选字符串):按主用户/组织和分支机构过滤 - base (可选字符串):按基分支筛选 - sort (可选字符串):排序方式(“已创建”、“已更新”、“受欢迎程度”、“长期运行”) - direction (可选字符串):排序方向('sc','sec') - per_page (可选数字):每页结果(最多100个) - page (可选编号):页码
- 返回:拉取请求详细信息数组
create_pull_request_review
- 对拉取请求创建评论
- 输入:
- owner (string):存储库所有者 - repo (string):存储库名称 - pull_number (number):拉取请求编号 - body (string):审阅评论文本 - event (string):审核操作(“PPROVE”、“REQUEST_CHANGES”、“COMMENT”) - commit_id (可选字符串):提交审查的SHA - comments (可选数组):行特定注释,每个注释都有: - path (string):文件路径 - position (数字):差速器中的行位置 - body (string):注释文本
- 退货:已创建审核详细信息
merge_pull_request
- 合并拉取请求
- 输入:
- owner (string):存储库所有者 - repo (string):存储库名称 - pull_number (number):拉取请求编号 - commit_title (可选字符串):合并提交的标题 - commit_message (可选字符串):合并提交的额外细节 - merge_method (可选字符串):Merge方法('Merge','squash','rebase')
- 返回:合并结果详细信息
get_pull_request_files
- 获取拉取请求中更改的文件列表
- 输入:
- owner (string):存储库所有者 - repo (string):存储库名称 - pull_number (number):拉取请求编号
- 返回:包含补丁和状态详细信息的已更改文件数组
get_pull_request_status
- 获取拉取请求的所有状态检查的组合状态
- 输入:
- owner (string):存储库所有者 - repo (string):存储库名称 - pull_number (number):拉取请求编号
- 返回:组合状态检查结果和单个检查详细信息
update_pull_request_branch
- 使用基础分支的最新更改更新拉取请求分支(相当于GitHub的“更新分支”按钮)
- 输入:
- owner (string):存储库所有者 - repo (string):存储库名称 - pull_number (number):拉取请求编号 - expected_head_sha (可选字符串):拉取请求的HEAD引用的预期SHA
- 返回:分支更新时的成功消息
get_pull_request_comments
- 获取拉取请求的评论
- 输入:
- owner (string):存储库所有者 - repo (string):存储库名称 - pull_number (number):拉取请求编号
- 返回:拉取请求审核评论数组,包含评论文本、作者和差异中的位置等详细信息
get_pull_request_reviews
- 获取拉取请求的评论
- 输入:
- owner (string):存储库所有者 - repo (string):存储库名称 - pull_number (number):拉取请求编号
- 返回:拉取请求审核数组,包含审核状态(APPROVED、CHANGES_REQUESTED等)、审核者和审核主体等详细信息
搜索查询语法
代码搜索
language:javascript:按编程语言搜索repo:owner/name:在特定存储库中搜索path:app/src:在特定路径中搜索extension:js:按文件扩展名搜索- 例子:
q: "import express" language:typescript path:src/
问题搜索
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设置>开发者设置中)
- 选择您希望此令牌访问的存储库(公共、全部或选择)
- 使用创建令牌
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": ""
}
}
}
}构建
# Install dependencies
npm install
# Build the project
npm run build
# Start the server
npm start许可证
此MCP服务器根据MIT许可证获得许可。这意味着您可以根据MIT许可证的条款和条件自由使用、修改和分发软件。有关更多详细信息,请参阅项目存储库中的LICENSE文件。
