GitHub MCP Server 可将 AI 工具直接连接到 GitHub 平台。这使 AI 代理、助手和聊天机器人能够读取仓库和代码文件、管理 issues 和 PR、分析代码以及自动化工作流——所有这些都通过自然语言交互实现。
专为希望将其 AI 工具连接到 GitHub 上下文和功能的开发者打造,支持从简单的自然语言查询到复杂的多步骤代理工作流。
如需快速安装,请使用上方的一键安装按钮之一。完成该流程后,切换代理模式(位于 Copilot Chat 文本输入框旁),服务器将启动。确保使用 VS Code 1.101 或更高版本以支持远程 MCP 和 OAuth。
或者,要手动配置 VS Code,请从以下示例中选择合适的 JSON 块并添加到您的宿主配置中:
使用 OAuth | 使用 GitHub PAT(VS Code 1.101 或更高版本)
{
"servers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/"
}
}
}
{
"servers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer ${input:github_mcp_pat}"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "github_mcp_pat",
"description": "GitHub Personal Access Token",
"password": true
}
]
}
[!NOTE] 每个 MCP 宿主应用都需要配置 GitHub App 或 OAuth App 以支持通过 OAuth 进行远程访问。任何支持远程 MCP 服务器的宿主应用都应支持使用 PAT 身份验证的远程 GitHub 服务器。配置详情和支持级别因宿主而异。请务必参考宿主应用的文档以获取更多信息。
有关远程服务器配置、工具集、标头和高级用法的完整详情,请参见 远程服务器文档。该文件提供了在 VS Code 和其他 MCP 宿主中连接、自定义和安装远程 GitHub MCP Server 的全面说明和示例。
未指定工具集时,将使用默认工具集。
[!NOTE] 抢先体验新功能!远程服务器提供预览版(insiders),可提前访问新功能和实验性工具。
使用 URL 路径 | 使用标头
{
"servers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/insiders"
}
}
}
{
"servers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"X-MCP-Insiders": "true"
}
}
}
}
有关更多详情和示例,请参见 远程服务器文档;有关可用功能的完整列表,请参见 预览版功能。
GitHub Enterprise Cloud 也可使用远程服务器。
https://octocorp.ghe.com 使用 GitHub PAT 令牌的示例:
{
...
"github-octocorp": {
"type": "http",
"url": "https://copilot-api.octocorp.ghe.com/mcp",
"headers": {
"Authorization": "Bearer ${input:github_mcp_pat}"
}
},
...
}
[!NOTE] 在 VS Code 和 GitHub Copilot 中使用 OAuth 连接 GitHub Enterprise 时,您还需要将 VS Code 设置配置为指向您的 GitHub Enterprise 实例——请参见 https://docs.github.com/en/enterprise-cloud@latest/copilot/how-tos/configure-personal-settings/authenticate-to-ghecom
GitHub Enterprise Server 不支持远程服务器托管。请参考本地服务器配置中的GitHub Enterprise Server 和具有数据驻留的 Enterprise Cloud(ghe.com)。
ghcr.io/github/github-mcp-server。该镜像是公开的;如果拉取时出现错误,可能是令牌已过期,需要执行 docker logout ghcr.io。安全处理 PAT
为确保您的 GitHub PAT 安全并可在不同 MCP 宿主间复用:
export GITHUB_PAT=your_token_here
或创建 .env 文件:
GITHUB_PAT=your_token_here
.env 文件# 添加到 .gitignore 以防止意外提交
echo ".env"
>> .gitignore
# CLI 用法
claude mcp add github -e GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_PAT -- docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-server
# 在配置文件中(如支持)
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "$GITHUB_PAT"
}
[!NOTE] 环境变量支持因宿主应用和 IDE 而异。某些应用程序(如 Windsurf)要求在配置文件中硬编码令牌。
使用 Docker 时,您可以将工具集作为环境变量传递:
docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN= \
-e GITHUB_TOOLSETS="repos,issues,pull_requests,actions,code_security" \
ghcr.io/github/github-mcp-server
使用 Docker 时,您可以将特定工具作为环境变量传递。您也可以将工具与工具集组合使用:
# 仅使用工具
docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN= \
-e GITHUB_TOOLS="get_file_contents,issue_read,create_pull_request" \
ghcr.io/github/github-mcp-server
# 工具与工具集组合使用(叠加)
docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN= \
-e GITHUB_TOOLSETS="repos,issues" \
-e GITHUB_TOOLS="get_gist" \
ghcr.io/github/github-mcp-server
特殊工具集 all 可用于启用所有可用工具集,无论其他任何配置如何:
./github-mcp-server --toolsets all
或使用环境变量:
GITHUB_TOOLSETS="all" ./github-mcp-server
默认工具集 default 是在未指定任何工具集时传递给服务器的配置。
默认配置包括:
要保留默认配置并添加其他工具集:
GITHUB_TOOLSETS="default,stargazers" ./github-mcp-server
本地 GitHub MCP Server 提供内测版(insiders),可提前访问新功能和实验性工具。
./github-mcp-server --insiders
GITHUB_INSIDERS=true ./github-mcp-server
使用 Docker 时:
docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN= \
-e GITHUB_INSIDERS=true \
ghcr.io/github/github-mcp-server
以下是可用的工具集:
| 工具集 | 描述 | |
|---|---|---|
context | 强烈推荐:提供当前用户和您操作的 GitHub 上下文相关信息的工具 | |
actions | GitHub Actions 工作流和 CI/CD 操作相关工具 | |
code_security | 代码安全相关工具,例如 GitHub Code Scanning | |
copilot | Copilot 相关工具 | |
dependabot | Dependabot 相关工具 | |
discussions | GitHub Discussions 相关工具 | |
gists | GitHub Gist 相关工具 | |
git | 用于底层 Git 操作的 GitHub Git API 相关工具 | |
issues | GitHub Issues 相关工具 | |
labels | GitHub Labels 相关工具 | |
notifications | GitHub Notifications 相关工具 | |
orgs | GitHub Organization 相关工具 | |
projects | GitHub Projects 相关工具 | |
pull_requests | GitHub Pull Request 相关工具 | |
repos | GitHub Repository 相关工具 | |
secret_protection | 密钥保护相关工具,例如 GitHub Secret Scanning | |
security_advisories | 安全公告相关工具 | |
stargazers | GitHub Stargazers 相关工具 | |
users | GitHub User 相关工具 |
| 工具集 | 描述 |
|---|---|
copilot | Copilot 相关工具(例如 Copilot Coding Agent) |
copilot_spaces | Copilot Spaces 相关工具 |
github_support_docs_search | 搜索文档以解答 GitHub 产品和支持问题 |
actions_get - 获取 GitHub Actions 资源(工作流、工作流运行、作业和制品)的详细信息
repomethod:要执行的方法(字符串,必填)owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)resource_id:资源的唯一标识符。根据提供的 "method" 不同而有所变化,请确保提供正确的 ID:
actions_list - 列出仓库中的 GitHub Actions 工作流
repomethod:要执行的操作(字符串,必填)owner:仓库所有者(字符串,必填)page:分页页码(默认:1)(数字,可选)per_page:每页结果数(默认:30,最大值:100)(数字,可选)repo:仓库名称(字符串,必填)resource_id:资源的唯一标识符。根据提供的 "method" 不同而有所变化,请确保提供正确的 ID:
workflow_jobs_filter:工作流作业过滤器。仅在 method 为 'list_workflow_jobs' 时使用(对象,可选)workflow_runs_filter:工作流运行过滤器。仅在 method 为 'list_workflow_runs' 时使用(对象,可选)get_code_scanning_alert - 获取代码扫描警报
所需OAuth作用域:security_events
接受的OAuth作用域:repo、security_events
alertNumber:警报编号。(数字,必填)
owner:仓库所有者。(字符串,必填)
repo:仓库名称。(字符串,必填)
list_code_scanning_alerts - 列出代码扫描警报
所需OAuth作用域:security_events
接受的OAuth作用域:repo、security_events
owner:仓库所有者。(字符串,必填)
page:分页页码(最小值1)(数字,可选)
perPage:分页每页结果数(最小值1,最大值100)(数字,可选)
ref:要列出结果的Git引用。(字符串,可选)
repo:仓库名称。(字符串,必填)
severity:按严重性筛选代码扫描警报(字符串,可选)
state:按状态筛选代码扫描警报。默认为“open”(字符串,可选)
tool_name:用于代码扫描的工具名称。(字符串,可选)
get_me - 获取我的用户资料
无需参数
get_team_members - 获取团队成员
所需OAuth作用域:read:org
接受的OAuth作用域:admin:org、read:org、write:org
org:包含团队的组织登录名(所有者)。(字符串,必填)
team_slug:团队标识符(字符串,必填)
get_teams - 获取团队
所需OAuth作用域:read:org
接受的OAuth作用域:admin:org、read:org、write:org
user:要获取团队的用户名。如果未提供,则使用已认证用户。(字符串,可选)
assign_copilot_to_issue - 将Copilot分配给问题
所需OAuth作用域:repo
base_ref:代理开始工作的Git引用(例如分支)。如果未指定,默认为仓库的默认分支(字符串,可选)
custom_instructions:可选的自定义指令,用于在问题正文之外指导代理。使用此参数提供问题描述中未包含的额外上下文、约束或指导(字符串,可选)
issue_number:问题编号(数字,必填)
owner:仓库所有者(字符串,必填)
repo:仓库名称(字符串,必填)
request_copilot_review - 请求Copilot审核
所需OAuth作用域:repo
owner:仓库所有者(字符串,必填)
pullNumber:拉取请求编号(数字,必填)
repo:仓库名称(字符串,必填)
get_dependabot_alert - 获取Dependabot警报
所需OAuth作用域:security_events
接受的OAuth作用域:repo、security_events
alertNumber:警报编号。(数字,必填)
owner:仓库所有者。(字符串,必填)
repo:仓库名称。(字符串,必填)
list_dependabot_alerts - 列出Dependabot警报
所需OAuth作用域:security_events
接受的OAuth作用域:repo、security_events
owner:仓库所有者。(字符串,必填)
page:分页页码(最小值1)(数字,可选)
perPage:分页每页结果数(最小值1,最大值100)(数字,可选)
repo:仓库名称。(字符串,必填)
severity:按严重性筛选Dependabot警报(字符串,可选)
state:按状态筛选Dependabot警报。默认为“open”(字符串,可选)
discussion_comment_write - 管理讨论评论
所需OAuth作用域:repo
body:评论内容(“add”、“reply”和“update”方法必填)(字符串,可选)
commentNodeID:讨论评论的Node ID(“reply”、“update”、“delete”、“mark_answer”和“unmark_answer”方法必填)。对于“reply”,这是要回复的顶级评论;GitHub Discussions仅支持一级嵌套。(字符串,可选)
discussionNumber:讨论编号(“add”和“reply”方法必填)(数字,可选)
method:对讨论评论执行的写操作。
选项包括:
'add' - 向讨论添加新的顶级评论。
'reply' - 回复顶级讨论评论(GitHub Discussions仅支持一级嵌套)。
'update' - 更新现有讨论评论。
'delete' - 删除讨论评论。
'mark_answer' - 将讨论评论标记为答案(仅适用于问答)。
'unmark_answer' - 取消将讨论评论标记为答案(仅适用于问答)。 (字符串,必填)
owner:仓库所有者(“add”和“reply”方法必填)(字符串,可选)
repo:仓库名称(“add”和“reply”方法必填)(字符串,可选)
get_discussion - 获取讨论
所需OAuth作用域:repo
discussionNumber:讨论编号(数字,必填)
owner:仓库所有者(字符串,必填)
repo:仓库名称(字符串,必填)
create_gist - 创建 Gist
gistcontent:用于创建简单单文件 Gist 的内容(string,必填)description:Gist 的描述(string,可选)filename:用于创建简单单文件 Gist 的文件名(string,必填)public:Gist 是否公开(boolean,可选)get_gist - 获取 Gist 内容
gist_id:Gist 的 ID(string,必填)list_gists - 列出 Gists
page:分页页码(最小值 1)(number,可选)perPage:分页每页结果数(最小值 1,最大值 100)(number,可选)since:仅返回此时间之后更新的 Gists(ISO 8601 时间戳)(string,可选)username:GitHub 用户名(省略则返回已认证用户的 Gists)(string,可选)update_gist - 更新 Gist
gistcontent:文件内容(string,必填)description:Gist 的更新描述(string,可选)filename:要更新或创建的文件名(string,必填)gist_id:要更新的 Gist 的 ID(string,必填)repoowner:仓库所有者(用户名或组织)(string,必填)path_filter:用于过滤树结果的可选路径前缀(例如,'src/' 仅显示 src 目录中的文件)(string,可选)recursive:将此参数设置为 true 会返回树引用的对象或子树。默认为 false(boolean,可选)repo:仓库名称(string,必填)tree_sha:树的 SHA1 值或引用(分支或标签)名称。默认为仓库的默认分支(string,可选)add_issue_comment - 为议题添加评论
repobody:评论内容(string,必填)issue_number:要评论的议题编号(number,必填)owner:仓库所有者(string,必填)repo:仓库名称(string,必填)get_label - 从仓库获取特定标签
reponame:标签名称。(string,必填)owner:仓库所有者(用户名或组织名称)(string,必填)repo:仓库名称(string,必填)issue_read - 获取议题详情
repoissue_number:议题编号(number,必填)method:对单个议题执行的读取操作。
选项包括:
owner:仓库所有者(string,必填)page:分页页码(最小值 1)(number,可选)perPage:分页每页结果数(最小值 1,最大值 100)(number,可选)repo:仓库名称(string,必填)issue_write - 创建或更新议题
repoassignees:要分配给此议题的用户名(string[],可选)body:议题正文内容(string,可选)duplicate_of:此议题所重复的议题编号。仅在 state_reason 为 'duplicate' 时使用。(number,可选)issue_number:要更新的议题编号(number,可选)labels:要应用于此议题的标签(string[],可选)method:对单个议题执行的写入操作。
选项包括:
milestone:里程碑编号(number,可选)owner:仓库所有者(string,必填)repo:仓库名称(string,必填)state:新状态(string,可选)state_reason:状态变更的原因。仅在状态变更时生效。(string,可选)title:议题标题(string,可选)type:此议题的类型。仅在仓库配置了议题类型时使用。使用 list_issue_types 工具获取组织的有效类型值。如果仓库不支持议题类型,省略此参数。(string,可选)list_issue_types - 列出可用议题类型
read:orgadmin:org、read:org、write:orgowner:仓库的组织所有者(string,必填)list_issues - 列出议题
repoafter:分页游标。对于 GraphQL API,使用前一页 PageInfo 中的 endCursor。(string,可选)direction:排序方向。如果提供,还需提供 'orderBy'。(string,可选)labels:按标签过滤(string[],可选)orderBy:议题排序字段。如果提供,还需提供 'direction'。(string,可选)owner:仓库所有者(string,必填)perPage:分页每页结果数(最小值 1,最大值 100)(number,可选)repo:仓库名称(string,必填)since:按日期过滤(ISO 8601 时间戳)(string,可选)state:按状态过滤,未提供时默认返回开放和已关闭的议题(string,可选)search_issues - 搜索议题
所需OAuth权限范围:repo
order:排序顺序(字符串,可选)
owner:可选的仓库所有者。如果与repo一同提供,仅列出该仓库的议题。(字符串,可选)
page:分页页码(最小值1)(数字,可选)
perPage:分页每页结果数(最小值1,最大值100)(数字,可选)
query:使用GitHub议题搜索语法的搜索查询(字符串,必选)
repo:可选的仓库名称。如果与owner一同提供,仅列出该仓库的议题。(字符串,可选)
sort:按分类匹配数排序的字段,默认为最佳匹配(字符串,可选)
sub_issue_write - 修改子议题
所需OAuth权限范围:repo
after_id:要排在其后的子议题ID(必须指定after_id或before_id)(数字,可选)
before_id:要排在其前的子议题ID(必须指定after_id或before_id)(数字,可选)
issue_number:父议题编号(数字,必选)
method:对单个子议题执行的操作
选项包括:
'add' - 向GitHub仓库中的父议题添加子议题。
'remove' - 从GitHub仓库中的父议题移除子议题。
'reprioritize' - 更改GitHub仓库中父议题内子议题的顺序。使用'after_id'或'before_id'指定新位置。 (字符串,必选)
owner:仓库所有者(字符串,必选)
replace_parent:为true时,替换子议题当前的父议题。仅与'add'方法一同使用。(布尔值,可选)
repo:仓库名称(字符串,必选)
sub_issue_id:要添加的子议题ID。ID与议题编号不同(数字,必选)
标签
get_label - 获取仓库中的特定标签
所需OAuth权限范围:repo
name:标签名称。(字符串,必选)
owner:仓库所有者(用户名或组织名)(字符串,必选)
repo:仓库名称(字符串,必选)
label_write - 仓库标签的写操作
所需OAuth权限范围:repo
color:标签颜色,为6位十六进制代码,不带'#'前缀(例如'f29513')。'create'操作必选,'update'操作可选。(字符串,可选)
description:标签描述文本。'create'和'update'操作可选。(字符串,可选)
method:要执行的操作:'create'(创建)、'update'(更新)或'delete'(删除)(字符串,必选)
name:标签名称 - 所有操作都必选(字符串,必选)
new_name:标签的新名称(仅用于'update'方法重命名)(字符串,可选)
owner:仓库所有者(用户名或组织名)(字符串,必选)
repo:仓库名称(字符串,必选)
list_label - 列出仓库中的标签
所需OAuth权限范围:repo
owner:仓库所有者(用户名或组织名)- 所有操作都必选(字符串,必选)
repo:仓库名称 - 所有操作都必选(字符串,必选)
通知
dismiss_notification - 关闭通知
所需OAuth权限范围:notifications
state:通知的新状态(read/done)(字符串,必选)
threadID:通知线程ID(字符串,必选)
get_notification_details - 获取通知详情
所需OAuth权限范围:notifications
notificationID:通知ID(字符串,必选)
list_notifications - 列出通知
所需OAuth权限范围:notifications
before:仅显示在指定时间之前更新的通知(ISO 8601格式)(字符串,可选)
filter:筛选通知,除非指定否则使用默认值。已读通知是用户已确认的通知。参与通知是用户直接参与的通知,例如他们评论或创建的议题或拉取请求。(字符串,可选)
owner:可选的仓库所有者。如果与repo一同提供,仅列出该仓库的通知。(字符串,可选)
page:分页页码(最小值1)(数字,可选)
perPage:分页每页结果数(最小值1,最大值100)(数字,可选)
repo:可选的仓库名称。如果与owner一同提供,仅列出该仓库的通知。(字符串,可选)
since:仅显示在指定时间之后更新的通知(ISO 8601格式)(字符串,可选)
manage_notification_subscription - 管理通知订阅
所需OAuth权限范围:notifications
action:要执行的操作:忽略、关注或删除通知订阅。(字符串,必选)
notificationID:通知线程ID。(字符串,必选)
manage_repository_notification_subscription - 管理仓库通知订阅
所需OAuth权限范围:notifications
action:要执行的操作:忽略、关注或删除仓库通知订阅。(字符串,必选)
owner:仓库的账户所有者。(字符串,必选)
repo:仓库名称。(字符串,必选)
mark_all_notifications_read - 将所有通知标记为已读
所需OAuth权限范围:notifications
lastReadAt:描述最后检查通知的时间点(可选)。默认值:现在(字符串,可选)
owner:可选的仓库所有者。如果与repo一同提供,仅将该仓库的通知标记为已读。(字符串,可选)
repo:可选的仓库名称。如果与owner一同提供,仅将该仓库的通知标记为已读。(字符串,可选)
组织
read:orgadmin:org、read:org、write:orgorder:排序顺序(字符串,可选)page:分页页码(最小值1)(数字,可选)perPage:分页每页结果数(最小值1,最大值100)(数字,可选)query:组织搜索查询。示例:'microsoft'、'location:california'、'created:>=2025-01-01'。搜索会自动限定为type:org。(字符串,必选)sort:按分类排序的字段(字符串,可选)项目
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
不支持 push
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务