GitHub MCP服务器
用于与GitHub API交互的远程MCP服务器,为存储库、问题、拉取请求等提供工具。
设置
使用工具CLI
从安装CLIhttps://github.com/zerocore-ai/tool-cli
# Install from tool.store
tool install library/github# View available tools
tool info library/github# List issues
tool call library/github -m list_issues -p owner=github -p repo=github-mcp-server# Get file contents
tool call library/github -m get_file_contents -p owner=github -p repo=github-mcp-server -p path=README.md认证
GitHub MCP使用个人访问令牌(PAT)进行身份验证。在以下位置创建一个:
https://github.com/settings/personal-access-tokens
推荐范围:
repo-完全控制私有存储库read:org-阅读组织成员资格read:user-读取用户配置文件数据read:packages-读取软件包
连接端点:
- HTTP:
https://api.githubcopilot.com/mcp
配置
| 字段 | 必填 | 描述 |
|---|---|---|
gh_pat | 是 | 用于身份验证的GitHub个人访问令牌 |
创建PAT: https://github.com/settings/personal-access-tokens
推荐范围: repo, read:org, read:user, read:packages
工具
list_issues
在GitHub存储库中列出问题。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
owner | string | 是 | 存储库所有者 |
repo | string | 是 | 存储库名称 |
state | string | 否 | 按状态筛选:“打开”或“关闭” |
labels | array | 否 | 按标签筛选 |
orderBy | string | 否 | 排序方式:“创建_AT”、“更新_AT”和“评论” |
direction | string | 否 | 顺序方向:“ASC”或“DESC” |
perPage | number | 否 | 每页结果(最多100个) |
after | string | 否 | 分页光标 |
issue_read
获取有关特定问题的信息。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
owner | string | 是 | 存储库所有者 |
repo | string | 是 | 存储库名称 |
issue_number | number | 是 | 问题编号 |
method | string | 是 | “get”、“get_comments”、“get_sub_issues”或“get_labels” |
issue_write
创建或更新问题。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
owner | string | 是 | 存储库所有者 |
repo | string | 是 | 存储库名称 |
method | string | 是 | “创建”或“更新” |
issue_number | number | No | 问题编号(更新时需要) |
title | string | 否 | 问题标题 |
body | string | 否 | 发布正文内容 |
state | string | 否 | “打开”或“关闭” |
labels | array | 否 | 要应用的标签 |
assignees | array | 否 | 要分配的用户名 |
add_issue_comment
向问题或拉取请求添加注释。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
owner | string | 是 | 存储库所有者 |
repo | string | 是 | 存储库名称 |
issue_number | number | 是 | 问题编号 |
body | string | 是 | 评论内容 |
list_pull_requests
在存储库中列出拉取请求。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
owner | string | 是 | 存储库所有者 |
repo | string | 是 | 存储库名称 |
state | string | 否 | “打开”、“关闭”或“全部” |
base | string | 否 | 按基分支筛选 |
head | string | 否 | 按主用户/组织和分支机构筛选 |
sort | string | 否 | “已创建”、“已更新”、“受欢迎程度”、“长期运行” |
direction | string | 否 | “asc”或“desc” |
pull_request_read
获取有关特定拉取请求的信息。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
owner | string | 是 | 存储库所有者 |
repo | string | 是 | 存储库名称 |
pullNumber | number | 是 | 拉取请求号 |
method | string | 是 | “get”、“get_diff”、“get_files”、“get commits”等。 |
create_pull_request
创建新的pull请求。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
owner | string | 是 | 存储库所有者 |
repo | string | 是 | 存储库名称 |
title | string | 是 | PR标题 |
head | string | 是 | 包含更改的分支 |
base | string | 是 | 要合并到的分支 |
body | string | 否 | PR描述 |
draft | boolean | 否 | 创建为PR草稿 |
merge_pull_request
合并拉取请求。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
owner | string | 是 | 存储库所有者 |
repo | string | 是 | 存储库名称 |
pullNumber | number | 是 | 拉取请求号 |
merge_method | string | 否 | “合并”、“挤压”或“重基” |
commit_title | string | 否 | 合并提交的标题 |
get_file_contents
获取文件或目录的内容。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
owner | string | 是 | 存储库所有者 |
repo | string | 是 | 存储库名称 |
path | string | 否 | 文件/目录路径(默认:“/”) |
ref | string | 否 | Git引用(分支、标记或提交) |
create_or_update_file
在存储库中创建或更新文件。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
owner | string | 是 | 存储库所有者 |
repo | string | 是 | 存储库名称 |
path | string | 是 | 文件路径 |
content | string | 是 | 文件内容 |
message | string | 是 | 提交消息 |
branch | string | 是 | 分支名称 |
sha | string | 否 | 要替换的文件的SHA(用于更新) |
search_code
跨存储库搜索代码。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
query | string | 是 | 搜索查询 |
page | number | 否 | 页码 |
perPage | number | 否 | 每页结果(最多100个) |
search_repositories
搜索GitHub存储库。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
query | string | 是 | 搜索查询 |
page | number | 否 | 页码 |
perPage | number | 否 | 每页结果(最多100个) |
list_commits
获取存储库中的提交列表。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
owner | string | 是 | 存储库所有者 |
repo | string | 是 | 存储库名称 |
sha | string | 否 | 分支、标记或提交SHA |
author | string | 否 | 按作者筛选 |
page | number | 否 | 页码 |
perPage | number | 否 | 每页结果(最多100个) |
get_commit
获取特定提交的详细信息。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
owner | string | 是 | 存储库所有者 |
repo | string | 是 | 存储库名称 |
sha | string | 是 | 提交SHA、分支或标记 |
include_diff | boolean | 否 | 包含文件差异(默认值:true) |
create_branch
创建一个新分支。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
owner | string | 是 | 存储库所有者 |
repo | string | 是 | 存储库名称 |
branch | string | 是 | 新分支名称 |
from_branch | string | 否 | 源分支(默认为repo默认值) |
create_repository
创建新存储库。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
name | string | 是 | 存储库名称 |
description | string | 否 | 存储库描述 |
private | boolean | 否 | 仓库是否应该是私有的 |
autoInit | boolean | 否 | 使用README进行初始化 |
organization | string | 否 | 要创建的组织 |
fork_repository
分叉存储库。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
owner | string | 是 | 存储库所有者 |
repo | string | 是 | 存储库名称 |
organization | string | 否 | 要分叉的组织 |
get_me
获取已验证用户的详细信息。
输入: 无
assign_copilot_to_issue
指派GitHub Copilot处理某个问题。
输入:
| 字段 | 类型 | 必填 | 描述 |
|---|---|---|---|
owner | string | 是 | 存储库所有者 |
repo | string | 是 | 存储库名称 |
issue_number | number | 是 | 问题编号 |
base_ref | string | 否 | 开始工作的分支 |
custom_instructions | string | 否 | 副驾驶的其他指导 |
许可证
麻省理工学院
参考文献
- https://github.com/github/github-mcp-server
- https://docs.github.com/en/rest
