如果你使用 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的全面说明和示例。
未指定工具集时,将使用默认工具集。
预览版模式(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也可使用远程服务器。
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中使用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
为确保您的GitHub PAT安全并可在不同MCP主机间复用:
export GITHUB_PAT=your_token_here
或创建.env文件:
GITHUB_PAT=your_token_here
# 添加到.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)要求在配置文件中硬编码令牌。
repo - 仓库操作read:packages - Docker镜像访问read:org - 组织团队访问chmod 600 ~/.your-app/config.json
标志--gh-host和环境变量GITHUB_HOST可用于设置GitHub Enterprise Server或具有数据驻留的GitHub Enterprise Cloud的主机名。
https:// URI方案为前缀,否则默认使用http://,而GitHub Enterprise Server不支持该方案。https://YOURSUBDOMAIN.ghe.com作为主机名。"github": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"-e",
"GITHUB_HOST",
"ghcr.io/github/github-mcp-server"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}",
"GITHUB_HOST": "https:// "
}
}
如需快速安装,请使用上方的一键安装按钮之一。完成该流程后,切换代理模式(位于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进行工具选择并减少上下文大小。
Toolsets are not limited to Tools. Relevant MCP Resources and Prompts are also included where applicable.
未指定工具集时,将使用默认工具集。
使用 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
Code Security
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:用于代码扫描的工具名称。(字符串,可选)
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:分页游标。对于GraphQL API,使用上一页PageInfo中的endCursor。(字符串,可选)
discussionNumber:讨论编号(数字,必填)
includeReplies:设为true时,每个顶级评论将包含其嵌套的回复(每条评论最多100条回复,这是GitHub API的上限)。默认为false。(布尔值,可选)
owner:仓库所有者(字符串,必填)
perPage:分页结果每页数量(最小1,最大100)(数字,可选)
repo:仓库名称(字符串,必填)
list_discussion_categories - 列出讨论分类
所需OAuth作用域:repo
owner:仓库所有者(字符串,必填)
repo:仓库名称。如果未提供,将在组织级别查询讨论分类。(字符串,可选)
list_discussions - 列出讨论
所需OAuth作用域:repo
after:分页游标。对于GraphQL API,使用上一页PageInfo中的endCursor。(字符串,可选)
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: 分页游标。对GraphQL API使用上一页PageInfo中的endCursor。(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' - 更改父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: 要筛选的通知类型,未指定时使用默认值。已读通知是用户已确认的通知。参与通知是用户直接参与的通知,例如他们评论或创建的issues或拉取请求。(string,可选)
owner: 可选的仓库所有者。如果与repo一起提供,仅列出此仓库的通知。(string,可选)
page: 分页页码(最小值1)(number,可选)
perPage: 分页结果数(最小值1,最大值100)(number,可选)
repo: 可选的仓库名称。如果与owner一起提供,仅列出此仓库的通知。(string,可选)
since: 仅显示在指定时间之后更新的通知(ISO 8601格式)(string,可选)
来自真实用户的反馈,见证轩辕镜像的优质服务