GitHub MCP
官方用于MCP兼容AI客户端的官方GitHub MCP服务器,支持仓库搜索、议题、拉取请求、代码上下文及GitHub工作流。
你可以用 GitHub MCP 做什么?
- 仓库探索 — 让您的助手浏览仓库、搜索文件,并使用诸如
get_file_contents之类的工具来理解项目结构。 - 问题与拉取请求管理 — 让您的AI创建、更新和分类处理问题及拉取请求,包括审查代码更改和维护项目看板。
- CI/CD 监控 — 通过自然语言查询,获取 GitHub Actions 工作流运行的洞察,分析构建失败,并管理发布。
- 代码安全分析 — 检查安全发现,审查 Dependabot 警报,并理解整个代码库中的代码模式。
- 团队协作 — 访问讨论、管理通知,并分析团队活动以优化开发流程。
文档
GitHub MCP 服务器
GitHub MCP 服务器将 AI 工具直接连接到 GitHub 平台。这使 AI 代理、助手和聊天机器人能够读取仓库和代码文件、管理 Issue 和 PR、分析代码以及自动化工作流。所有这些都可以通过自然语言交互完成。
使用场景
- 仓库管理:浏览和查询代码、搜索文件、分析提交,并了解您有权访问的任何仓库的项目结构。
- Issue 与 PR 自动化:创建、更新和管理 Issue 与拉取请求。让 AI 帮助分类缺陷、审查代码更改并维护项目看板。
- CI/CD 与工作流智能:监控 GitHub Actions 工作流运行、分析构建失败、管理发布,并深入了解您的开发流水线。
- 代码分析:检查安全发现、审查 Dependabot 警报、理解代码模式,并全面了解您的代码库。
- 团队协作:访问讨论、管理通知、分析团队活动,并为您的团队简化流程。
专为希望将 AI 工具连接到 GitHub 上下文和功能的开发者而构建,从简单的自然语言查询到复杂的多步骤代理工作流。
远程 GitHub MCP 服务器
远程 GitHub MCP 服务器由 GitHub 托管,是快速上手的最简单方法。如果您的 MCP 主机不支持远程 MCP 服务器,不用担心!您可以使用 GitHub MCP 服务器的本地版本 代替。
前提条件
- 支持远程服务器且兼容的 MCP 主机(VS Code 1.101+、Claude Desktop、Cursor、Windsurf 等)
- 任何适用的 已启用的策略
在 VS Code 中安装
如需快速安装,请使用上方的一键安装按钮之一。完成该流程后,切换代理模式(位于 Copilot Chat 文本输入框旁),服务器将启动。请确保您使用的是 VS Code 1.101 或 更高版本 以支持远程 MCP 和 OAuth。
或者,要手动配置 VS Code,请从下方示例中选择相应的 JSON 块,并将其添加到您的主机配置中:
| 使用 OAuth | 使用 GitHub PAT |
|---|---|
| VS Code(版本 1.101 或更高) | |
|
|
在其他 MCP 主机中安装
- Copilot CLI - GitHub Copilot CLI 的安装指南
- 其他 IDE 中的 GitHub Copilot - 在 JetBrains、Visual Studio、Eclipse 和 Xcode 中安装 GitHub Copilot
- Claude 应用程序 - Claude Desktop 和 Claude Code CLI 的安装指南
- Codex - OpenAI Codex 的安装指南
- Cursor - Cursor IDE 的安装指南
- OpenCode - OpenCode 终端代理的安装指南
- Windsurf - Windsurf IDE 的安装指南
- Zed - Zed 编辑器的安装指南
- Rovo Dev CLI - Rovo Dev CLI 的安装指南
注意: 每个 MCP 主机应用程序都需要配置 GitHub App 或 OAuth App,以支持通过 OAuth 进行远程访问。任何支持远程 MCP 服务器的主机应用程序都应支持通过 PAT 认证的远程 GitHub 服务器。配置细节和支持级别因主机而异。请务必参阅主机应用程序的文档以获取更多信息。
配置
工具集配置
有关远程服务器配置、工具集、标头和高级用法的完整详细信息,请参阅 远程服务器文档。该文件提供了在 VS Code 和其他 MCP 主机中连接、自定义和安装远程 GitHub MCP 服务器的全面说明和示例。
当未指定工具集时,将使用 默认工具集。
预览模式
尽早尝试新功能! 远程服务器提供预览版本,可提前访问新功能和实验性工具。
| 使用 URL 路径 | 使用标头 |
|---|---|
|
|
有关更多详细信息和示例,请参阅 远程服务器文档,有关可用功能的完整列表,请参阅 预览功能。
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}"
}
},
...
}
注意: 在 VS Code 和 GitHub Copilot 中将 OAuth 与 GitHub Enterprise 一起使用时,您还需要配置 VS Code 设置以指向您的 GitHub Enterprise 实例 - 请参阅 从 VS Code 进行身份验证
GitHub Enterprise Server
GitHub Enterprise Server 不支持远程服务器托管。请参阅本地服务器配置中的 GitHub Enterprise Server 和具有数据驻留功能的 Enterprise Cloud(ghe.com)。
本地 GitHub MCP 服务器
前提条件
-
要在容器中运行服务器,您需要安装 Docker。
-
Docker 安装完成后,您还需要确保 Docker 正在运行。Docker 镜像可在
ghcr.io/github/github-mcp-server获取。该镜像是公开的;如果在拉取时遇到错误,可能是您的令牌已过期,需要docker logout ghcr.io。 -
身份验证。 在 github.com 上,您无需预先创建任何内容 — 上方的单击按钮会在首次使用时通过 OAuth 登录(基于浏览器的流程;令牌仅保存在内存中)。Docker 按钮会发布一个固定的回调端口(
127.0.0.1:8085),以便容器的登录回调可以访问。有关其工作原理、无头/设备代码回退以及自带 OAuth 或 GitHub App(GitHub Enterprise Server 和ghe.com必需)的信息,请参阅 本地服务器 OAuth 登录。更喜欢使用令牌?您仍然可以通过设置
GITHUB_PERSONAL_ACCESS_TOKEN来使用 GitHub 个人访问令牌 进行身份验证(它优先于 OAuth)。MCP 服务器可以使用许多 GitHub API,因此请启用您愿意授予 AI 工具的权限(要了解有关访问令牌的更多信息,请查看 文档)。
安全处理 PAT
环境变量(推荐)
为了在不同 MCP 主机之间安全地保存和重用您的 GitHub PAT:
-
将您的 PAT 存储在环境变量中
export GITHUB_PAT=your_token_here或创建
.env文件:GITHUB_PAT=your_token_here -
保护您的
.env文件# Add to .gitignore to prevent accidental commits echo ".env" >> .gitignore -
在配置中引用令牌
# CLI usage 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 # In config files (where supported) "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": "$GITHUB_PAT" }
注意: 环境变量支持因主机应用程序和 IDE 而异。某些应用程序(如 Windsurf)需要在配置文件中硬编码令牌。
令牌安全最佳实践
-
最小范围:仅授予必要的权限
repo- 仓库操作read:packages- Docker 镜像访问read:org- 组织团队访问
-
分离令牌:为不同的项目/环境使用不同的 PAT
-
定期轮换:定期更新令牌
-
切勿提交:将令牌排除在版本控制之外
-
文件权限:限制对包含令牌的配置文件的访问
chmod 600 ~/.your-app/config.json
GitHub Enterprise Server 和具有数据驻留功能的 Enterprise Cloud(ghe.com)
标志 --gh-host 和环境变量 GITHUB_HOST 可用于设置
GitHub Enterprise Server 或具有数据驻留功能的 GitHub Enterprise Cloud 的主机名。
- 对于 GitHub Enterprise Server,请在主机名前加上
https://URI 方案。HTTPS 是必需的且强制执行的:拒绝非 HTTPS 主机,以确保凭据永远不会通过明文发送(唯一的例外是回环主机,例如用于本地开发的http://localhost)。 - 对于具有数据驻留功能的 GitHub Enterprise Cloud,请使用
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://<your GHES or ghe.com domain name>"
}
}
安装
在 VS Code 上的 GitHub Copilot 中安装
如需快速安装,请使用上方的一键安装按钮之一。完成该流程后,切换代理模式(位于 Copilot Chat 文本输入框旁),服务器将启动。
有关在 VS Code 的 代理模式文档 中使用 MCP 服务器工具的更多信息。
在其他 IDE(JetBrains、Visual Studio、Eclipse 等)的 GitHub Copilot 中安装
将以下 JSON 块之一添加到您 IDE 的 MCP 设置中。
使用 OAuth 登录(无需创建或存储令牌)。 在 github.com 上,官方镜像已包含应用凭据,因此您无需提供任何凭据:它在首次使用时运行基于浏览器的登录,并将生成的令牌仅保存在内存中。在 Docker 中,这需要将固定的回调端口发布到回环地址,以便容器的登录回调可以访问:
{
"mcp": {
"servers": {
"github": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-p",
"127.0.0.1:8085:8085",
"-e",
"GITHUB_OAUTH_CALLBACK_PORT",
"ghcr.io/github/github-mcp-server"
],
"env": {
"GITHUB_OAUTH_CALLBACK_PORT": "8085"
}
}
}
}
}
有关原生二进制流程(无需固定端口)、无头/设备代码回退、GitHub Enterprise Server / ghe.com 以及自带 OAuth 或 GitHub App 的信息,请参阅 本地服务器 OAuth 登录。
对于非交互式 stdio 部署,请参阅 GitHub App 身份验证。
或使用个人访问令牌进行身份验证。 改为设置 GITHUB_PERSONAL_ACCESS_TOKEN(它优先于 OAuth):
{
"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 主机中安装
对于其他 MCP 主机应用程序,请参阅我们的安装指南:
- Copilot CLI - GitHub Copilot CLI 的安装指南
- 其他 IDE 中的 GitHub Copilot - 在 JetBrains、Visual Studio、Eclipse 和 Xcode 中安装 GitHub Copilot
- Claude Code 和 Claude Desktop - Claude Code 和 Claude Desktop 的安装指南
- Cursor - Cursor IDE 的安装指南
- Google Gemini CLI - Google Gemini CLI 的安装指南
- OpenCode - OpenCode 终端代理的安装指南
- Windsurf - Windsurf IDE 的安装指南
- Zed - Zed 编辑器的安装指南
有关所有安装选项的完整概述,请参阅我们的 安装指南索引。
注意: 任何支持本地 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": "<YOUR_TOKEN>"
}
}
}
}
}
工具配置
GitHub MCP 服务器支持通过 --toolsets 标志启用或禁用特定功能组。这允许您控制哪些 GitHub API 功能可供您的 AI 工具使用。仅启用您需要的工具集可以帮助 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。
重要说明:
- 工具和工具集可以一起使用
- 只读模式优先:如果设置了
--read-only,即使通过--tools明确请求,写入工具也会被跳过 - 工具名称必须完全匹配(例如,
get_file_contents,而不是getFileContents)。无效的工具名称将导致服务器在启动时失败并显示错误消息 - 当工具被重命名时,旧名称会作为别名保留以保持向后兼容性。有关详细信息,请参阅工具重命名。
将工具集与 Docker 结合使用
使用 Docker 时,您可以将工具集作为环境变量传递:
docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN=<your-token> \
-e GITHUB_TOOLSETS="repos,issues,pull_requests,actions,code_security" \
ghcr.io/github/github-mcp-server
将工具与 Docker 结合使用
使用 Docker 时,您可以将特定工具作为环境变量传递。您还可以将工具与工具集组合使用:
# Tools only
docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN=<your-token> \
-e GITHUB_TOOLS="get_file_contents,issue_read,create_pull_request" \
ghcr.io/github/github-mcp-server
# Tools combined with toolsets (additive)
docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN=<your-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 是在未指定工具集时传递给服务器的配置。
默认配置为:
- context
- repos
- issues
- pull_requests
- users
要保持默认配置并添加额外的工具集:
GITHUB_TOOLSETS="default,stargazers" ./github-mcp-server
内部人员模式
本地 GitHub MCP 服务器提供了一个内部人员版本,可提前访问新功能和实验性工具。
-
使用命令行参数:
./github-mcp-server --insiders -
使用环境变量:
GITHUB_INSIDERS=true ./github-mcp-server
使用 Docker 时:
docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN=<your-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 相关工具 | |
copilot_issue_intents | 选择加入的 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 相关工具 |
远程 GitHub MCP 服务器中的额外工具集
| 工具集 | 描述 |
|---|---|
copilot | Copilot 相关工具(例如 Copilot 编码代理) |
copilot_spaces | Copilot Spaces 相关工具 |
github_support_docs_search | 搜索文档以回答 GitHub 产品和支持问题 |
工具

