GitHub MCP
官方用于MCP兼容AI客户端的官方GitHub MCP服务器,支持仓库搜索、议题、拉取请求、代码上下文及GitHub工作流。
你可以用 Git Hub MCP 做什么?
- 浏览和搜索仓库 — 让助手使用
repos工具集中的工具查找文件、阅读代码或分析提交历史。 - 管理议题和拉取请求 — 使用
issues和pull_requests工具集中的工具创建、更新和分类议题或拉取请求。 - 监控 CI/CD 工作流 — 通过
actions工具集检查 GitHub Actions 运行状态、调查构建失败并管理发布。 - 审查代码安全警报 — 使用
code_security、dependabot和secret_protection工具集检查代码扫描结果、Dependabot 警报和密钥扫描结果。 - 协作讨论与项目 — 通过
discussions、projects和notifications工具集访问团队讨论、管理项目面板并处理通知。
文档
GitHub MCP 服务器
GitHub MCP 服务器将 AI 工具直接连接到 GitHub 平台。这使得 AI 代理、助手和聊天机器人能够读取仓库和代码文件、管理议题和 PR、分析代码以及自动化工作流。所有这些都通过自然语言交互完成。
使用场景
- 仓库管理:浏览和查询代码、搜索文件、分析提交记录,并了解您有权访问的任何仓库的项目结构。
- 议题与 PR 自动化:创建、更新和管理议题及拉取请求。让 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 也可以使用远程服务器。
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}"
}
},
...
}
注意: 在 VS Code 和 GitHub Copilot 中对 GitHub Enterprise 使用 OAuth 时,您还需要将 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 登录,了解其工作原理、无头/设备码回退,以及自带 OAuth 或 GitHub App(GitHub Enterprise Server 和ghe.com必需)。更喜欢使用令牌?您仍然可以通过设置
GITHUB_PERSONAL_ACCESS_TOKEN来使用 GitHub 个人访问令牌 进行身份验证(它优先于 OAuth)。MCP 服务器可以使用许多 GitHub API,因此请启用您愿意授予 AI 工具的权限(要了解有关访问令牌的更多信息,请查看 文档)。
安全处理 PAT
环境变量(推荐)
为了确保您的 GitHub PAT 安全且可在不同的 MCP 主机间重复使用:
-
将您的 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 方案,否则它将默认为http://,而 GitHub Enterprise Server 不支持此方案。 - 对于具有数据驻留功能的 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"
}
}
}
}
}
请参阅 本地服务器 OAuth 登录,了解原生二进制流程(无需固定端口)、无头/设备码回退、GitHub Enterprise Server / ghe.com,以及自带 OAuth 或 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}"
}
}
}
}
}
或者,您可以将类似的示例(即不包含 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 主机中安装
对于其他 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>"
}
}
}
}
}
CLI 实用工具
github-mcp-server 二进制文件包含一些 CLI 子命令,有助于调试和探索服务器。
github-mcp-server tool-search "<query>"按名称、描述和输入参数名称搜索工具。使用--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 标志启用或禁用特定功能组。这使您可以控制哪些 GitHub API 功能可供您的 AI 工具使用。仅启用您需要的工具集有助于 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 时,您可以将工具集作为环境变量传递:
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 相关工具 | |
dependabot | Dependabot 工具 | |
discussions | GitHub Discussions 相关工具 | |
gists | GitHub Gist 相关工具 | |
git | GitHub Git API 相关工具,用于低级 Git 操作 | |
issues | GitHub Issues 相关工具 | |
labels | GitHub 标签相关工具 | |
notifications | GitHub 通知相关工具 | |
orgs | GitHub 组织相关工具 | |
projects | GitHub Projects 相关工具 | |
pull_requests | GitHub Pull Request 相关工具 | |
repos | GitHub 仓库相关工具 | |
secret_protection | 密钥保护相关工具,例如 GitHub 密钥扫描 | |
security_advisories | 安全公告相关工具 | |
stargazers | GitHub Stargazers 相关工具 | |
users | GitHub 用户相关工具 |
远程 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`:仓库名称。(字符串,必需)

代码安全
-
get_code_scanning_alert - 获取代码扫描警报
- 必需的 OAuth 范围:
security_events - 可接受的 OAuth 范围:
repo、security_events alertNumber:警报编号。(数字,必需)owner:仓库所有者。(字符串,必需)repo:仓库名称。(字符串,必需)
- 必需的 OAuth 范围:
-
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:用于代码扫描的工具名称。(字符串,可选)
- 必需的 OAuth 范围:

上下文
-
get_me - 获取我的用户资料
- 无需参数
-
get_team_members - 获取团队成员
- 必需的 OAuth 范围:
read:org - 可接受的 OAuth 范围:
admin:org、read:org、write:org org:包含该团队的组织登录名(所有者)。(字符串,必需)team_slug:团队标识(字符串,必需)
- 必需的 OAuth 范围:
-
get_teams - 获取团队
- 必需的 OAuth 范围:
read:org - 可接受的 OAuth 范围:
admin:org、read:org、write:org user:要获取其团队的 GitHub 用户名。如果未提供,则使用已认证用户。(字符串,可选)
- 必需的 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 范围:

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

讨论
-
discussion_comment_write - 管理讨论评论
- 必需的 OAuth 范围:
repo body:评论内容(对于 'add'、'reply' 和 'update' 方法是必需的)(字符串,可选)commentNodeID:讨论评论的节点 ID(对于 'reply'、'update'、'delete'、'mark_answer' 和 'unmark_answer' 方法是必需的)。对于 'reply',这是要回复的顶级评论;GitHub 讨论仅支持一级嵌套。(字符串,可选)discussionNumber:讨论编号(对于 'add' 和 'reply' 方法是必需的)(数字,可选)method:要对讨论评论执行的写入操作。 选项包括:- 'add' - 向讨论添加新的顶级评论。
- 'reply' - 回复顶级讨论评论(GitHub 讨论仅支持一级嵌套)。
- '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:仅返回在此时间之后更新的 Gist(ISO 8601 时间戳)(字符串,可选)username:GitHub 用户名(省略则返回已认证用户的 Gist)(字符串,可选)
-
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 值或引用(分支或标签)名称。默认为仓库的默认分支(字符串,可选)
- 必需的 OAuth 范围:

议题
-
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是可选的关联摘要。 - 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:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)state:新状态(字符串,可选)state_reason:状态变更的原因。除非状态发生变更,否则忽略。(字符串,可选)title:议题标题(字符串,可选)type:此议题的类型。仅在仓库启用了议题类型时使用。使用 list_issue_types 工具获取此仓库或其所属组织的有效类型值。如果仓库不支持议题类型,请省略此参数。(字符串,可选)
- 所需 OAuth 范围:
-
list_issue_fields - 列出议题字段
- 所需 OAuth 范围(任一):
repo、read:org - 接受的 OAuth 范围:
admin:org、read:org、repo、write:org owner:仓库或组织的账户所有者。名称不区分大小写。(字符串,必填)repo:仓库名称。提供时,返回此特定仓库的字段(从其组织继承)。省略时,直接返回组织级别的字段。(字符串,可选)
- 所需 OAuth 范围(任一):
-
list_issue_types - 列出可用的议题类型
- 所需 OAuth 范围(任一):
repo、read:org - 接受的 OAuth 范围:
admin:org、read:org、repo、write:org owner:仓库或组织的账户所有者。(字符串,必填)repo:仓库名称。提供时,返回此特定仓库的议题类型。省略时,直接返回组织级别的议题类型。(字符串,可选)
- 所需 OAuth 范围(任一):
-
list_issues - 列出议题
- 所需 OAuth 范围:
repo after:分页游标。使用前一个响应中的游标。(字符串,可选)direction:排序方向。如果提供,则还需要提供 'orderBy'。(字符串,可选)field_filters:按自定义议题字段值筛选。每个条目包含一个 field_name 和一个 value;服务器会查找该字段并将值强制转换为其类型(单选选项名称、文本、数字或 YYYY-MM-DD 日期)。(对象数组,可选)labels:按标签筛选(字符串数组,可选)orderBy:按字段排序议题。如果提供,则还需要提供 'direction'。(字符串,可选)owner:仓库所有者(字符串,必填)perPage:分页每页结果数(最小值为 1,最大值为 100)(数字,可选)repo:仓库名称(字符串,必填)since:按日期筛选(ISO 8601 时间戳)(字符串,可选)state:按状态筛选,默认情况下,未提供时返回打开和已关闭的议题(字符串,可选)
- 所需 OAuth 范围:
-
search_issues - 搜索议题
- 所需 OAuth 范围:
repo order:排序顺序(字符串,可选)owner:可选的仓库所有者。如果与 repo 一起提供,则仅列出此仓库的议题。(字符串,可选)page:分页页码(最小值为 1)(数字,可选)perPage:分页每页结果数(最小值为 1,最大值为 100)(数字,可选)query:使用 GitHub 议题搜索语法的搜索查询(字符串,必填)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' - 更改 GitHub 仓库中父议题内子议题的顺序。使用 '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 范围:
notifications state:通知的新状态(read/done)(字符串,必填)threadID:通知线程的 ID(字符串,必填)
- 所需 OAuth 范围:
-
get_notification_details - 获取通知详情
- 所需 OAuth 范围:
notifications notificationID:通知的 ID(字符串,必填)
- 所需 OAuth 范围:
-
list_notifications - 列出通知
- 所需 OAuth 范围:
notifications before:仅显示在给定时间之前更新的通知(ISO 8601 格式)(字符串,可选)filter:筛选通知,除非指定,否则使用默认值。已读通知是用户已确认的通知。参与通知是用户直接参与的通知,例如他们评论过或创建过的议题或拉取请求。(字符串,可选)owner:可选的仓库所有者。如果与 repo 一起提供,则仅列出此仓库的通知。(字符串,可选)page:分页页码(最小值为 1)(数字,可选)perPage:分页每页结果数(最小值为 1,最大值为 100)(数字,可选)repo:可选的仓库名称。如果与 owner 一起提供,则仅列出此仓库的通知。(字符串,可选)since:仅显示在给定时间之后更新的通知(ISO 8601 格式)(字符串,可选)
- 所需 OAuth 范围:
-
manage_notification_subscription - 管理通知订阅
- 所需 OAuth 范围:
notifications action:要执行的操作:ignore、watch 或 delete 通知订阅。(字符串,必填)notificationID:通知线程的 ID。(字符串,必填)
- 所需 OAuth 范围:
-
manage_repository_notification_subscription - 管理仓库通知订阅
- 所需 OAuth 范围:
notifications action:要执行的操作:ignore、watch 或 delete 仓库通知订阅。(字符串,必填)owner:仓库的账户所有者。(字符串,必填)repo:仓库的名称。(字符串,必填)
- 所需 OAuth 范围:
-
mark_all_notifications_read - 将所有通知标记为已读
- 所需 OAuth 范围:
notifications lastReadAt:描述上次检查通知的时间点(可选)。默认值:现在(字符串,可选)owner:可选的仓库所有者。如果与 repo 一起提供,则仅将此仓库的通知标记为已读。(字符串,可选)repo:可选的仓库名称。如果与 owner 一起提供,则仅将此仓库的通知标记为已读。(字符串,可选)
- 所需 OAuth 范围:

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

项目
-
projects_get - 获取 GitHub Projects 资源的详细信息
- 必需的 OAuth 作用域:
read:project - 接受的 OAuth 作用域:
project、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:所有者类型(user 或 org)。如果未提供,将自动检测。(字符串,可选)project_number:项目的编号。(数字,可选)status_update_id:项目状态更新的节点 ID。'get_project_status_update' 方法必需。(字符串,可选)
- 必需的 OAuth 作用域:
-
projects_list - 列出 GitHub Projects 资源
- 必需的 OAuth 作用域:
read:project - 接受的 OAuth 作用域:
project、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:所有者类型(user 或 org)。如果未提供,将自动尝试两者。(字符串,可选)per_page:每页结果数(最大值为 50)(数字,可选)project_number:项目的编号。'list_project_fields'、'list_project_items' 和 'list_project_status_updates' 方法必需。(数字,可选)query:筛选/查询字符串。对于 list_projects:按标题文本和状态筛选(例如 "roadmap is:open")。对于 list_project_items:使用 GitHub 的项目筛选语法进行高级筛选。(字符串,可选)
- 必需的 OAuth 作用域:
-
projects_write - 管理 GitHub Projects
- 必需的 OAuth 作用域:
project body:状态更新的正文(markdown)。用于 'create_project_status_update' 方法。(字符串,可选)field_name:迭代字段的名称(例如 'Sprint')。'create_iteration_field' 方法必需。(字符串,可选)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' 方法必需。(字符串,可选)iteration_duration:字段迭代的持续时间(以天为单位)(例如,每周为 7,每两周为 14)。'create_iteration_field' 方法必需。(数字,可选)iterations:'create_iteration_field' 方法的自定义迭代。仅当您需要持续时间不同、之间有间隔或具有特定标题的迭代时才设置此项。否则请省略:GitHub 会自动从 'start_date' 开始创建三个持续时间为 'iteration_duration' 天的迭代,这在大多数情况下是正确的选择。(对象数组,可选)method:要执行的方法(字符串,必需)owner:项目所有者(用户或组织登录名)。名称不区分大小写。(字符串,必需)owner_type:所有者类型(user 或 org)。'create_project' 方法必需。对于其他方法,如果未提供,将自动检测。(字符串,可选)project_number:项目的编号。除 'create_project' 之外的所有方法都必需。(数字,可选)pull_request_number:拉取请求编号(当 'add_project_item' 方法的 item_type 为 'pull_request' 时使用)。提供 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:描述要更新的字段及其新值的对象。'update_project_item' 方法必需。接受两种形式:(1) 按 ID——{"id": 123456, "value": "..."};(2) 按名称——{"name": "Status", "value": "In Progress"}。对于单选字段,选项名称解析需要按名称的形式;在按 ID 的形式中,请传递选项 ID。将 value 设置为 null 可清除该字段。(对象,可选)
- 必需的 OAuth 作用域:

拉取请求
-
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:排序方向(字符串,可选)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 - 获取拉取请求中头部提交的组合提交状态。
- get_files - 获取拉取请求中更改的文件列表。可与分页参数配合使用以控制返回结果的数量。
- get_commits - 获取拉取请求上的提交列表。可与分页参数配合使用以控制返回结果的数量。
- get_review_comments - 获取拉取请求上的审查讨论串。每个讨论串包含在拉取请求审查期间对同一代码位置进行的逻辑分组的审查评论。返回带有元数据(isResolved、isOutdated、isCollapsed)的讨论串及其关联的评论。使用基于游标的分页(perPage、after)来控制结果。
- get_reviews - 获取拉取请求上的审查。当要求提供审查评论时,请使用 get_review_comments 方法。可与分页参数配合使用以控制返回结果的数量。
- get_comments - 获取拉取请求上的评论。如果用户并非专门要求审查评论,请使用此方法。可与分页参数配合使用以控制返回结果的数量。
- get_check_runs - 获取拉取请求头部提交的检查运行。检查运行是在 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 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 branch:要在其中创建/更新文件的分支(字符串,必需)content:文件内容(字符串,必需)message:提交消息(字符串,必需)owner:仓库所有者(用户名或组织)(字符串,必需)path:创建/更新文件的路径(字符串,必需)repo:仓库名称(字符串,必需)sha:要替换的文件的 blob SHA。如果文件已存在,则为必需项。(字符串,可选)
- 必需的 OAuth 范围:
-
create_repository - 创建仓库
- 必需的 OAuth 范围:
repo autoInit:使用 README 初始化(布尔值,可选)description:仓库描述(字符串,可选)name:仓库名称(字符串,必需)organization:要在其中创建仓库的组织(省略则在您的个人账户中创建)(字符串,可选)private:仓库是否应为私有。省略时默认为 true(私有)。(布尔值,可选)
- 必需的 OAuth 范围:
-
delete_file - 删除文件
- 必需的 OAuth 范围:
repo branch:要从中删除文件的分支(字符串,必需)message:提交消息(字符串,必需)owner:仓库所有者(用户名或组织)(字符串,必需)path:要删除的文件的路径(字符串,必需)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 owner:仓库所有者(用户名或组织)(字符串,必需)path:文件/目录的路径(字符串,可选)ref:接受可选的 git 引用,例如refs/tags/{tag}、refs/heads/{branch}或refs/pull/{pr_number}/head(字符串,可选)repo:仓库名称(字符串,必需)sha:接受可选的提交 SHA。如果指定,将使用它而不是引用(字符串,可选)
- 必需的 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:用于过滤提交的作者用户名或电子邮件地址(字符串,可选)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 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 branch:要推送到的分支(字符串,必填)files:要推送的文件对象数组,每个对象包含 path(字符串)和 content(字符串)(对象数组,必填)message:提交信息(字符串,必填)owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)
- 所需 OAuth 范围:
-
search_code - 搜索代码
- 所需 OAuth 范围:
repo 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 - 接受的 OAuth 范围:
repo、security_events alertNumber:警报编号。(数字,必填)owner:仓库所有者。(字符串,必填)repo:仓库名称。(字符串,必填)
- 所需 OAuth 范围:
-
list_secret_scanning_alerts - 列出密钥扫描警报
- 所需 OAuth 范围:
security_events - 接受的 OAuth 范围:
repo、security_events owner:仓库所有者。(字符串,必填)page:分页页码(最小 1)(数字,可选)perPage:分页每页结果数(最小 1,最大 100)(数字,可选)repo:仓库名称。(字符串,必填)resolution:按解决状态过滤(字符串,可选)secret_type:要返回的密钥类型列表,以逗号分隔。默认返回所有密钥模式。要返回通用模式,请在参数中传递令牌名称。(字符串,可选)state:按状态过滤(字符串,可选)
- 所需 OAuth 范围:

安全通告
-
get_global_security_advisory - 获取全局安全通告
- 所需 OAuth 范围:
security_events - 接受的 OAuth 范围:
repo、security_events ghsaId:GitHub 安全通告 ID(格式:GHSA-xxxx-xxxx-xxxx)。(字符串,必填)
- 所需 OAuth 范围:
-
list_global_security_advisories - 列出全局安全通告
- 所需 OAuth 范围:
security_events - 接受的 OAuth 范围:
repo、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 - 接受的 OAuth 范围:
repo、security_events direction:排序方向。(字符串,可选)org:组织登录名。(字符串,必填)sort:排序字段。(字符串,可选)state:按通告状态过滤。(字符串,可选)
- 所需 OAuth 范围:
-
list_repository_security_advisories - 列出仓库安全通告
- 所需 OAuth 范围:
security_events - 接受的 OAuth 范围:
repo、security_events direction:排序方向。(字符串,可选)owner:仓库所有者。(字符串,必填)repo:仓库名称。(字符串,必填)sort:排序字段。(字符串,可选)state:按通告状态过滤。(字符串,可选)
- 所需 OAuth 范围:

星标者
-
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 范围:

用户
- 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 Space
owner:空间所有者。(字符串,必填)name:空间名称。(字符串,必填)
-
list_copilot_spaces - 列出 Copilot Spaces
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-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
锁定模式的行为取决于所调用的工具。
当作者缺少推送权限时,以下工具将返回错误:
issue_read:getpull_request_read:get
以下工具将过滤掉缺少推送权限的用户的内容:
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 获取完整条款。