如果你使用 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代理、助手和聊天机器人能够读取仓库和代码文件、管理议题和拉取请求(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的全面说明和示例。
未指定工具集时,将使用默认工具集。
内测模式
提前体验新功能! 远程服务器提供内测版本,可提前访问新功能和实验性工具。
使用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。安全处理PAT
如需快速安装,可使用上方的一键安装按钮。完成安装流程后,切换代理模式(位于 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}"
}
}
}
}
}
您还可以选择在工作区的 .vscode/mcp.json 文件中添加类似示例(即不包含 mcp 键)。这将允许您与其他接受相同格式的主机应用共享配置。
不含 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 服务器支持通过 --toolsets 标志启用或禁用特定功能组。这允许您控制 AI 工具可访问的 GitHub API 功能。仅启用所需的工具集有助于 LLM 进行工具选择并减小上下文大小。
工具集不仅限于工具。相关的 MCP 资源和提示(Prompts)也会在适用时包含在内。
未指定工具集时,将使用默认工具集。
指定工具集
要指定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工具。
[!IMPORTANT] 重要说明:
- 工具和工具集可以一起使用
- 只读模式优先:如果设置了
--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_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产品和支持问题 |
Actions
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' - 将讨论评论标记为答案(仅 Q&A)。
'unmark_answer' - 取消将讨论评论标记为答案(仅 Q&A)。 (字符串,必填)
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 - 创建或更新issue/拉取请求
Required OAuth Scopes:repo
assignees:要分配给此issue的用户名(string[],可选)
body:issue正文内容(string,可选)
duplicate_of:此issue所重复的issue编号。仅当state_reason为'duplicate'时使用。(number,可选)
issue_number:要更新的issue编号(number,可选)
labels:要应用于此issue的标签(string[],可选)
method:对单个issue执行的写入操作。
选项包括:
'create' - 创建新issue。
'update' - 更新现有issue。 (string,必填)
milestone:里程碑编号(number,可选)
owner:仓库所有者(string,必填)
repo:仓库名称(string,必填)
state:新状态(string,可选)
state_reason:状态变更原因。仅在状态变更时生效。(string,可选)
title:issue标题(string,可选)
type:此issue的类型。仅在仓库已配置issue类型时使用。使用list_issue_types工具获取组织的有效类型值。如果仓库不支持issue类型,请省略此参数。(string,可选)
list_issue_types - 列出可用的issue类型
Required OAuth Scopes:read:org
Accepted OAuth Scopes:admin:org、read:org、write:org
owner:仓库的组织所有者(string,必填)
list_issues - 列出issues
Required OAuth Scopes:repo
after:分页游标。使用上一个响应中的游标。(string,可选)
direction:排序方向。如果提供,还需提供'orderBy'。(string,可选)
labels:按标签筛选(string[],可选)
orderBy:按字段对issues排序。如果提供,还需提供'direction'。(string,可选)
owner:仓库所有者(string,必填)
perPage:分页结果每页数量(最小值1,最大值100)(number,可选)
repo:仓库名称(string,必填)
since:按日期筛选(ISO 8601时间戳)(string,可选)
state:按状态筛选,未提供时默认返回开放和已关闭的issues(string,可选)
search_issues - 搜索issues
Required OAuth Scopes:repo
order:排序顺序(string,可选)
owner:可选的仓库所有者。如果与repo一起提供,仅列出此仓库的issues。(string,可选)
page:分页页码(最小值1)(number,可选)
perPage:分页结果每页数量(最小值1,最大值100)(number,可选)
query:使用GitHub issues搜索语法的搜索查询(string,必填)
repo:可选的仓库名称。如果与owner一起提供,仅列出此仓库的issues。(string,可选)
sort:按匹配类别数量排序字段,默认为最佳匹配(string,可选)
sub_issue_write - 更改子issue
Required OAuth Scopes:repo
after_id:要排在其后的子issue ID(应指定after_id或before_id中的一个)(number,可选)
before_id:要排在其前的子issue ID(应指定after_id或before_id中的一个)(number,可选)
issue_number:父issue的编号(number,必填)
method:对单个子issue执行的操作
选项包括:
'add' - 向GitHub仓库中的父issue添加子issue。
'remove' - 从GitHub仓库中的父issue移除子issue。
'reprioritize' - 更改GitHub仓库中父issue内子issue的顺序。使用'after_id'或'before_id'指定新位置。 (string,必填)
owner:仓库所有者(string,必填)
replace_parent:为true时,替换子issue当前的父issue。仅与'add'方法一起使用。(boolean,可选)
repo:仓库名称(string,必填)
sub_issue_id:要添加的子issue ID。ID与issue编号不同(number,必填)
get_label - 从仓库获取特定标签
Required OAuth Scopes:repo
name:标签名称。(string,必填)
owner:仓库所有者(用户名或组织名称)(string,必填)
repo:仓库名称(string,必填)
label_write - 对仓库标签执行写入操作
Required OAuth Scopes: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 - 列出仓库中的标签
Required OAuth Scopes:repo
owner:仓库所有者(用户名或组织名称)- 所有操作都必填(string,必填)
repo:仓库名称 - 所有操作都必填(string,必填)
dismiss_notification - 关闭通知
Required OAuth Scopes:notifications
state:通知的新状态(read/done)(string,必填)
threadID:通知线程的ID(string,必填)
get_notification_details - 获取通知详情
Required OAuth Scopes:notifications
notificationID:通知的ID(string,必填)
list_notifications - 列出通知
Required OAuth Scopes:notifications
before:仅显示在指定时间之前更新的通知(ISO 8601格式)(string,可选)
filter:筛选通知,未指定时使用默认值。已读通知是指用户已确认的通知。参与通知是指用户直接参与的通知,例如他们评论或创建的issue或拉取请求。(string,可选)
owner:可选的仓库所有者。如果与repo一起提供,仅列出此仓库的通知。(string,可选)
page:分页页码(最小值1)(number,可选)
perPage:分页结果每页数量(最小值1,最大值100)(number,可选)
repo:可选的仓库名称。如果与owner一起提供,仅列出此仓库的通知。(string,可选)
since:仅显示在指定时间之后更新的通知(ISO 8601格式)(string,可选)
来自真实用户的反馈,见证轩辕镜像的优质服务