Actions
-
actions_get - 获取 GitHub Actions 资源(工作流、工作流运行、作业和工件)的详细信息
- OAuth 挑战范围:
repo method:要执行的方法(字符串,必填)owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)resource_id:资源的唯一标识符。这将根据提供的“方法”而变化,因此请确保提供正确的 ID:- 为“get_workflow”方法提供工作流 ID 或工作流文件名(例如 ci.yaml)。
- 为“get_workflow_run”、“get_workflow_run_usage”和“get_workflow_run_logs_url”方法提供工作流运行 ID。
- 为“download_workflow_run_artifact”方法提供工件 ID。
- 为“get_workflow_job”方法提供作业 ID。 (字符串,必填)
- OAuth 挑战范围:
-
actions_list - 列出仓库中的 GitHub Actions 工作流
- OAuth 挑战范围:
repo method:要执行的操作(字符串,必填)owner:仓库所有者(字符串,必填)page:分页的页码(默认值:1)(数字,可选)per_page:分页时每页的结果数(默认值:30,最大值:100)(数字,可选)repo:仓库名称(字符串,必填)resource_id:资源的唯一标识符。这将根据提供的“方法”而变化,因此请确保提供正确的 ID:- 不要为“list_workflows”方法提供任何资源 ID。
- 为“list_workflow_runs”方法提供工作流 ID 或工作流文件名(例如 ci.yaml),或省略以列出仓库中的所有工作流运行。
- 为“list_workflow_jobs”和“list_workflow_run_artifacts”方法提供工作流运行 ID。 (字符串,可选)
workflow_jobs_filter:工作流作业的过滤器。仅在方法为“list_workflow_jobs”时使用(对象,可选)workflow_runs_filter:工作流运行的过滤器。仅在方法为“list_workflow_runs”时使用(对象,可选)
- OAuth 挑战范围:
-
actions_run_trigger - 触发 GitHub Actions 工作流操作
- OAuth 挑战范围:
repo inputs:工作流接受的输入。仅用于“run_workflow”方法。(对象,可选)method:要执行的方法(字符串,必填)owner:仓库所有者(字符串,必填)ref:工作流的 git 引用。引用可以是分支或标签名称。“run_workflow”方法必需。(字符串,可选)repo:仓库名称(字符串,必填)run_id:工作流运行的 ID。除“run_workflow”外的所有方法必需。(数字,可选)workflow_id:工作流 ID(数字)或工作流文件名(例如 main.yml、ci.yaml)。“run_workflow”方法必需。(字符串,可选)
- OAuth 挑战范围:
-
get_job_logs - 获取 GitHub Actions 工作流作业日志
- OAuth 挑战范围:
repo failed_only:为 true 时,获取由 run_id 指定的工作流运行中所有失败作业的日志。需要提供 run_id。(布尔值,可选)job_id:工作流作业的唯一标识符。获取单个作业的日志时必需。(数字,可选)owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)return_content:返回实际的日志内容而不是 URL(布尔值,可选)run_id:工作流运行的唯一标识符。当 failed_only 为 true 时需要,以获取运行中所有失败作业的日志。(数字,可选)tail_lines:从日志末尾返回的行数(数字,可选)
- OAuth 挑战范围:

代码质量
- get_code_quality_finding - 获取代码质量发现
- OAuth 挑战范围:
repo findingNumber:发现的编号。(数字,必填)owner:仓库的所有者。(字符串,必填)repo:仓库的名称。(字符串,必填)
- OAuth 挑战范围:

代码安全
-
get_code_scanning_alert - 获取代码扫描警报
- OAuth 挑战范围:
security_events alertNumber:警报的编号。(数字,必填)owner:仓库的所有者。(字符串,必填)repo:仓库的名称。(字符串,必填)
- OAuth 挑战范围:
-
list_code_scanning_alerts - 列出代码扫描警报
- OAuth 挑战范围:
security_events owner:仓库的所有者。(字符串,必填)page:分页页码(最小 1)(数字,可选)perPage:每页结果数(最小 1,最大 100)(数字,可选)ref:要列出的结果的 Git 引用。(字符串,可选)repo:仓库的名称。(字符串,必填)severity:按严重性筛选代码扫描警报(字符串,可选)state:按状态筛选代码扫描警报。默认为打开(字符串,可选)tool_name:用于代码扫描的工具名称。(字符串,可选)
- OAuth 挑战范围:

上下文
-
get_me - 获取我的用户资料
- 无需参数
-
get_team_members - 获取团队成员
- OAuth 挑战范围:
read:org org:包含团队的组织登录名(所有者)。(字符串,必填)team_slug:团队标识(字符串,必填)
- OAuth 挑战范围:
-
get_teams - 获取团队
- OAuth 挑战范围:
read:org user:要获取团队的用户名。如果未提供,则使用已认证的用户。(字符串,可选)
- OAuth 挑战范围:

