Github 服务 MCP 接入
通过 MCP 协议提供 Github 服务调用,支持代码评审,文件操作、仓库管理、搜索功能等。
环境变量
- 需要将GITHUB_PERSONAL_ACCESS_TOKEN 配置为您在Github 上创建的 Personal access token
使用说明
🗺️ 功能清单
工具标识 | 功能描述 | 核心参数 |
---|---|---|
create_or_update_file | 创建或更新单个文件 | owner, repo, path, content, message |
push_files | 单次提交推送多个文件 | owner, repo, branch, files, message |
search_repositories | 搜索GitHub仓库 | query, page, perPage |
create_repository | 创建新GitHub仓库 | name, description, private |
get_file_contents | 获取文件或目录内容 | owner, repo, path, branch |
create_issue | 创建新issue | owner, repo, title, body, assignees |
create_pull_request | 创建新PR | owner, repo, title, head, base |
fork_repository | Fork仓库 | owner, repo, organization |
create_branch | 创建新分支 | owner, repo, branch, from_branch |
list_issues | 列出和筛选仓库issues | owner, repo, state, labels |
update_issue | 更新现有issue | owner, repo, issue_number, title |
add_issue_comment | 添加issue评论 | owner, repo, issue_number, body |
search_code | 跨仓库搜索代码 | q, sort, order |
search_issues | 搜索issues和PR | q, sort, order |
search_users | 搜索GitHub用户 | q, sort, order |
list_commits | 获取仓库分支的提交记录 | owner, repo, sha |
get_issue | 获取issue内容 | owner, repo, issue_number |
get_pull_request | 获取PR详情 | owner, repo, pull_number |
list_pull_requests | 列出和筛选仓库PR | owner, repo, state |
create_pull_request_review | 创建PR审查 | owner, repo, pull_number, body, event |
merge_pull_request | 合并PR | owner, repo, pull_number |
get_pull_request_files | 获取PR更改的文件列表 | owner, repo, pull_number |
get_pull_request_status | 获取PR所有状态检查 | owner, repo, pull_number |
update_pull_request_branch | 更新PR分支 | owner, repo, pull_number |
get_pull_request_comments | 获取PR评论 | owner, repo, pull_number |
get_pull_request_reviews | 获取PR审查记录 | owner, repo, pull_number |
仓库地址
https://github.com/modelcontextprotocol/servers/tree/main/src/github
使用方式
参数说明
create_or_update_file
在仓库中创建或更新单个文件
输入参数 | Type | 描述 |
---|---|---|
owner | string | 仓库所有者(用户名或组织) |
repo | string | 仓库名称 |
path | string | 文件创建/更新的路径 |
content | string | 文件内容 |
message | string | 提交信息 |
branch | string | 操作的目标分支 |
sha | optional string | 被替换文件的SHA(用于更新) |
返回: 文件内容和提交详情
push_files
在单次提交中推送多个文件
输入参数 | Type | 描述 |
---|---|---|
owner | string | 仓库所有者 |
repo | string | 仓库名称 |
branch | string | 推送目标分支 |
files | array | 要推送的文件数组(每个包含路径和内容) |
message | string | 提交信息 |
返回: 更新后的分支引用
search_repositories
搜索GitHub仓库
输入参数 | Type | 描述 |
---|---|---|
query | string | 搜索关键词 |
page | optional number | 分页页码 |
perPage | optional number | 每页结果数(最大100) |
返回: 仓库搜索结果
create_repository
创建新GitHub仓库
输入参数 | Type | 描述 |
---|---|---|
name | string | 仓库名称 |
description | optional string | 仓库描述 |
private | optional boolean | 是否私有仓库 |
autoInit | optional boolean | 是否初始化README |
返回: 创建的仓库详情
get_file_contents
获取文件或目录内容
输入参数 | Type | 描述 |
---|---|---|
owner | string | 仓库所有者 |
repo | string | 仓库名称 |
path | string | 文件/目录路径 |
branch | optional string | 获取内容的分支 |
返回: 文件/目录内容
create_issue
创建新issue
输入参数 | Type | 描述 |
---|---|---|
owner | string | 仓库所有者 |
repo | string | 仓库名称 |
title | string | issue标题 |
body | optional string | issue描述 |
assignees | optional string[] | 分配的用户名 |
labels | optional string[] | 添加的标签 |
milestone | optional number | 里程碑编号 |
返回: 创建的issue详情
create_pull_request
创建新PR
输入参数 | Type | 描述 |
---|---|---|
owner | string | 仓库所有者 |
repo | string | 仓库名称 |
title | string | PR标题 |
body | optional string | PR描述 |
head | string | 包含更改的分支 |
base | string | 要合并到的目标分支 |
draft | optional boolean | 是否创建为草稿PR |
maintainer_can_modify | optional boolean | 是否允许维护者修改 |
返回: 创建的PR详情
fork_repository
Fork仓库
输入参数 | Type | 描述 |
---|---|---|
owner | string | 仓库所有者 |
repo | string | 仓库名称 |
organization | optional string | Fork到的组织 |
返回: Fork后的仓库详情
create_branch
创建新分支
输入参数 | Type | 描述 |
---|---|---|
owner | string | 仓库所有者 |
repo | string | 仓库名称 |
branch | string | 新分支名称 |
from_branch | optional string | 源分支(默认为仓库默认分支) |
返回: 创建的分支引用
list_issues
列出和筛选仓库issues
输入参数 | Type | 描述 |
---|---|---|
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 | 每页结果数 |
返回: issue详情数组
update_issue
更新现有issue
输入参数 | Type | 描述 |
---|---|---|
owner | string | 仓库所有者 |
repo | string | 仓库名称 |
issue_number | number | 要更新的issue编号 |
title | optional string | 新标题 |
body | optional string | 新描述 |
state | optional string | 新状态('open'或'closed') |
labels | optional string[] | 新标签 |
assignees | optional string[] | 新分配者 |
milestone | optional number | 新里程碑编号 |
返回: 更新后的issue详情
add_issue_comment
添加issue评论
输入参数 | Type | 描述 |
---|---|---|
owner | string | 仓库所有者 |
repo | string | 仓库名称 |
issue_number | number | 要评论的issue编号 |
body | string | 评论内容 |
返回: 创建的评论详情
search_code
跨仓库搜索代码
输入参数 | Type | 描述 |
---|---|---|
q | string | 使用GitHub代码搜索语法的搜索词 |
sort | optional string | 排序字段(仅'indexed') |
order | optional string | 排序方向('asc'或'desc') |
per_page | optional number | 每页结果数(最大100) |
page | optional number | 页码 |
返回: 带仓库上下文的代码搜索结果
search_issues
搜索issues和PR
输入参数 | Type | 描述 |
---|---|---|
q | string | 使用GitHub issues搜索语法的搜索词 |
sort | optional string | 排序字段(comments, reactions, created等) |
order | optional string | 排序方向('asc'或'desc') |
per_page | optional number | 每页结果数(最大100) |
page | optional number | 页码 |
返回: issues和PR搜索结果
search_users
搜索GitHub用户
输入参数 | Type | 描述 |
---|---|---|
q | string | 使用GitHub用户搜索语法的搜索词 |
sort | optional string | 排序字段(followers, repositories, joined) |
order | optional string | 排序方向('asc'或'desc') |
per_page | optional number | 每页结果数(最大100) |
page | optional number | 页码 |
返回: 用户搜索结果
list_commits
获取仓库分支的提交记录
输入参数 | Type | 描述 |
---|---|---|
owner | string | 仓库所有者 |
repo | string | 仓库名称 |
page | optional string | 页码 |
per_page | optional string | 每页记录数 |
sha | optional string | 分支名称 |
返回: 提交记录列表
get_issue
获取仓库中某个issue的内容
输入参数 | Type | 描述 |
---|---|---|
owner | string | 仓库所有者 |
repo | string | 仓库名称 |
issue_number | number | 要获取的issue编号 |
返回: GitHub Issue对象及详情
get_pull_request
获取特定PR的详情
输入参数 | Type | 描述 |
---|---|---|
owner | string | 仓库所有者 |
repo | string | 仓库名称 |
pull_number | number | PR编号 |
返回: 包含diff和审查状态的PR详情
list_pull_requests
列出和筛选仓库PR
输入参数 | Type | 描述 |
---|---|---|
owner | string | 仓库所有者 |
repo | string | 仓库名称 |
state | optional string | 状态筛选('open', 'closed', 'all') |
head | optional string | 按head用户/组织和分支筛选 |
base | optional string | 按base分支筛选 |
sort | optional string | 排序方式('created', 'updated', 'popularity', 'long-running') |
direction | optional string | 排序方向('asc', 'desc') |
per_page | optional number | 每页结果数(最大100) |
page | optional number | 页码 |
返回: PR详情数组
create_pull_request_review
创建PR审查
输入参数 | Type | 描述 |
---|---|---|
owner | string | 仓库所有者 |
repo | string | 仓库名称 |
pull_number | number | PR编号 |
body | string | 审查评论文本 |
event | string | 审查动作('APPROVE', 'REQUEST_CHANGES', 'COMMENT') |
commit_id | optional string | 要审查的提交SHA |
comments | optional array | 行级评论数组(每个包含: path: 文件路径 position: diff中的行位置 body: 评论文本) |
返回: 创建的审查详情
merge_pull_request
合并PR
输入参数 | Type | 描述 |
---|---|---|
owner | string | 仓库所有者 |
repo | string | 仓库名称 |
pull_number | number | PR编号 |
commit_title | optional string | 合并提交的标题 |
commit_message | optional string | 合并提交的额外详情 |
merge_method | optional string | 合并方式('merge', 'squash', 'rebase') |
返回: 合并结果详情
get_pull_request_files
获取PR中更改的文件列表
输入参数 | Type | 描述 |
---|---|---|
owner | string | 仓库所有者 |
repo | string | 仓库名称 |
pull_number | number | PR编号 |
返回: 包含patch和状态详情的更改文件数组
get_pull_request_status
获取PR所有状态检查的合并状态
输入参数 | Type | 描述 |
---|---|---|
owner | string | 仓库所有者 |
repo | string | 仓库名称 |
pull_number | number | PR编号 |
返回: 合并的状态检查结果和单个检查详情
update_pull_request_branch
用base分支的最新更改更新PR分支(相当于GitHub的"Update branch"按钮)
输入参数 | Type | 描述 |
---|---|---|
owner | string | 仓库所有者 |
repo | string | 仓库名称 |
pull_number | number | PR编号 |
expected_head_sha | optional string | PR的HEAD引用的预期SHA |
返回: 分支更新成功时的成功消息
get_pull_request_comments
获取PR的审查评论
输入参数 | Type | 描述 |
---|---|---|
owner | string | 仓库所有者 |
repo | string | 仓库名称 |
pull_number | number | PR编号 |
返回: 包含评论文本、作者和diff位置等详情的PR审查评论数组
get_pull_request_reviews
获取PR的审查记录
输入参数 | Type | 描述 |
---|---|---|
owner | string | 仓库所有者 |
repo | string | 仓库名称 |
pull_number | number | PR编号 |
返回: 包含审查状态(APPROVED, CHANGES_REQUESTED等)、审查者和审查正文等详情的PR审查数组
搜索查询语法
代码搜索
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: "内存泄漏" is:issue is:open label:bug
用户搜索
type:user
或type:org
: 按账户类型筛选followers:>1000
: 按关注者数量筛选location:London
: 按位置搜索
示例: q: "全栈开发" location:北京 followers:>100
Personal Access Token (个人访问令牌)相关
- 选择令牌可访问的仓库范围(公开、全部或选定)
- 创建具有repo作用域的令牌("私有仓库的完全控制")
- 或者如果仅使用公开仓库,选择仅public_repo作用域
- 复制保存生成的令牌