如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
GitHub MCP Server 将AI工具直接连接到GitHub平台。这使AI代理、助手和聊天机器人能够读取仓库和代码文件、管理Issue和PR、分析代码并自动化工作流。所有这些都通过自然语言交互实现。
专为希望将其AI工具连接到GitHub上下文和功能的开发人员构建,支持从简单的自然语言查询到复杂的多步骤代理工作流。
如需快速安装,请使用上方的一键安装按钮之一。完成该流程后,切换代理模式(位于Copilot Chat文本输入框旁),服务器将启动。确保使用VS Code 1.101或更高版本以支持远程MCP和OAuth。
或者,要手动配置VS Code,请从以下示例中选择适当的JSON块并添加到您的主机配置中:
使用OAuth(VS Code 1.101或更高版本)
{
"servers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/"
}
}
}
使用GitHub PAT(VS Code 1.101或更高版本)
{
"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的全面说明和示例。
未指定工具集时,将使用默认工具集。
预览版模式(Insiders Mode)
[!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
具有数据驻留的GitHub Enterprise Cloud(ghe.com)
GitHub Enterprise Cloud也可以使用远程服务器。
使用GitHub PAT令牌的https://octocorp.ghe.com示例:
{
...
"github-octocorp": {
"type": "http",
"url": "https://copilot-api.octocorp.ghe.com/mcp",
"headers": {
"Authorization": "Bearer ${input:github_mcp_pat}"
}
},
...
}
[!NOTE] 在VS Code和GitHub Copilot中使用GitHub Enterprise的OAuth时,您还需要配置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不支持远程服务器托管。请参考本地服务器配置中的GitHub Enterprise Server和具有数据驻留的Enterprise Cloud(ghe.com)。
ghcr.io/github/github-mcp-server。该镜像是公开的;如果拉取时出现错误,可能是令牌已过期,需要执行docker logout ghcr.io。如需快速安装,请使用上方的一键安装按钮之一。完成该流程后,切换代理模式(位于 Copilot 聊天文本输入框旁),服务器将启动。
有关在 VS Code 中使用 MCP 服务器工具的更多信息,请参阅代理模式文档。
将以下 JSON 块添加到 IDE 的 MCP 设置中。
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "github_token",
"description": "GitHub Personal Access Token",
"password": true
}
],
"servers": {
"github": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"ghcr.io/github/github-mcp-server"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}"
}
}
}
}
}
您还可以选择将类似示例(即不包含 mcp 键)添加到工作区中的 .vscode/mcp.json 文件。这将允许您与接受相同格式的其他主机应用程序共享配置。
不包含 MCP 键的 JSON 块示例
{
"inputs": [
{
"type": "promptString",
"id": "github_token",
"description": "GitHub Personal Access Token",
"password": true
}
],
"servers": {
"github": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"ghcr.io/github/github-mcp-server"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}"
}
}
}
}
对于其他 MCP 主机应用程序,请参考我们的安装指南:
有关所有安装选项的完整概述,请参阅我们的 安装指南索引。
[!NOTE] 任何支持本地 MCP 服务器的主机应用程序都应能访问本地 GitHub MCP 服务器。但是,集成的具体配置流程、语法和稳定性会因主机应用程序而异。虽然许多应用程序可能遵循与上述示例类似的格式,但这并不能保证。请参考您的主机应用程序文档,了解正确的 MCP 配置语法和设置流程。
如果您没有 Docker,可以使用 go build 在 cmd/github-mcp-server 目录中构建二进制文件,并使用 github-mcp-server stdio 命令,同时将 GITHUB_PERSONAL_ACCESS_TOKEN 环境变量设置为您的令牌。要指定构建的输出位置,请使用 -o 标志。您应将服务器配置为使用构建的可执行文件作为其 command。例如:
{
"mcp": {
"servers": {
"github": {
"command": "/path/to/github-mcp-server",
"args": ["stdio"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": " "
}
}
}
}
}
github-mcp-server 二进制文件包含一些有助于调试和探索服务器的 CLI 子命令。
github-mcp-server tool-search " " 按名称、描述和输入参数名称搜索工具。使用 --max-results 返回更多匹配项。示例(彩色输出需要 TTY;在 Docker 中运行时使用 docker run -t(或 -it)):
docker run -it --rm ghcr.io/github/github-mcp-server tool-search "issue" --max-results 5
github-mcp-server tool-search "issue" --max-results 5
GitHub MCP Server 支持通过 --toolsets 标志启用或禁用特定功能组。这使您能够控制 AI 工具可使用哪些 GitHub API 功能。仅启用所需的工具集可以帮助 LLM 进行工具选择并减少上下文大小。
工具集不仅限于工具。相关的 MCP 资源和提示(如适用)也包含在内。
未指定工具集时,将使用默认工具集。
指定工具集
要指定希望LLM可用的工具集,您可以通过两种方式传递允许列表:
github-mcp-server --toolsets repos,issues,pull_requests,actions,code_security
GITHUB_TOOLSETS="repos,issues,pull_requests,actions,code_security" ./github-mcp-server
如果同时提供了环境变量和命令行参数,GITHUB_TOOLSETS 环境变量的优先级更高。
指定单个工具
您还可以使用 --tools 标志配置特定工具。工具可以独立使用,也可以与工具集结合使用以实现细粒度控制。
github-mcp-server --tools get_file_contents,issue_read,create_pull_request
GITHUB_TOOLS="get_file_contents,issue_read,create_pull_request" ./github-mcp-server
github-mcp-server --toolsets repos,issues --tools get_gist
这会注册来自 repos 和 issues 工具集的所有工具,以及 get_gist。
重要说明:
--read-only,即使通过 --tools 明确请求,写入工具也会被跳过get_file_contents,而非 getFileContents)。无效的工具名称会导致服务器启动失败并显示错误消息使用 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" 工具集
可以提供特殊工具集 all 以启用所有可用工具集,无论其他配置如何:
./github-mcp-server --toolsets all
或使用环境变量:
GITHUB_TOOLSETS="all" ./github-mcp-server
"default" 工具集
默认工具集 default 是在未指定工具集时传递给服务器的配置。
默认配置包括:
要保留默认配置并添加其他工具集:
GITHUB_TOOLSETS="default,stargazers" ./github-mcp-server
本地 GitHub MCP Server 提供内测版本,可提前访问新功能和实验性工具。
./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_quality | GitHub 代码质量相关工具 | |
code_security | 代码安全相关工具,例如 GitHub 代码扫描 | |
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 密钥扫描 | |
security_advisories | 安全公告相关工具 | |
stargazers | GitHub Stargazers 相关工具 | |
users | GitHub User 相关工具 |
| 工具集 | 描述 |
|---|---|
copilot | Copilot 相关工具(例如 Copilot Coding Agent) |
copilot_spaces | Copilot Spaces 相关工具 |
github_support_docs_search | 搜索文档以回答 GitHub 产品和支持问题 |
操作
repomethod:要执行的方法(字符串,必填)owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)resource_id:资源的唯一标识符。其值会根据提供的 "method" 而变化,因此请确保提供正确的 ID: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:仓库名称(字符串,必填)
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:仓库名称(字符串,必填)
get_discussion_comments - 获取讨论评论
所需OAuth范围:repo
after:分页游标。使用上一个响应中的游标。(字符串,可选)
discussionNumber:讨论编号(数字,必填)
includeReplies:当为true时,每个顶级评论将包含嵌套的回复(每条评论最多100条回复,这是GitHub API的上限)。默认为false。(布尔值,可选)
owner:仓库所有者(字符串,必填)
perPage:分页结果每页数量(最小值1,最大值100)(数字,可选)
repo:仓库名称(字符串,必填)
list_discussion_categories - 列出讨论分类
所需OAuth范围:repo
owner:仓库所有者(字符串,必填)
repo:仓库名称。如果未提供,将在组织级别查询讨论分类。(字符串,可选)
list_discussions - 列出讨论
所需OAuth范围:repo
after:分页游标。使用上一个响应中的游标。(字符串,可选)
category:可选的讨论分类ID筛选。如果提供,仅列出具有此分类的讨论。(字符串,可选)
direction:排序方向。(字符串,可选)
orderBy:讨论排序字段。如果提供,还需提供'direction'。(字符串,可选)
owner:仓库所有者(字符串,必填)
perPage:分页结果每页数量(最小值1,最大值100)(数字,可选)
repo:仓库名称。如果未提供,将在组织级别查询讨论。(字符串,可选)
Gists
create_gist - 创建Gist
所需OAuth范围:gist
content:简单单文件Gist创建的内容(字符串,必填)
description:Gist的描述(字符串,可选)
filename:简单单文件Gist创建的文件名(字符串,必填)
public:Gist是否公开(布尔值,可选)
get_gist - 获取Gist内容
gist_id:Gist的ID(字符串,必填)
list_gists - 列出Gists
page:分页页码(最小值1)(数字,可选)
perPage:分页结果每页数量(最小值1,最大值100)(数字,可选)
since:仅返回此时间之后更新的Gist(ISO 8601时间戳)(字符串,可选)
username:GitHub用户名(省略则返回已认证用户的Gist)(字符串,可选)
update_gist - 更新Gist
所需OAuth范围:gist
content:文件内容(字符串,必填)
description:Gist的更新描述(字符串,可选)
filename:要更新或创建的文件名(字符串,必填)
gist_id:要更新的Gist的ID(字符串,必填)
Git
repoowner:仓库所有者(用户名或组织)(字符串,必填)path_filter:可选的路径前缀,用于过滤树结果(例如,'src/'仅显示src目录中的文件)(字符串,可选)recursive:将此参数设置为true会返回树引用的对象或子树。默认为false(布尔值,可选)repo:仓库名称(字符串,必填)tree_sha:树的SHA1值或引用(分支或标签)名称。默认为仓库的默认分支(字符串,可选)Issues
add_issue_comment - 向议题或拉取请求添加评论
所需OAuth范围:repo
body:评论内容(字符串,必填)
issue_number:要评论的议题编号(数字,必填)
owner:仓库所有者(字符串,必填)
repo:仓库名称(字符串,必填)
get_label - 从仓库获取特定标签
所需OAuth范围:repo
name:标签名称。(字符串,必填)
owner:仓库所有者(用户名或组织名称)(字符串,必填)
repo:仓库名称(字符串,必填)
issue_read - 获取议题详情
所需OAuth范围:repo
issue_number:议题编号(数字,必填)
method:对单个议题执行的读取操作。
选项包括:
owner:仓库所有者(字符串,必填)
page:分页页码(最小值1)(数字,可选)
perPage:分页结果每页数量(最小值1,最大值100)(数字,可选)
repo:仓库名称(字符串,必填)
issue_write - 创建或更新议题/拉取请求
所需OAuth权限范围:repo
assignees:要分配给此议题的用户名(string[],可选)
body:议题正文内容(string,可选)
duplicate_of:此议题所重复的议题编号。仅当state_reason为'duplicate'时使用。(number,可选)
issue_fields:要设置或清除的议题字段值。每个条目需要'field_name'以及以下之一:'value'、'field_option_name'或'delete: true'。(object[],可选)
issue_number:要更新的议题编号(number,可选)
labels:要应用于此议题的标签(string[],可选)
method:对单个议题执行的写入操作。
选项包括:
'create' - 创建新议题。
'update' - 更新现有议题。 (string,必填)
milestone:里程碑编号(number,可选)
owner:仓库所有者(string,必填)
repo:仓库名称(string,必填)
state:新状态(string,可选)
state_reason:状态变更原因。仅在状态变更时生效。(string,可选)
title:议题标题(string,可选)
type:此议题的类型。仅在仓库启用议题类型时使用。使用list_issue_types工具获取此仓库或其所属组织的有效类型值。如果仓库不支持议题类型,请省略此参数。(string,可选)
list_issue_fields - 列出议题字段
所需OAuth权限范围(任一):repo、read:org
接受的OAuth权限范围:admin:org、read:org、repo、write:org
owner:仓库或组织的账户所有者。名称不区分大小写。(string,必填)
repo:仓库名称。提供时,返回此特定仓库的字段(继承自其组织)。省略时,直接返回组织级别的字段。(string,可选)
list_issue_types - 列出可用议题类型
所需OAuth权限范围(任一):repo、read:org
接受的OAuth权限范围:admin:org、read:org、repo、write:org
owner:仓库或组织的账户所有者。(string,必填)
repo:仓库名称。提供时,返回此特定仓库的议题类型。省略时,直接返回组织级别的议题类型。(string,可选)
list_issues - 列出议题
所需OAuth权限范围:repo
after:分页游标。使用上一个响应中的游标。(string,可选)
direction:排序方向。如果提供,还需提供'orderBy'。(string,可选)
field_filters:按自定义议题字段值筛选。每个条目包含field_name和value;服务器会查找该字段并将值强制转换为其类型(单选选项名称、文本、数字或YYYY-MM-DD日期)。(object[],可选)
labels:按标签筛选(string[],可选)
orderBy:按字段对议题排序。如果提供,还需提供'direction'。(string,可选)
owner:仓库所有者(string,必填)
perPage:分页结果每页数量(最小值1,最大值100)(number,可选)
repo:仓库名称(string,必填)
since:按日期筛选(ISO 8601时间戳)(string,可选)
state:按状态筛选,未提供时默认返回开放和已关闭的议题(string,可选)
search_issues - 搜索议题
所需OAuth权限范围:repo
order:排序顺序(string,可选)
owner:可选仓库所有者。如果与repo一起提供,仅列出此仓库的议题。(string,可选)
page:分页页码(最小值1)(number,可选)
perPage:分页结果每页数量(最小值1,最大值100)(number,可选)
query:使用GitHub议题搜索语法的搜索查询(string,必填)
repo:可选仓库名称。如果与owner一起提供,仅列出此仓库的议题。(string,可选)
sort:按匹配类别数量排序字段,默认为最佳匹配(string,可选)
sub_issue_write - 更改子议题
所需OAuth权限范围:repo
after_id:要排在其后的子议题ID(需指定after_id或before_id中的一个)(number,可选)
before_id:要排在其前的子议题ID(需指定after_id或before_id中的一个)(number,可选)
issue_number:父议题编号(number,必填)
method:对单个子议题执行的操作
选项包括:
'add' - 向GitHub仓库的父议题添加子议题。
'remove' - 从GitHub仓库的父议题中移除子议题。
'reprioritize' - 更改GitHub仓库中父议题内子议题的顺序。使用'after_id'或'before_id'指定新位置。 (string,必填)
owner:仓库所有者(string,必填)
replace_parent:为true时,替换子议题当前的父议题。仅与'add'方法一起使用。(boolean,可选)
repo:仓库名称(string,必填)
sub_issue_id:要添加的子议题ID。ID与议题编号不同(number,必填)
标签
get_label - 获取仓库中的特定标签
所需OAuth权限范围:repo
name:标签名称。(string,必填)
owner:仓库所有者(用户名或组织名称)(string,必填)
repo:仓库名称(string,必填)
label_write - 对仓库标签执行写入操作
所需OAuth权限范围:repo
color:标签颜色,为6位十六进制代码,不带'#'前缀(例如,'f29513')。'create'操作必填,'update'操作可选。(string,可选)
description:标签描述文本。'create'和'update'操作可选。(string,可选)
method:要执行的操作:'create'、'update'或'delete'(string,必填)
name:标签名称 - 所有操作都必填(string,必填)
new_name:标签的新名称(仅用于'update'方法重命名)(string,可选)
owner:仓库所有者(用户名或组织名称)(string,必填)
repo:仓库名称(string,必填)
list_label - 列出仓库中的标签
所需OAuth权限范围:repo
owner:仓库所有者(用户名或组织名称) - 所有操作都必填(string,必填)
repo:仓库名称 - 所有操作都必填(string,必填)
通知
dismiss_notification - 关闭通知
所需OAuth权限范围:notifications
state:通知的新状态(read/done)(string,必填)
threadID:通知线程ID(string,必填)
get_notification_details - 获取通知详情
所需OAuth权限范围:notifications
notificationID:通知ID(string,必填)
来自真实用户的反馈,见证轩辕镜像的优质服务