Copilot
-
assign_copilot_to_issue - 将 Copilot 分配给问题
- OAuth 挑战范围:
repo base_ref:代理开始工作的 Git 引用(例如分支)。如果未指定,默认为仓库的默认分支(字符串,可选)custom_instructions:可选的定制指令,用于在问题正文之外指导代理。使用此选项提供问题描述中未包含的额外上下文、约束或指导(字符串,可选)issue_number:问题编号(数字,必填)owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:
-
request_copilot_review - 请求 Copilot 审查
- OAuth 挑战范围:
repo owner:仓库所有者(字符串,必填)pullNumber:拉取请求编号(数字,必填)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:

Copilot 问题意图
- assign_copilot_to_issue_with_intent - 带意图将 Copilot 分配给问题
- OAuth 挑战范围:
repo base_ref:代理开始工作的 Git 引用(例如分支)。如果未指定,默认为仓库的默认分支。当 is_suggestion 为 true 时忽略(字符串,可选)confidence:您对此选择的信心程度。'HIGH' 表示信号明确或用户明确请求,'MEDIUM' 表示有合理推断但存在一些歧义,'LOW' 表示在有限信号下进行最佳猜测。(字符串,必填)custom_instructions:可选的定制指令,用于在问题正文之外指导代理。当 is_suggestion 为 true 时忽略(字符串,可选)is_suggestion:如果为 true,则记录待处理的 Copilot 分配意图,而不是启动代理。批准后提供启动上下文;在这种情况下,base_ref 和 custom_instructions 将被忽略。(布尔值,必填)issue_number:问题编号(数字,必填)owner:仓库所有者(字符串,必填)rationale:用一句简洁的话解释问题中哪些具体方面导致选择 Copilot。说明具体信号(例如“范围明确且具有清晰验收标准的任务”)。(字符串,必填)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:

Dependabot
-
get_dependabot_alert - 获取 Dependabot 警报
- OAuth 挑战范围:
security_events alertNumber:警报的编号。(数字,必填)owner:仓库的所有者。(字符串,必填)repo:仓库的名称。(字符串,必填)
- OAuth 挑战范围:
-
list_dependabot_alerts - 列出 Dependabot 警报
- OAuth 挑战范围:
security_events after:分页游标。使用上一个响应中的游标。(字符串,可选)owner:仓库的所有者。(字符串,必填)perPage:每页结果数(最小 1,最大 100)(数字,可选)repo:仓库的名称。(字符串,必填)severity:按严重性筛选 Dependabot 警报(字符串,可选)state:按状态筛选 Dependabot 警报。默认为打开(字符串,可选)
- OAuth 挑战范围:

讨论
-
discussion_comment_write - 管理讨论评论
- OAuth 挑战范围:
repo body:评论内容('add'、'reply' 和 'update' 方法必填)(字符串,可选)commentNodeID:讨论评论的节点 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' 方法必填)(字符串,可选)
- OAuth 挑战范围:
-
get_discussion - 获取讨论
- OAuth 挑战范围:
repo discussionNumber:讨论编号(数字,必填)owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:
-
get_discussion_comments - 获取讨论评论
- OAuth 挑战范围:
repo after:分页游标。使用上一个响应中的游标。(字符串,可选)discussionNumber:讨论编号(数字,必填)includeReplies:为 true 时,每个顶级评论将包含嵌套在其中的回复(每个评论最多 100 条回复,这是 GitHub API 的上限)。默认为 false。(布尔值,可选)owner:仓库所有者(字符串,必填)perPage:每页结果数(最小 1,最大 100)(数字,可选)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:
-
list_discussion_categories - 列出讨论类别
- OAuth 挑战范围:
repo owner:仓库所有者(字符串,必填)repo:仓库名称。如果未提供,将在组织级别查询讨论类别。(字符串,可选)
- OAuth 挑战范围:
-
list_discussions - 列出讨论
- OAuth 挑战范围:
repo after:分页游标。使用上一个响应中的游标。(字符串,可选)category:按讨论类别 ID 的可选筛选。如果提供,仅列出具有此类别的讨论。(字符串,可选)direction:排序方向。(字符串,可选)orderBy:按字段对讨论排序。如果提供,还需要提供 'direction'。(字符串,可选)owner:仓库所有者(字符串,必填)perPage:每页结果数(最小 1,最大 100)(数字,可选)repo:仓库名称。如果未提供,将在组织级别查询讨论。(字符串,可选)
- OAuth 挑战范围:

Gists
-
create_gist - 创建 Gist
- OAuth 挑战范围:
gist content:简单单文件 Gist 创建的内容(字符串,必填)description:Gist 的描述(字符串,可选)filename:简单单文件 Gist 创建的文件名(字符串,必填)public:Gist 是否为公开(布尔值,可选)
- OAuth 挑战范围:
-
get_gist - 获取 Gist 内容
gist_id:Gist 的 ID(字符串,必填)
-
list_gists - 列出 Gists
page:分页页码(最小 1)(数字,可选)perPage:每页结果数(最小 1,最大 100)(数字,可选)since:仅列出在此时间之后更新的 Gists(ISO 8601 时间戳)(字符串,可选)username:GitHub 用户名(省略以获取已认证用户的 Gists)(字符串,可选)
-
update_gist - 更新 Gist
- OAuth 挑战范围:
gist content:文件的内容(字符串,必填)description:Gist 的更新描述(字符串,可选)filename:要更新或创建的文件名(字符串,必填)gist_id:要更新的 Gist 的 ID(字符串,必填)
- OAuth 挑战范围:

Git
- **get_repository_tree** - 获取仓库树
- **OAuth 挑战范围**:`repo`
- `owner`:仓库所有者(用户名或组织名)(字符串,必填)
- `path_filter`:可选的路径前缀,用于过滤树结果(例如,'src/' 仅显示 src 目录中的文件)(字符串,可选)
- `recursive`:将此参数设置为 true 将返回树引用的对象或子树。默认为 false(布尔值,可选)
- `repo`:仓库名称(字符串,必填)
- `tree_sha`:树的 SHA1 值或引用(分支或标签)名称。默认为仓库的默认分支(字符串,可选)

