使用说明
GitHub MCP服务器
弃用通知: 该项目的开发已转移到GitHubhttps://github.com/195440/server-github-mcp回购。
用于GitHub API的MCP服务器,实现文件操作、存储库管理、搜索功能等。
特性
- 自动创建分支:在创建/更新文件或推送更改时,如果分支不存在,则会自动创建分支
- 全面的错误处理:清除常见问题的错误消息
- Git历史保存:操作维护正确的Git历史记录,无需强制推送
- 批量操作:支持单文件和多文件操作
- 高级搜索:支持搜索代码、问题/PR和用户
工具
-
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和contentmessage(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(可选字符串):提交审查的SHAcomments(可选数组):行特定注释,每个注释都有: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等)、审核者和审核主体等详细信息
add_pr_summary_comment
- 向拉取请求添加摘要注释
- 输入:
owner(string):存储库所有者repo(string):存储库名称pull_number(number):拉取请求编号body(string):注释文本
- 返回:已创建评论详细信息
add_pr_line_comment
- 在pull请求中添加特定行的注释
- 输入:
owner(string):存储库所有者repo(string):存储库名称
搜索查询语法
代码搜索
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的搜索文档.
设置
个人访问令牌
创建GitHub个人访问令牌 具有适当的权限:
- 首选 个人访问令牌 (在GitHub设置>开发者设置中)
- 选择您希望此令牌访问的存储库(公共、全部或选择)
- 使用创建令牌
repo范围(“完全控制私有存储库”)- 或者,如果仅使用公共存储库,请仅选择
public_repo范围
- 或者,如果仅使用公共存储库,请仅选择
- 复制生成的令牌
使用Claude Desktop
要在Claude Desktop中使用此功能,请将以下内容添加到您的 claude_desktop_config.json:
码头工人
{
"mcpServers": {
"github": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"mcp/github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}
NPX
{
"mcpServers": {
"github": {
"command": "npx",
"args": [
"-y",
"@rz195440/server-github-mcp"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}
NPX
{
"mcpServers": {
"github": {
"command": "npx",
"args": [
"-y",
"@rz195440/server-github-mcp"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}"
}
}
}
}
构建
Docker构建:
docker build -t mcp/github -f src/github/Dockerfile .
许可证
此MCP服务器根据MIT许可证获得许可。这意味着您可以根据MIT许可证的条款和条件自由使用、修改和分发软件。有关更多详细信息,请参阅项目存储库中的LICENSE文件。