议题
-
add_issue_comment - 向议题或拉取请求添加评论
- OAuth 挑战范围:
repo body:评论内容。除非提供了 reaction,否则必填。(字符串,可选)comment_id:要对其做出反应的议题或拉取请求评论的数字 ID。用于对评论做出反应;省略则对议题或拉取请求本身做出反应。不能与 body 同时使用。(整数,可选)issue_number:要评论或做出反应的议题或拉取请求编号。(数字,必填)owner:仓库所有者(字符串,必填)reaction:要添加的表情反应。除非提供了 body,否则必填。(字符串,可选)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:
-
get_label - 从仓库获取特定标签
- OAuth 挑战范围:
repo name:标签名称。(字符串,必填)owner:仓库所有者(用户名或组织名)(字符串,必填)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:
-
issue_read - 获取议题详情
- OAuth 挑战范围:
repo issue_number:议题编号(数字,必填)method:对单个议题执行的读取操作。 选项包括:- get - 获取议题详情。同时返回尽力而为的层级标志(
has_parent、has_children);parent和sub_issues_summary是可选的关联关系摘要,closed_by_pull_requests汇总了配置为以total_count关闭该议题的拉取请求,以及最多 5 个references。 - get_comments - 获取议题评论。
- get_sub_issues - 获取议题的子议题(子项)。
- get_parent - 如果此议题是另一个议题的子议题,则获取父议题。
- get_labels - 获取分配给议题的标签。 (字符串,必填)
- get - 获取议题详情。同时返回尽力而为的层级标志(
owner:仓库所有者(字符串,必填)page:分页页码(最小 1)(数字,可选)perPage:分页每页结果数(最小 1,最大 100)(数字,可选)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:
-
issue_write - 创建或更新议题/拉取请求
- OAuth 挑战范围:
repo assignees:要分配给此议题的用户名(字符串数组,可选)body:议题正文内容(字符串,可选)duplicate_of:此议题重复的议题编号。当 state_reason 为 'duplicate' 时必填。(数字,可选)issue_fields:要设置或清除的议题字段值。每个条目需要 'field_name' 以及 'value'、'field_option_name' 或 'delete: true' 中的恰好一个。(对象数组,可选)issue_number:要更新的议题编号(数字,可选)labels:要应用于此议题的标签(字符串数组,可选)method:对单个议题执行的写入操作。 选项包括:- 'create' - 创建新议题。
- 'update' - 更新现有议题。 (字符串,必填)
milestone:里程碑编号(数字,可选)owner:仓库所有者(字符串,必填)parent_issue_number:父议题的议题编号。仅在 method 为 'create' 时使用,且不能与 issue_fields 同时使用。新议题将在同一操作中创建并附加到此父议题。(数字,可选)parent_owner:父议题的仓库所有者。必须与 parent_repo 一起提供。两者都省略则使用 owner 和 repo。仅在 method 为 'create' 且提供了 parent_issue_number 时使用。(字符串,可选)parent_repo:父议题的仓库名称。必须与 parent_owner 一起提供。两者都省略则使用 owner 和 repo。仅在 method 为 'create' 且提供了 parent_issue_number 时使用。(字符串,可选)repo:仓库名称(字符串,必填)state:新状态(字符串,可选)state_reason:状态变更的原因。除非状态发生变更,否则忽略。(字符串,可选)title:议题标题(字符串,可选)type:此议题的类型。对于更新操作,传入 null 以移除当前类型。仅当此仓库启用了议题类型时使用。使用 list_issue_types 获取此仓库或其所有者组织的有效类型值。如果仓库不支持议题类型,请省略此参数。(字符串 | null,可选)
- OAuth 挑战范围:
-
list_issue_fields - 列出议题字段
- OAuth 挑战范围:
repo、read:org owner:仓库或组织的账户所有者。名称不区分大小写。(字符串,必填)repo:仓库名称。提供时,返回此特定仓库的字段(从其组织继承)。省略时,直接返回组织级字段。(字符串,可选)
- OAuth 挑战范围:
-
list_issue_types - 列出可用的议题类型
- OAuth 挑战范围:
repo、read:org owner:仓库或组织的账户所有者。(字符串,必填)repo:仓库名称。提供时,返回此特定仓库的议题类型。省略时,直接返回组织级议题类型。(字符串,可选)
- OAuth 挑战范围:
-
list_issues - 列出议题
- OAuth 挑战范围:
repo after:分页游标。使用上一个响应中的游标。(字符串,可选)direction:排序方向。如果提供,则还需要提供 'orderBy'。(字符串,可选)field_filters:按自定义议题字段值过滤。每个条目包含 field_name 和 value;服务器查找该字段并将值强制转换为其类型(单选选项名称、文本、数字或 YYYY-MM-DD 日期)。(对象数组,可选)fields:为每个议题返回的字段子集。省略时,返回所有字段。当您只需要特定字段时,使用此选项可减小响应大小;特别是省略 'body' 和 'field_values' 可删除每个结果中最大的数据。(字符串数组,可选)labels:按标签过滤(字符串数组,可选)orderBy:按字段对议题排序。如果提供,则还需要提供 'direction'。(字符串,可选)owner:仓库所有者(字符串,必填)perPage:分页每页结果数(最小 1,最大 100)(数字,可选)repo:仓库名称(字符串,必填)since:按日期过滤(ISO 8601 时间戳)(字符串,可选)state:按状态过滤,未提供时默认返回已打开和已关闭的议题(字符串,可选)
- OAuth 挑战范围:
-
search_issues - 搜索议题
- OAuth 挑战范围:
repo fields:为每个议题结果返回的字段子集。省略时,返回所有字段。当您只需要特定字段时,使用此选项可减小响应大小;特别是省略 'body'、'reactions' 和 'labels' 可删除每个结果中最大的数据。(字符串数组,可选)order:排序顺序(字符串,可选)owner:可选的仓库所有者。如果与 repo 一起提供,则仅列出此仓库的议题。(字符串,可选)page:分页页码(最小 1)(数字,可选)perPage:分页每页结果数(最小 1,最大 100)(数字,可选)query:搜索查询,使用自然语言。当用户给出替代措辞时,将其作为普通词语包含,而不是用 OR 连接。(字符串,必填)repo:可选的仓库名称。如果与 owner 一起提供,则仅列出此仓库的议题。(字符串,可选)sort:按类别匹配数排序的字段,默认为最佳匹配(字符串,可选)
- OAuth 挑战范围:
-
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' - 更改父议题内子议题的顺序。使用 'after_id' 或 'before_id' 指定新位置。
写入议题层级。要将子议题移动到新的父议题,请使用
add配合replace_parent=true;没有可写的父字段。 (字符串,必填)
owner:仓库所有者(字符串,必填)replace_parent:为 true 时,替换子议题当前的父议题。仅与 'add' 方法一起使用。(布尔值,可选)repo:仓库名称(字符串,必填)sub_issue_id:要添加的子议题 ID。ID 与议题编号不同(数字,必填)
- OAuth 挑战范围:

标签
-
get_label - 从仓库获取特定标签
- OAuth 挑战范围:
repo name:标签名称。(字符串,必填)owner:仓库所有者(用户名或组织名)(字符串,必填)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:
-
label_write - 仓库标签的写入操作
- OAuth 挑战范围:
repo color:标签颜色,6 字符十六进制代码,不带 '#' 前缀(例如,'f29513')。'create' 操作必填,'update' 操作可选。(字符串,可选)description:标签描述文本。'create' 和 'update' 操作可选。(字符串,可选)method:要执行的操作:'create'、'update' 或 'delete'(字符串,必填)name:标签名称 - 所有操作必填(字符串,必填)new_name:标签的新名称(仅与 'update' 方法一起使用以重命名)(字符串,可选)owner:仓库所有者(用户名或组织名)(字符串,必填)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:
-
list_label - 从仓库列出标签
- OAuth 挑战范围:
repo owner:仓库所有者(用户名或组织名)- 所有操作必填(字符串,必填)repo:仓库名称 - 所有操作必填(字符串,必填)
- OAuth 挑战范围:

通知
- **dismiss_notification** - 关闭通知
- **OAuth Challenge Scopes**: `notifications`
- `state`: 通知的新状态(已读/已完成)(字符串,必填)
- `threadID`: 通知线程的 ID(字符串,必填)
-
get_notification_details - 获取通知详情
- OAuth Challenge Scopes:
notifications notificationID: 通知的 ID(字符串,必填)
- OAuth Challenge Scopes:
-
list_notifications - 列出通知
- OAuth Challenge Scopes:
notifications before: 仅显示在给定时间之前更新的通知(ISO 8601 格式)(字符串,可选)filter: 过滤通知,除非另有指定,否则使用默认值。已读通知是用户已经确认的通知。参与通知是用户直接参与的通知,例如用户评论过或创建的问题或拉取请求。(字符串,可选)owner: 可选的仓库所有者。如果与 repo 一起提供,则仅列出此仓库的通知。(字符串,可选)page: 分页页码(最小 1)(数字,可选)perPage: 分页每页结果数(最小 1,最大 100)(数字,可选)repo: 可选的仓库名称。如果与 owner 一起提供,则仅列出此仓库的通知。(字符串,可选)since: 仅显示在给定时间之后更新的通知(ISO 8601 格式)(字符串,可选)
- OAuth Challenge Scopes:
-
manage_notification_subscription - 管理通知订阅
- OAuth Challenge Scopes:
notifications action: 要执行的操作:忽略、关注或删除通知订阅。(字符串,必填)notificationID: 通知线程的 ID。(字符串,必填)
- OAuth Challenge Scopes:
-
manage_repository_notification_subscription - 管理仓库通知订阅
- OAuth Challenge Scopes:
notifications action: 要执行的操作:忽略、关注或删除仓库通知订阅。(字符串,必填)owner: 仓库的账户所有者。(字符串,必填)repo: 仓库的名称。(字符串,必填)
- OAuth Challenge Scopes:
-
mark_all_notifications_read - 将所有通知标记为已读
- OAuth Challenge Scopes:
notifications lastReadAt: 描述上次检查通知的时间点(可选)。默认值:现在(字符串,可选)owner: 可选的仓库所有者。如果与 repo 一起提供,则仅将此仓库的通知标记为已读。(字符串,可选)repo: 可选的仓库名称。如果与 owner 一起提供,则仅将此仓库的通知标记为已读。(字符串,可选)
- OAuth Challenge Scopes:

组织
- search_orgs - 搜索组织
- OAuth Challenge Scopes:
read:org order: 排序顺序(字符串,可选)page: 分页页码(最小 1)(数字,可选)perPage: 分页每页结果数(最小 1,最大 100)(数字,可选)query: 组织搜索查询。示例:'microsoft'、'location:california'、'created:>=2025-01-01'。搜索会自动限定为 type:org。(字符串,必填)sort: 按类别排序的字段(字符串,可选)
- OAuth Challenge Scopes:

项目
-
projects_get - 获取 GitHub Projects 资源的详情
- OAuth Challenge Scopes:
read:project field_id: 字段的 ID。'get_project_field' 方法必需。(数字,可选)field_names: 获取项目项时要在响应中包含的特定字段名称列表(例如 ["Status", "Priority"])。在服务端解析为字段 ID——当您只知道人类可读的名称时,请传递此参数而不是 'fields'。与 'fields' 互斥——只提供其中一个,不要同时提供。仅用于 'get_project_item' 方法。(字符串[],可选)fields: 获取项目项时要在响应中包含的特定字段 ID 列表(例如 ["102589", "985201", "169875"])。如果未提供 'fields' 和 'field_names',则仅包含标题字段。与 'field_names' 互斥——只提供其中一个,不要同时提供。仅用于 'get_project_item' 方法。(字符串[],可选)item_id: 项目的 ID。'get_project_item' 方法必需。(数字,可选)method: 要执行的方法(字符串,必填)owner: 所有者(用户或组织登录名)。名称不区分大小写。(字符串,可选)owner_type: 所有者类型(用户或组织)。如果未提供,将自动检测。(字符串,可选)project_number: 项目的编号。(数字,可选)status_update_id: 项目状态更新的节点 ID。'get_project_status_update' 方法必需。(字符串,可选)view_id: 项目视图的节点 ID。'get_project_view' 方法必需。(字符串,可选)
- OAuth Challenge Scopes:
-
projects_list - 列出 GitHub Projects 资源
- OAuth Challenge Scopes:
read:project after: 来自上一页 pageInfo.nextCursor 的前向分页游标。(字符串,可选)before: 来自上一页 pageInfo.prevCursor 的后向分页游标(很少使用)。(字符串,可选)field_names: 列出项目项时要包含的字段名称(例如 ["Status", "Priority"])。在服务端解析为字段 ID——当您只知道人类可读的名称时,请传递此参数而不是 'fields'。无法解析的名称会返回结构化错误。与 'fields' 互斥——只提供其中一个,不要同时提供。仅用于 'list_project_items' 方法。(字符串[],可选)fields: 列出项目项时要包含的字段 ID(例如 ["102589", "985201"])。关键:始终提供以获取字段值。如果没有此参数(也没有 'field_names'),则仅返回标题。与 'field_names' 互斥——只提供其中一个,不要同时提供。仅用于 'list_project_items' 方法。(字符串[],可选)method: 要执行的操作(字符串,必填)owner: 所有者(用户或组织登录名)。名称不区分大小写。(字符串,必填)owner_type: 所有者类型(用户或组织)。如果未提供,将自动尝试两者。(字符串,可选)per_page: 每页结果数(最大 50)(数字,可选)project_number: 项目的编号。'list_project_fields'、'list_project_items'、'list_project_views' 和 'list_project_status_updates' 方法必需。(数字,可选)query: 过滤/查询字符串。对于 list_projects:按标题文本和状态过滤(例如 "roadmap is:open")。对于 list_project_items:使用 GitHub 的项目过滤语法进行高级过滤。(字符串,可选)
- OAuth Challenge Scopes:
-
projects_write - 管理 GitHub Projects
- OAuth Challenge Scopes:
project body: 状态更新的正文(markdown)。用于 'create_project_status_update' 方法。(字符串,可选)field_name: 迭代字段的名称(例如 'Sprint')。'create_iteration_field' 方法必需。(字符串,可选)filter: 已保存的视图过滤器;更新时省略以保留,或传递 null 以清除。(字符串 | null,可选)issue_number: 问题编号。当 item_type 为 'issue' 时,'add_project_item' 方法必需。'update_project_item' 也接受此参数以按问题编号解析项目项(与 item_owner 和 item_repo 结合使用)。(数字,可选)item_id: 项目项 ID。'delete_project_item' 必需。对于 'update_project_item',提供 item_id,或(item_owner + item_repo + issue_number)以按问题解析项目项。(数字,可选)item_owner: 包含问题或拉取请求的仓库的所有者(用户或组织)。'add_project_item' 方法必需。'update_project_item' 按问题编号解析项目项时也接受此参数。(字符串,可选)item_repo: 包含问题或拉取请求的仓库的名称。'add_project_item' 方法必需。'update_project_item' 按问题编号解析项目项时也接受此参数。(字符串,可选)item_type: 项目项的类型,issue 或 pull_request。'add_project_item' 方法必需。(字符串,可选)items: 要使用顶层 'updated_field' 更新的项目项。'update_project_items' 必需;优先使用此参数而不是在循环中调用 'update_project_item'。每个条目必须恰好匹配一个引用变体:'node_id'、数字 'item_id' 或 'item_owner' + 'item_repo' + 'issue_number'。限制:每次调用最多 50 个项目项。(对象[],可选)iteration_duration: 字段迭代的持续时间(天)(例如 7 表示每周,14 表示每两周)。'create_iteration_field' 方法必需。(数字,可选)iterations: 'create_iteration_field' 方法的自定义迭代。仅当您需要持续时间不同、之间有间隔或具有特定标题的迭代时才设置此参数。否则请省略:GitHub 会自动从 'start_date' 开始创建三个持续时间为 'iteration_duration' 天的迭代,这在大多数情况下是正确的选择。(对象[],可选)layout: 视图布局;创建视图时必需。(字符串,可选)method: 要执行的方法(字符串,必填)name: 视图名称;创建视图时必需。(字符串,可选)owner: 项目所有者(用户或组织登录名)。名称不区分大小写。(字符串,必填)owner_type: 所有者类型(用户或组织)。'create_project' 方法必需。如果其他方法未提供,将自动检测。(字符串,可选)project_number: 项目的编号。除 'create_project' 外的所有方法必需。(数字,可选)pull_request_number: 拉取请求编号(当 item_type 为 'pull_request' 时用于 'add_project_item' 方法)。提供 issue_number 或 pull_request_number 之一。(数字,可选)start_date: 开始日期,格式为 YYYY-MM-DD。用于 'create_project_status_update' 和 'create_iteration_field' 方法。(字符串,可选)status: 项目的状态。用于 'create_project_status_update' 方法。(字符串,可选)target_date: 状态更新的目标日期,格式为 YYYY-MM-DD。用于 'create_project_status_update' 方法。(字符串,可选)title: 项目标题。'create_project' 方法必需。(字符串,可选)updated_field: 要应用的字段/值,使用 {"id": 123, "value": ...} 或 {"name": "Status", "value": ...};null 清除字段。'update_project_item' 和 'update_project_items' 必需,其中一个顶层字段/值应用于批次中的每个项目项。对于 'update_project_item' 的 SINGLE_SELECT 字段,名称形式接受选项名称;ID 形式期望选项 ID。(对象,可选)view_id: 用于更新或删除的项目视图节点 ID;必须属于 owner/project_number。(字符串,可选)visible_field_names: 创建时显示或更新时替换的有序项目字段名称;更新时省略以保留,或传递 [] 以重置。与 visible_fields 互斥。Roadmap 仅接受 []。(字符串[],可选)visible_fields: 创建时显示或更新时替换的有序项目字段数据库 ID;更新时省略以保留,或传递 [] 以重置。与 visible_field_names 互斥。Roadmap 仅接受 []。(字符串[],可选)
- OAuth Challenge Scopes:

拉取请求
-
add_comment_to_pending_review - 向请求者最新的待处理拉取请求审查添加审查评论
- OAuth 挑战范围:
repo body:审查评论的文本(字符串,必填)line:评论所应用的拉取请求差异中 blob 的行号。对于多行评论,为范围的最后一行(数字,可选)owner:仓库所有者(字符串,必填)path:需要评论的文件的相对路径(字符串,必填)pullNumber:拉取请求编号(数字,必填)repo:仓库名称(字符串,必填)side:要评论的差异侧。LEFT 表示先前状态,RIGHT 表示新状态(字符串,可选)startLine:对于多行评论,评论所应用范围的第一行(数字,可选)startSide:对于多行评论,评论所应用差异的起始侧。LEFT 表示先前状态,RIGHT 表示新状态(字符串,可选)subjectType:评论所针对的级别(字符串,必填)
- OAuth 挑战范围:
-
add_reply_to_pull_request_comment - 添加对拉取请求评论的回复
- OAuth 挑战范围:
repo body:回复的文本。除非提供了 reaction,否则为必填。(字符串,可选)commentId:要回复或反应的拉取请求审查评论的数字 ID。使用 #discussion_r... 锚点中的数字,而不是 GraphQL 线程节点 ID(PRRT_...)。(数字,必填)owner:仓库所有者(字符串,必填)pullNumber:拉取请求编号。当提供 body 时为必填。(数字,可选)reaction:要添加的表情反应。除非提供了 body,否则为必填。(字符串,可选)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:
-
create_pull_request - 打开新的拉取请求
- OAuth 挑战范围:
repo base:要合并到的分支(字符串,必填)body:PR 描述(字符串,可选)draft:创建为草稿 PR(布尔值,可选)head:包含更改的分支(字符串,必填)maintainer_can_modify:允许维护者编辑(布尔值,可选)owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)reviewers:请求审查的 GitHub 用户名或 ORG/team-slug 团队审查者(字符串数组,可选)title:PR 标题(字符串,必填)
- OAuth 挑战范围:
-
list_pull_requests - 列出拉取请求
- OAuth 挑战范围:
repo base:按基础分支筛选(字符串,可选)direction:排序方向(字符串,可选)fields:为每个拉取请求返回的字段子集。如果省略,则返回所有字段。当您只需要特定字段时,使用此选项可减小响应大小;特别是省略 'body' 会丢弃每个结果中最大的数据。(字符串数组,可选)head:按 head 用户/组织和分支筛选(字符串,可选)owner:仓库所有者(字符串,必填)page:分页页码(最小 1)(数字,可选)perPage:分页每页结果数(最小 1,最大 100)(数字,可选)repo:仓库名称(字符串,必填)sort:排序依据(字符串,可选)state:按状态筛选(字符串,可选)
- OAuth 挑战范围:
-
merge_pull_request - 合并拉取请求
- OAuth 挑战范围:
repo commit_message:合并提交的额外详细信息(字符串,可选)commit_title:合并提交的标题(字符串,可选)merge_method:合并方法(字符串,可选)owner:仓库所有者(字符串,必填)pullNumber:拉取请求编号(数字,必填)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:
-
pull_request_read - 获取单个拉取请求的详细信息
- OAuth 挑战范围:
repo after:分页游标,仅由 get_review_comments 方法使用。传递上一页 PageInfo 中的 endCursor 以获取下一页。(字符串,可选)method:指定需要从 GitHub 检索哪些拉取请求数据的操作。 可能的选项:- get - 获取特定拉取请求的详细信息。
- get_diff - 获取拉取请求的差异。
- get_status - 获取拉取请求中 head 提交的组合提交状态。
- get_files - 获取拉取请求中更改的文件列表。与分页参数一起使用以控制返回的结果数量。
- get_commits - 获取拉取请求上的提交列表。与分页参数一起使用以控制返回的结果数量。
- get_review_comments - 获取拉取请求上的审查线程。每个线程包含在拉取请求审查期间对同一代码位置进行的逻辑分组的审查评论。返回带有元数据(isResolved、isOutdated、isCollapsed)的线程及其关联的评论。使用基于游标的分页(perPage、after)来控制结果。
- get_reviews - 获取拉取请求上的审查。当被要求提供审查评论时,使用 get_review_comments 方法。与分页参数一起使用以控制返回的结果数量。
- get_comments - 获取拉取请求上的评论。如果用户不特别要求审查评论,请使用此选项。与分页参数一起使用以控制返回的结果数量。
- get_check_runs - 获取拉取请求 head 提交的检查运行。检查运行是在 PR 上运行的单个 CI/CD 作业和检查。 (字符串,必填)
owner:仓库所有者(字符串,必填)page:分页页码(最小 1)(数字,可选)perPage:分页每页结果数(最小 1,最大 100)(数字,可选)pullNumber:拉取请求编号(数字,必填)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:
-
pull_request_review_write - 对拉取请求审查的写操作(创建、提交、删除)
- OAuth 挑战范围:
repo body:审查评论文本(字符串,可选)commitID:要审查的提交的 SHA(字符串,可选)event:要执行的审查操作。(字符串,可选)method:要对拉取请求审查执行的写操作。(字符串,必填)owner:仓库所有者(字符串,必填)pullNumber:拉取请求编号(数字,必填)repo:仓库名称(字符串,必填)threadId:审查线程的节点 ID(例如,PRRT_kwDOxxx)。对于 resolve_thread 和 unresolve_thread 方法是必填的。从 pull_request_read 使用 get_review_comments 方法获取线程 ID。(字符串,可选)
- OAuth 挑战范围:
-
search_pull_requests - 搜索拉取请求
- OAuth 挑战范围:
repo fields:为每个拉取请求结果返回的字段子集。如果省略,则返回所有字段。当您只需要特定字段时,使用此选项可减小响应大小;特别是省略 'body'、'reactions' 和 'labels' 会丢弃每个结果中最大的数据。(字符串数组,可选)order:排序顺序(字符串,可选)owner:可选的仓库所有者。如果与 repo 一起提供,则仅列出此仓库的拉取请求。(字符串,可选)page:分页页码(最小 1)(数字,可选)perPage:分页每页结果数(最小 1,最大 100)(数字,可选)query:使用 GitHub 拉取请求搜索语法的搜索查询(字符串,必填)repo:可选的仓库名称。如果与 owner 一起提供,则仅列出此仓库的拉取请求。(字符串,可选)sort:按类别匹配数排序的字段,默认为最佳匹配(字符串,可选)
- OAuth 挑战范围:
-
update_pull_request - 编辑拉取请求
- OAuth 挑战范围:
repo base:新的基础分支名称(字符串,可选)body:新的描述(字符串,可选)draft:将拉取请求标记为草稿(true)或准备审查(false)(布尔值,可选)maintainer_can_modify:允许维护者编辑(布尔值,可选)owner:仓库所有者(字符串,必填)pullNumber:要更新的拉取请求编号(数字,必填)repo:仓库名称(字符串,必填)reviewers:请求审查的 GitHub 用户名或 ORG/team-slug 团队审查者(字符串数组,可选)state:新状态(字符串,可选)title:新标题(字符串,可选)
- OAuth 挑战范围:
-
update_pull_request_branch - 更新拉取请求分支
- OAuth 挑战范围:
repo expectedHeadSha:拉取请求 HEAD 引用的预期 SHA(字符串,可选)owner:仓库所有者(字符串,必填)pullNumber:拉取请求编号(数字,必填)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:

仓库
-
create_branch - 创建分支
- OAuth 挑战范围:
repo branch:新分支的名称(字符串,必填)from_branch:源分支(默认为仓库默认分支)(字符串,可选)owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:
-
create_or_update_file - 创建或更新文件
- OAuth 挑战范围:
repo、workflow allow_symlink_write:设置为 true 以更新符号链接本身;内容必须是其新的目标路径。(布尔值,可选)branch:要创建/更新文件的分支(字符串,必填)content:文件的内容,与写入后应显示的内容完全一致。不要对其进行 base64 编码;此服务器在调用 REST API 之前会进行编码。(字符串,必填)message:提交消息(字符串,必填)owner:仓库所有者(用户名或组织)(字符串,必填)path:要创建/更新文件的路径(字符串,必填)repo:仓库名称(字符串,必填)sha:被替换文件的 blob SHA。如果文件已存在,则为必填。(字符串,可选)
- OAuth 挑战范围:
-
create_repository - 创建仓库
- OAuth 挑战范围:
repo autoInit:使用 README 初始化(布尔值,可选)description:仓库描述(字符串,可选)name:仓库名称(字符串,必填)organization:要在其中创建仓库的组织(省略则在您的个人账户中创建)(字符串,可选)private:仓库是否应为私有。省略时默认为 true(私有)。(布尔值,可选)
- OAuth 挑战范围:
-
delete_file - 删除文件
- OAuth 挑战范围:
repo、workflow branch:要从中删除文件的分支(字符串,必填)message:提交消息(字符串,必填)owner:仓库所有者(用户名或组织)(字符串,必填)path:要删除的文件的路径(字符串,必填)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:
-
delete_repository - 删除仓库
- OAuth 挑战范围:
delete_repo、repo owner:仓库所有者(用户名或组织)(字符串,必填)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:
-
fork_repository - 复刻仓库
- OAuth 挑战范围:
repo organization:要复刻到的组织(字符串,可选)owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:
-
get_commit - 获取提交详情
- OAuth 挑战范围:
repo detail:更改文件包含的详细程度。"none" 完全省略统计信息和文件。"stats"(默认)包含每个文件的元数据:文件名、状态和代码行数(新增、删除、更改),不包含补丁内容。"full_patch" 额外包含每个文件的统一差异内容,可能非常大。(字符串,可选)owner:仓库所有者(字符串,必填)page:分页页码(最小 1)(数字,可选)perPage:分页每页结果数(最小 1,最大 100)(数字,可选)repo:仓库名称(字符串,必填)sha:提交 SHA、分支名称或标签名称(字符串,必填)
- OAuth 挑战范围:
-
get_file_contents - 获取文件或目录内容
- OAuth 挑战范围:
repo fields:当路径为目录时,每个条目返回的字段子集。如果省略,则返回所有字段。当路径为单个文件时忽略。在列出目录且只需要特定字段(例如仅 'name' 和 'type')时,使用此参数可减小响应大小。(字符串数组,可选)owner:仓库所有者(用户名或组织)(字符串,必填)path:文件/目录路径(字符串,可选)ref:接受可选的 git 引用,如refs/tags/{tag}、refs/heads/{branch}或refs/pull/{pr_number}/head(字符串,可选)repo:仓库名称(字符串,必填)sha:接受可选的提交 SHA。如果指定,将使用它代替 ref(字符串,可选)
- OAuth 挑战范围:
-
get_latest_release - 获取最新版本
- OAuth 挑战范围:
repo owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:
-
get_release_by_tag - 按标签名称获取版本
- OAuth 挑战范围:
repo owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)tag:标签名称(例如 'v1.0.0')(字符串,必填)
- OAuth 挑战范围:
-
get_tag - 获取标签详情
- OAuth 挑战范围:
repo owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)tag:标签名称(字符串,必填)
- OAuth 挑战范围:
-
list_branches - 列出分支
- OAuth 挑战范围:
repo owner:仓库所有者(字符串,必填)page:分页页码(最小 1)(数字,可选)perPage:分页每页结果数(最小 1,最大 100)(数字,可选)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:
-
list_commits - 列出提交
- OAuth 挑战范围:
repo author:用于筛选提交的作者用户名或电子邮件地址(字符串,可选)fields:每个提交返回的字段子集。如果省略,则返回所有字段。在只需要特定字段(例如仅 'sha' 和 'html_url')时,使用此参数可减小响应大小。(字符串数组,可选)owner:仓库所有者(字符串,必填)page:分页页码(最小 1)(数字,可选)path:仅返回包含此文件路径的提交(字符串,可选)perPage:分页每页结果数(最小 1,最大 100)(数字,可选)repo:仓库名称(字符串,必填)sha:要列出提交的提交 SHA、分支或标签名称。如果未提供,则使用仓库的默认分支。如果提供了提交 SHA,将列出直到该 SHA 的提交。(字符串,可选)since:仅返回此日期之后的提交(ISO 8601 格式:YYYY-MM-DDTHH:MM:SSZ 或 YYYY-MM-DD)(字符串,可选)until:仅返回此日期之前的提交(ISO 8601 格式:YYYY-MM-DDTHH:MM:SSZ 或 YYYY-MM-DD)(字符串,可选)
- OAuth 挑战范围:
-
list_releases - 列出版本
- OAuth 挑战范围:
repo fields:每个版本返回的字段子集。如果省略,则返回所有字段。在只需要特定字段时,使用此参数可减小响应大小;特别是省略 'body' 可删除每个版本中最大的数据。(字符串数组,可选)owner:仓库所有者(字符串,必填)page:分页页码(最小 1)(数字,可选)perPage:分页每页结果数(最小 1,最大 100)(数字,可选)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:
-
list_repository_collaborators - 列出仓库协作者
- OAuth 挑战范围:
repo affiliation:按隶属关系筛选。可以是以下之一:'outside'(外部协作者)、'direct'(所有具有权限的人员,无论组织成员身份如何)、'all'(所有协作者)。默认值:'all'(字符串,可选)owner:仓库所有者(字符串,必填)page:分页页码(默认 1,最小 1)(数字,可选)perPage:分页每页结果数(默认 30,最小 1,最大 100)(数字,可选)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:
-
list_tags - 列出标签
- OAuth 挑战范围:
repo owner:仓库所有者(字符串,必填)page:分页页码(最小 1)(数字,可选)perPage:分页每页结果数(最小 1,最大 100)(数字,可选)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:
-
push_files - 推送文件到仓库
- OAuth 挑战范围:
repo、workflow branch:要推送到的分支(字符串,必填)files:要推送的文件对象数组,每个对象包含路径(字符串)和内容(字符串)(对象数组,必填)message:提交消息(字符串,必填)owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:
-
search_code - 搜索代码
- OAuth 挑战范围:
repo fields:每个代码搜索结果返回的字段子集。如果省略,则返回所有字段。在只需要特定字段时,使用此参数可减小响应大小;特别是省略 'repository' 和 'text_matches' 可删除每个结果中最大的数据。(字符串数组,可选)order:结果的排序顺序(字符串,可选)page:分页页码(最小 1)(数字,可选)perPage:分页每页结果数(最小 1,最大 100)(数字,可选)query:搜索查询(GitHub 代码搜索 REST)。术语之间为隐式 AND;支持OR、NOT和"quoted phrase"进行精确匹配。限定符:repo:owner/repo、org:、user:、language:、path:dir(前缀匹配)、filename:exact.ext、extension:、in:file、in:path、size:、is:archived、is:fork。最大 256 个字符。示例:WithContext language:go org:github;"package main" repo:o/r;func extension:go path:cmd repo:o/r;NOT TODO language:go repo:o/r。(字符串,必填)sort:排序字段(仅 'indexed')(字符串,可选)
- OAuth 挑战范围:
-
search_commits - 搜索提交
- OAuth 挑战范围:
repo order:排序顺序(字符串,可选)page:分页页码(最小 1)(数字,可选)perPage:分页每页结果数(最小 1,最大 100)(数字,可选)query:提交搜索查询(GitHub 提交搜索 REST)。仅搜索默认分支上的提交消息。使用repo:owner/repo、org:或user:限定搜索范围(没有范围限定符的查询会匹配整个 GitHub,通常不是您想要的)。其他限定符:author:、committer:、author-name:、committer-name:、author-email:、committer-email:、author-date:、committer-date:(支持>、<、>=、<=和YYYY-MM-DD..YYYY-MM-DD范围)、merge:true|false、hash:、tree:、parent:、is:public。示例:repo:owner/repo fix panic;org:github author:defunkt committer-date:>=2024-01-01;"refactor cache" repo:o/r;hash:abc1234 repo:o/r。(字符串,必填)sort:按作者或提交者日期排序(默认为最佳匹配)(字符串,可选)
- OAuth 挑战范围:
-
search_repositories - 搜索仓库
- OAuth 挑战范围:
repo minimal_output:返回最简仓库信息(默认:true)。为 false 时,返回完整的 GitHub API 仓库对象。(布尔值,可选)order:排序顺序(字符串,可选)page:分页页码(最小 1)(数字,可选)perPage:分页每页结果数(最小 1,最大 100)(数字,可选)query:仓库搜索查询。示例:'machine learning in:name stars:>1000 language:python'、'topic:react'、'user:facebook'。支持高级搜索语法以进行精确筛选。(字符串,必填)sort:按字段对仓库进行排序,默认为最佳匹配(字符串,可选)
- OAuth 挑战范围:

密钥保护
-
get_secret_scanning_alert - 获取密钥扫描警报
- OAuth 挑战范围:
security_events alertNumber:警报编号。(数字,必填)owner:仓库的所有者。(字符串,必填)repo:仓库的名称。(字符串,必填)
- OAuth 挑战范围:
-
list_secret_scanning_alerts - 列出密钥扫描警报
- OAuth 挑战范围:
security_events owner:仓库的所有者。(字符串,必填)page:分页页码(最小 1)(数字,可选)perPage:分页每页结果数(最小 1,最大 100)(数字,可选)repo:仓库的名称。(字符串,必填)resolution:按解决状态筛选(字符串,可选)secret_type:要返回的密钥类型逗号分隔列表。返回所有默认密钥模式。要返回通用模式,请在参数中传递令牌名称。(字符串,可选)state:按状态筛选(字符串,可选)
- OAuth 挑战范围:

安全公告
-
get_global_security_advisory - 获取全局安全公告
- OAuth 挑战范围:
security_events ghsaId:GitHub 安全公告 ID(格式:GHSA-xxxx-xxxx-xxxx)。(字符串,必填)
- OAuth 挑战范围:
-
list_global_security_advisories - 列出全局安全公告
- OAuth 挑战范围:
security_events affects:按受影响的软件包或版本筛选公告(例如 "package1,package2@1.0.0")。(字符串,可选)cveId:按 CVE ID 筛选。(字符串,可选)cwes:按常见弱点枚举 ID 筛选(例如 ["79", "284", "22"])。(字符串数组,可选)ecosystem:按软件包生态系统筛选。(字符串,可选)ghsaId:按 GitHub 安全公告 ID 筛选(格式:GHSA-xxxx-xxxx-xxxx)。(字符串,可选)isWithdrawn:是否仅返回已撤回的公告。(布尔值,可选)modified:按发布日期或日期范围筛选(ISO 8601 日期或范围)。(字符串,可选)published:按发布日期或日期范围筛选(ISO 8601 日期或范围)。(字符串,可选)severity:按严重性筛选。(字符串,可选)type:公告类型。(字符串,可选)updated:按更新日期或日期范围筛选(ISO 8601 日期或范围)。(字符串,可选)
- OAuth 挑战范围:
-
list_org_repository_security_advisories - 列出组织仓库安全公告
- OAuth 挑战范围:
security_events direction:排序方向。(字符串,可选)org:组织登录名。(字符串,必填)sort:排序字段。(字符串,可选)state:按公告状态筛选。(字符串,可选)
- OAuth 挑战范围:
-
list_repository_security_advisories - 列出仓库安全公告
- OAuth 挑战范围:
security_events direction:排序方向。(字符串,可选)owner:仓库所有者。(字符串,必填)repo:仓库名称。(字符串,必填)sort:排序字段。(字符串,可选)state:按公告状态筛选。(字符串,可选)
- OAuth 挑战范围:

Stargazers
-
list_starred_repositories - 列出已加星标的仓库
- OAuth 挑战范围:
repo direction:结果排序方向。(字符串,可选)page:分页页码(最小 1)(数字,可选)perPage:分页每页结果数(最小 1,最大 100)(数字,可选)sort:结果排序方式。可以是 'created'(仓库被加星标的时间)或 'updated'(仓库最后一次推送的时间)。(字符串,可选)username:要列出已加星标仓库的用户名。默认为已认证用户。(字符串,可选)
- OAuth 挑战范围:
-
star_repository - 给仓库加星标
- OAuth 挑战范围:
repo owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:
-
unstar_repository - 取消给仓库加星标
- OAuth 挑战范围:
repo owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)
- OAuth 挑战范围:

Users
- search_users - 搜索用户
- OAuth 挑战范围:
repo order:排序顺序(字符串,可选)page:分页页码(最小 1)(数字,可选)perPage:分页每页结果数(最小 1,最大 100)(数字,可选)query:用户搜索查询。示例:'john smith'、'location:seattle'、'followers:>100'。搜索会自动限定为 type:user。(字符串,必填)sort:按关注者数量、仓库数量或加入 GitHub 的时间对用户排序。(字符串,可选)
- OAuth 挑战范围:
远程 GitHub MCP 服务器中的其他工具
Copilot
- create_pull_request_with_copilot - 使用 GitHub Copilot 编码代理执行任务
owner:仓库所有者。你可以猜测所有者,但在继续之前请与用户确认。(字符串,必填)repo:仓库名称。你可以猜测仓库名称,但在继续之前请与用户确认。(字符串,必填)problem_statement:要执行的任务的详细描述(例如,'实现一个执行 X 的功能'、'修复错误 Y' 等)(字符串,必填)title:将要创建的拉取请求的标题(字符串,必填)base_ref:代理开始工作的 Git 引用(例如,分支)。如果未指定,默认为仓库的默认分支(字符串,可选)
Copilot Spaces
-
认证说明
- 细粒度 PAT 不会被经典 PAT 范围过滤隐藏,因此即使令牌无法使用这些工具,它们仍可能显示。
- 对于组织拥有的空间,细粒度 PAT 必须安装在所属组织上,并包含
organization_copilot_spaces: read。 - 如果组织拥有的空间包含基于仓库的资源,令牌还必须能够访问每个引用的仓库,否则该空间可能被视为不存在。
-
get_copilot_space - 获取 Copilot 空间
owner:空间的所有者。(字符串,必填)name:空间的名称。(字符串,必填)
-
list_copilot_spaces - 列出 Copilot 空间
GitHub 支持文档搜索
- github_support_docs_search - 检索与回答 GitHub 产品和支持问题相关的文档。支持主题包括:GitHub Actions 工作流、认证、GitHub 支持查询、拉取请求实践、仓库维护、GitHub Pages、GitHub Packages、GitHub Discussions、Copilot Spaces
query:用户关于需要回答的问题的输入。这是最新的原始未编辑用户消息。你应该始终保留用户消息的原样,绝不应修改它。(字符串,必填)
只读模式
要以只读模式运行服务器,可以使用 --read-only 标志。这将仅提供只读工具,防止对仓库、问题、拉取请求等进行任何修改。
./github-mcp-server --read-only
使用 Docker 时,可以通过环境变量传递只读模式:
docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN=<your-token> \
-e GITHUB_READ_ONLY=1 \
ghcr.io/github/github-mcp-server
锁定模式
锁定模式限制服务器从公共仓库展示的内容。启用后,服务器会检查每个条目的作者是否对该仓库具有推送权限。私有仓库不受影响,协作者保留对其自身内容的完全访问权限。
锁定模式是一种尽力而为的内容过滤器,旨在降低来自不受信任的仓库内容(问题、拉取请求、评论、提交等)的提示注入风险。它不是授权边界:它不会改变底层 GitHub 凭据可以读取或写入的内容,并且从过滤后的工具响应中扣留的内容仍可能通过其他工具或使用相同凭据的直接 GitHub API 访问获得。
作为一个有意为之的例外,由一小部分受信任的机器人账户(目前为 github-actions[bot] 和 copilot)创作的内容始终被视为安全,无论推送权限如何。这避免了过滤常规自动化输出(例如 CI 生成的提交或评论),否则这些输出在锁定模式下会被扣留。
./github-mcp-server --lockdown-mode
使用 Docker 运行时,设置相应的环境变量:
docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN=<your-token> \
-e GITHUB_LOCKDOWN_MODE=1 \
ghcr.io/github/github-mcp-server
在 HTTP 模式下,此标志(或 GITHUB_LOCKDOWN_MODE)是一个上限:X-MCP-Lockdown 请求头可以在操作员未启用时启用锁定模式,但不能禁用操作员已启用的锁定模式。有关详细信息,请参阅服务器配置指南。
锁定模式的行为取决于所调用的工具。
以下工具在作者缺乏推送权限时将返回错误:
issue_read:getpull_request_read:getpull_request_read:get_diffpull_request_read:get_filespull_request_read:get_commits
以下工具将过滤掉缺乏推送权限的用户的内容:
issue_read:get_commentsissue_read:get_sub_issuespull_request_read:get_commentspull_request_read:get_review_commentspull_request_read:get_reviews
国际化 / 覆盖描述
可以通过在与二进制文件相同的目录中创建 github-mcp-server-config.json 文件来覆盖工具的描述。
该文件应包含一个 JSON 对象,以工具名称作为键,新描述作为值。例如:
{
"TOOL_ADD_ISSUE_COMMENT_DESCRIPTION": "an alternative description",
"TOOL_CREATE_BRANCH_DESCRIPTION": "Create a new branch in a GitHub repository"
}
你可以通过使用 --export-translations 标志运行二进制文件来创建当前翻译的导出。
此标志将保留你已进行的任何翻译/覆盖,同时添加自上次导出以来已添加到二进制文件中的任何新翻译。
./github-mcp-server --export-translations
cat github-mcp-server-config.json
你也可以使用环境变量来覆盖描述。环境变量名称与 JSON 文件中的键相同,前缀为 GITHUB_MCP_ 且全部大写。
例如,要覆盖 TOOL_ADD_ISSUE_COMMENT_DESCRIPTION 工具,你可以设置以下环境变量:
export GITHUB_MCP_TOOL_ADD_ISSUE_COMMENT_DESCRIPTION="an alternative description"
覆盖服务器名称和标题
可以使用相同的覆盖机制来自定义 MCP 服务器在初始化响应中的 name 和 title 字段。这在运行多个 GitHub MCP 服务器实例(例如,一个用于 github.com,一个用于 GitHub Enterprise Server)时非常有用,以便代理可以区分它们。
| 键 | 环境变量 | 默认值 |
|---|---|---|
SERVER_NAME | GITHUB_MCP_SERVER_NAME | github-mcp-server |
SERVER_TITLE | GITHUB_MCP_SERVER_TITLE | GitHub MCP Server |
例如,要为 GitHub Enterprise Server 配置服务器实例:
{
"SERVER_NAME": "ghes-mcp-server",
"SERVER_TITLE": "GHES MCP Server"
}
或者使用环境变量:
export GITHUB_MCP_SERVER_NAME="ghes-mcp-server"
export GITHUB_MCP_SERVER_TITLE="GHES MCP Server"
库使用
此模块导出的 Go API 目前应被视为不稳定,并可能发生破坏性更改。将来,我们可能会提供稳定性;如果有此需求有价值的用例,请提交问题。
贡献
欢迎贡献。在打开拉取请求之前,请阅读贡献指南以了解设置、测试、代码检查和文档生成说明。
支持
有关使用 GitHub MCP 服务器的帮助,请参阅支持指南。如果你发现了错误或想请求功能,请在打开新问题之前搜索现有问题。
安全
请不要通过公开问题报告安全漏洞。请按照安全政策中的说明负责任地报告漏洞。
许可证
本项目根据 MIT 开源许可证的条款进行许可。请参阅 MIT 了解完整条款。