关于 GitHub
GitHub MCP 服务是 GitHub 官方提供的 MCP 服务,可将 AI 工具连接到 GitHub 平台。面向希望通过自然语言读取仓库、管理 Issue 与 PR 并自动化工作流的开发者。同时提供远程服务与本地服务两种运行方式。
主要功能
- 01读取仓库与代码文件
- 02管理 Issue 与 PR
- 03查看 GitHub Actions 运行状态
- 04分析 Dependabot 与安全告警
- 05支持远程与本地两种运行方式
适用场景
- 01分析构建失败的原因
- 02自动创建或更新 Issue 与 PR
- 03查看团队讨论与通知
MCP 相关
该项目本身即为 MCP 服务,向 MCP 客户端暴露 GitHub 仓库、Issue、PR 与工作流相关的工具。远程服务由 GitHub 托管,本地服务可通过 Docker 运行。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://api.githubcopilot.com/mcp/claude mcp add --transport http github-remote https://api.githubcopilot.com/mcp/{"mcpServers":{"github-remote":{"type":"http","url":"https://api.githubcopilot.com/mcp/"}}}在 Cursor 中打开{"servers":{"github-remote":{"type":"http","url":"https://api.githubcopilot.com/mcp/"}}}在 VS Code 中打开{"mcpServers":{"github-remote":{"type":"http","url":"https://api.githubcopilot.com/mcp/"}}}{"mcpServers":{"github-remote":{"serverUrl":"https://api.githubcopilot.com/mcp/"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
https://api.githubcopilot.com/mcp/需要授权ghcr.io/github/github-mcp-server:2.0.3stdio工具
详细介绍
GitHub MCP 服务
GitHub MCP 服务可将 AI 工具直接连接到 GitHub 平台。这样,AI Agent、助手和聊天机器人便能读取仓库和代码文件、管理 issue 和 PR、分析代码并自动执行工作流。所有操作都通过自然语言交互完成。
使用场景
- 仓库管理:浏览和查询代码、搜索文件、分析提交,并了解你有权访问的任意仓库的项目结构。
- Issue 和 PR 自动化:创建、更新和管理 issue 与 pull request。让 AI 协助分类错误、审查代码更改并维护项目看板。
- CI/CD 和工作流分析:监控 GitHub Actions 工作流运行情况、分析构建失败、管理发布,并深入了解开发流水线。
- 代码分析:检查安全问题、审查 Dependabot 警报、了解代码模式,并全面洞察代码库。
- 团队协作:访问讨论、管理通知、分析团队活动,并简化团队流程。
专为希望将 AI 工具连接到 GitHub 上下文和功能的开发者打造,从简单的自然语言查询到复杂的多步骤 Agent 工作流,皆可支持。
使用 Go 模块
Go 模块路径为 github.com/github/github-mcp-server/v2。库的使用者
必须在导入中使用此前缀,例如
github.com/github/github-mcp-server/v2/pkg/github,并在 go get 命令中使用。
从仓库检出内容构建时,无需使用 /v2 子目录。
现有的 v2.0.0 标签早于此模块路径修正,不能用作 Go 模块。合并此更改后,必须
从包含修正后模块路径的提交打上新版本标签,例如 v2.0.1。
在此之前,使用者可以使用包含此更改的提交所对应的伪版本。
远程 GitHub MCP 服务
远程 GitHub MCP 服务由 GitHub 托管,是最简单的启用方式。如果你的 MCP 主机不支持远程 MCP 服务,也不用担心!你可以改用本地版 GitHub MCP 服务。
前提条件
- 支持远程服务的兼容 MCP 主机(VS Code 1.101+、Claude Desktop、Cursor、Windsurf 等)
- 已启用任何适用的策略
在 VS Code 中安装
如需快速安装,请使用上方的一个一键安装按钮。完成该流程后,切换到 Agent 模式(位于 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 终端 Agent 安装指南
- 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 服务。
未指定工具集时,将使用默认工具集。
Insiders 模式
抢先体验新功能! 远程服务提供 Insiders 版本,可提前体验新功能和实验性工具。
| 使用 URL 路径 | 使用标头 |
|---|---|
|
|
如需了解更多详情和示例,请参阅远程服务文档;如需查看可用功能的完整列表,请参阅Insiders 功能。
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 登录,了解其工作方式、无头模式/设备代码回退方案,以及如何使用你自己的 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
可使用标志 --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 中安装
如需快速安装,请使用上方任意一个一键安装按钮。完成该流程后,切换到 Agent 模式(位于 Copilot Chat 文本输入框旁),服务就会启动。
如需了解在 VS Code 中使用 MCP 服务工具的更多信息,请参阅 Agent 模式文档。
在其他 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 终端 Agent 安装指南
- Windsurf - Windsurf IDE 安装指南
- Zed - Zed 编辑器安装指南
如需查看所有安装选项的完整概览,请参阅 安装指南索引。
注意: 任何支持本地 MCP 服务的宿主应用都应该能够访问本地 GitHub MCP 服务。不过,具体配置流程、语法和集成稳定性会因宿主应用而异。虽然许多应用可能采用与上述示例类似的格式,但不保证一定如此。请参阅宿主应用的文档,了解正确的 MCP 配置语法和设置流程。
从源代码构建
如果没有 Docker,可以使用 go build 在 cmd/github-mcp-server 目录中构建二进制文件,并设置 GITHUB_PERSONAL_ACCESS_TOKEN 环境变量以使用你的令牌运行 github-mcp-server stdio 命令。若要指定构建产物的输出位置,请使用 -o 标志。应将服务器配置为使用构建好的可执行文件作为其 command。
STDIO API 请求会将服务器标识为 github-mcp-server/<version>,并在有上游 MCP 客户端名称和版本时,将其保留在括号中。客户端元数据中的控制字符、引号、反斜杠和括号会经过转义,以确保 HTTP 标头有效;普通名称、版本、空格和可打印的 Unicode 字符会保留。发布构建会保留其发布版本。包含修订元数据的源代码构建和默认 Docker 构建使用 vcs-<full-commit-sha>。Docker 发布工作流会保留标签版本(包括预发布版本),并使分支、拉取请求和每夜构建能够使用关联的源代码修订。只有当修订和修改状态都来自嵌入的 VCS 元数据时,才会应用 -dirty 标记;如果 main.commit 是有效且显式提供的,则绝不会应用此标记。这是一个 VCS 构建标识符,而非发布版本号。
在 Git 检出目录中运行 go build -o github-mcp-server ./cmd/github-mcp-server,即可构建完整软件包并嵌入其 VCS 修订。对于不包含 VCS 元数据的构建,可通过 -ldflags '-X main.version=<release>' 提供实际发布版本,或通过 -ldflags '-X main.commit=<sha>' 提供完整的源代码修订。有效元数据按以下顺序选取:显式发布版本、显式源代码修订、嵌入的 VCS 修订,然后是已安装的主模块版本。即使构建上下文筛选导致嵌入的 VCS 元数据发生变化,有效的显式修订仍具有最高优先级。缺失或格式错误的候选项会跳过,并继续尝试下一个可用来源。如果没有可用来源,STDIO 仍会以开发标签 dev 启动,并在 stderr 上发出警告,同时让 stdout 可供 MCP 协议使用。当需要按版本进行归因时,请提供真实的发布版本或修订元数据。
例如:
{
"mcp": {
"servers": {
"github": {
"command": "/path/to/github-mcp-server",
"args": ["stdio"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
}
}
}
}
}
工具配置
GitHub MCP Server 支持通过 --toolsets 标志启用或停用特定功能组。这样,你可以控制 AI 工具可使用哪些 GitHub API 功能。仅启用所需的工具集有助于大模型选择工具,并缩小上下文大小。
工具集不局限于工具。在适用情况下,也会包含相关的 MCP 资源和提示词。
如果未指定工具集,则使用默认工具集。
想查看示例? 请参阅服务器配置指南,其中包含最小配置、只读模式以及将工具与工具集组合使用等常见方案。
指定工具集
若要指定可供大模型使用的工具集,可以通过以下两种方式传入允许列表:
-
使用命令行参数:
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
Insiders 模式
本地 GitHub MCP 服务提供 Insiders 版本,可提前体验新功能和实验性工具。
-
使用命令行参数:
./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 Quality 相关的工具 | |
code_security | 与代码安全相关的工具,例如 GitHub Code Scanning | |
copilot | 与 Copilot 相关的工具 | |
copilot_issue_intents | 可选择启用的 Copilot Issue 分配工具,包含意图元数据(理由、置信度、建议) | |
dependabot | Dependabot 工具 | |
discussions | 与 GitHub Discussions 相关的工具 | |
gists | 与 GitHub Gist 相关的工具 | |
git | 用于底层 Git 操作的 GitHub Git API 相关工具 | |
governance | 用于管理仓库、组织和企业级规则集及自定义属性的仓库治理工具 | |
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 Secret Scanning | |
security_advisories | 与安全公告相关的工具 | |
stargazers | 与 GitHub Stargazers 相关的工具 | |
users | 与 GitHub User 相关的工具 |
远程 GitHub MCP 服务中的其他工具集
| 工具集 | 描述 |
|---|---|
copilot | Copilot 相关工具(例如 Copilot 编码 Agent) |
copilot_spaces | Copilot Spaces 相关工具 |
github_support_docs_search | 搜索文档以解答 GitHub 产品和支持相关问题 |
工具
当协商的 MCP 协议版本为受支持的 2026-07-28 或更高版本时,仓库工具会提供输出架构和类型化的 structuredContent。较旧的客户端、协议版本未知的客户端以及未提供版本的客户端,会收到现有内容,但没有输出架构或结构化输出。不能仅因未知版本的排序高于 2026-07-28,就将其视为受支持版本。
对于 get_file_contents,目录结果(包括字段投影)是结构化数组。文件下载和仅含元数据的响应使用 content 数组,其中包含类型化的文本、嵌入式资源或资源链接块,并保留状态消息、文本、Base64 数据块、空文件和下载链接。仅含文本的仓库变更操作(例如加星和删除)也会返回结构化的 message;分叉响应会区分仓库引用和进行中的消息。仓库删除在返回已完成结果前,仍需经过现有的确认流程。
结构化仓库结果使用紧凑的 DTO,而非原始 REST 对象。版本查询与版本列表使用相同的紧凑版本结构;Git 引用保留引用、对象类型和 SHA;带注释的标签保留标签、消息、标记者和目标信息;删除提交保留 SHA、消息、作者、树 SHA、父级 SHA,以及在可用时供用户查看的 html_url。目录条目保留文件元数据和实用的 HTML/下载链接,但即使在投影中请求了 API 和超媒体路由 URL,也会将其省略。旧版和未知协议版本会逐字节保留原始文本;现代的纯文本 JSON 响应序列化的紧凑 DTO 与 structuredContent 相同。非文本资源块和工具错误保留现有的内容行为。结构化投影使用与旧版格式化程序相同的已清理和筛选后的来源数据。
对于 get_repository_tree、list_gists、get_gist、create_gist 和 update_gist,gist 结果会保留文件名、内容、大小、语言/类型信息、时间戳、可见性和紧凑的所有者个人资料,同时省略 API/节点 URL 和 Git 传输 URL。树条目会省略可推导出的 API URL。创建/更新 gist 的结果包含 gist ID 和 HTML URL。现代 JSON 文本和结构化内容会序列化相同的紧凑结果。较旧或未知的协议版本会逐字节保留旧版文本,不提供输出架构或结构化内容。
对于协商的受支持协议版本 2026-07-28 或更高版本,问题元数据(list_issue_types、list_issue_fields)、评论(add_issue_comment、update_issue_comment)、依赖项(issue_dependency_read、issue_dependency_write)和重复项检测(find_duplicate)工具会提供类型化的 outputSchema 和 structuredContent。较旧或未知的协议版本会保留相同的文本响应,但不包含这些字段。工具错误不会返回结构化内容。依赖项和重复项检测工具保留现有的功能门控。
对于协商后的受支持协议版本 2026-07-28 或更高版本,整合后的 Actions 工具(actions_list、actions_get、actions_run_trigger)会返回结构化对象,其中包含 method 判别字段和特定于方法的类型化字段;JSON 文本包含相同的精简投影。工作流、作业和工件投影会省略 API/超媒体 URL,同时保留浏览器链接以及有用的标识符、状态、时间戳和用时。运行用量会按名称确定性排序列出可计费的运行器环境。较旧和未知协议的文本响应保持不变;get_job_logs 保留其类型化内容、URL 或失败作业集合变体。

Actions
-
actions_get - 获取 GitHub Actions 资源(工作流、工作流运行、作业和工件)的详细信息
- OAuth Challenge Scopes:
repo method:要执行的方法(字符串,必填)owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)resource_id:资源的唯一标识符。其值因所提供的“method”而异,请确保提供正确的 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 Challenge Scopes:
-
actions_list - 列出仓库中的 GitHub Actions 工作流
- OAuth Challenge Scopes:
repo method:要执行的操作(字符串,必填)owner:仓库所有者(字符串,必填)page:分页页码(默认值:1)(数字,可选)perPage:每页结果数(默认值:30,最大值:100)(数字,可选)repo:仓库名称(字符串,必填)resource_id:资源的唯一标识符。其值因所提供的“method”而异,请确保提供正确的 ID:- 对于 'list_workflows' 方法,无需提供资源 ID。
- 对于 'list_workflow_runs' 方法,请提供工作流 ID 或工作流文件名(例如 ci.yaml),也可以省略以列出仓库中的所有工作流运行。
- 对于 'list_workflow_jobs' 和 'list_workflow_run_artifacts' 方法,请提供工作流运行 ID。 (字符串,可选)
workflow_jobs_filter:工作流作业的筛选条件。仅用于 method 为 'list_workflow_jobs' 时(对象,可选)workflow_runs_filter:工作流运行的筛选条件。仅用于 method 为 'list_workflow_runs' 时(对象,可选)
- OAuth Challenge Scopes:
-
actions_run_trigger - 触发 GitHub Actions 工作流操作
- OAuth Challenge Scopes:
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 Challenge Scopes:
-
get_job_logs - 获取 GitHub Actions 工作流作业日志
- OAuth Challenge Scopes:
repo failed_only:为 true 时,获取由 run_id 指定的工作流运行中所有失败作业的日志。必须提供 run_id。(布尔值,可选)job_id:工作流作业的唯一标识符。获取单个作业的日志时必须提供。(数字,可选)owner:仓库所有者(字符串,必需)repo:仓库名称(字符串,必需)return_content:返回实际日志内容,而不是 URL(布尔值,可选)run_id:工作流运行的唯一标识符。failed_only 为 true 时,必须提供此参数以获取该运行中所有失败作业的日志。(数字,可选)tail_lines:从日志末尾返回的行数(数字,可选)
- OAuth Challenge Scopes:

代码质量
- get_code_quality_finding - 获取代码质量问题
- OAuth Challenge Scopes:
repo findingNumber:问题编号。(数字,必需)owner:仓库所有者。(字符串,必需)repo:仓库名称。(字符串,必需)
- OAuth Challenge Scopes:

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

上下文
-
get_me - 获取我的用户资料
- MCP App UI:
ui://github-mcp-server/get-me - 无需参数
- MCP App UI:
-
get_team_members - 获取团队成员
- OAuth Challenge Scopes:
read:org org:包含该团队的组织登录名(所有者)。(字符串,必需)team_slug:团队标识名(字符串,必需)
- OAuth Challenge Scopes:
-
get_teams - 获取团队
- OAuth Challenge Scopes:
read:org user:要获取其团队的用户名。如果未提供,则使用已通过身份验证的用户。(字符串,可选)
- OAuth Challenge Scopes:
-
ui_get - 获取 UI 数据
- OAuth Challenge Scopes:
repo、read:org method:要获取的数据类型(字符串,必需)owner:仓库所有者(所有方法均必需)(字符串,必需)repo:仓库名称(获取标签、指派人、里程碑、分支、议题字段、审查者时必需)(字符串,可选)
- OAuth Challenge Scopes:

Copilot
-
assign_copilot_to_issue - 将 Copilot 分配给议题
- OAuth Challenge Scopes:
repo base_ref:Agent 将从该 Git 引用(例如分支)开始工作。如果未指定,则默认为仓库的默认分支(字符串,可选)custom_instructions:用于在议题正文之外为 Agent 提供指导的自定义说明(可选)。可用于补充议题描述中未涵盖的背景信息、限制条件或指导(字符串,可选)issue_number:议题编号(数字,必填)owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)
- OAuth Challenge Scopes:
-
request_copilot_review - 请求 Copilot 审查
- OAuth Challenge Scopes:
repo owner:仓库所有者(字符串,必填)pullNumber:拉取请求编号(数字,必填)repo:仓库名称(字符串,必填)
- OAuth Challenge Scopes:

Copilot 议题意图
- assign_copilot_to_issue_with_intent - 按意图将 Copilot 分配给议题
- OAuth Challenge Scopes:
repo base_ref:Agent 将从该 Git 引用(例如分支)开始工作。如果未指定,则默认为仓库的默认分支。当 is_suggestion 为 true 时,此参数将被忽略(字符串,可选)confidence:你对该选择的信心程度。对于明确信号或用户明确请求,使用 'HIGH';对于有一定歧义但合理的推断,使用 'MEDIUM';对于信号有限时的最佳猜测,使用 'LOW'。(字符串,必填)custom_instructions:用于在议题正文之外为 Agent 提供指导的自定义说明(可选)。当 is_suggestion 为 true 时,此参数将被忽略(字符串,可选)is_suggestion:如果为 true,则记录待处理的 Copilot 分配意图,而不是启动 Agent。之后的批准会提供启动所需的上下文;在这种情况下,base_ref 和 custom_instructions 将被忽略。(布尔值,必填)issue_number:议题编号(数字,必填)owner:仓库所有者(字符串,必填)rationale:用一句简洁的话说明议题中的哪些具体信息促使你选择 Copilot。请指出具体信号(例如,‘范围明确且验收标准清晰的任务’)。(字符串,必填)repo:仓库名称(字符串,必填)
- OAuth Challenge Scopes:

Dependabot
- get_dependabot_alert - 获取 Dependabot 警报
- OAuth Challenge Scopes:
security_events alertNumber:警报编号。(数字,必填)owner:仓库所有者。(字符串,必填)repo:仓库名称。(字符串,必填)
- OAuth Challenge Scopes:

讨论
-
discussion_comment_write - 管理讨论评论
- OAuth Challenge Scopes:
repo body:评论内容('add'、'reply' 和 'update' 方法必填)(string,可选)commentNodeID:讨论评论的 Node ID('reply'、'update'、'delete'、'mark_answer' 和 'unmark_answer' 方法必填)。对于 'reply',这是要回复的顶层评论;GitHub Discussions 仅支持一层嵌套。(string,可选)discussionNumber:讨论编号('add' 和 'reply' 方法必填)(number,可选)method:要对讨论评论执行的写入操作。 选项包括:- 'add' - 在讨论中添加新的顶层评论。
- 'reply' - 回复顶层讨论评论(GitHub Discussions 仅支持一层嵌套)。
- 'update' - 更新现有讨论评论。
- 'delete' - 删除讨论评论。
- 'mark_answer' - 将讨论评论标记为答案(仅限问答)。
- 'unmark_answer' - 取消将讨论评论标记为答案(仅限问答)。 (string,必填)
owner:仓库所有者('add' 和 'reply' 方法必填)(string,可选)repo:仓库名称('add' 和 'reply' 方法必填)(string,可选)
- OAuth Challenge Scopes:
-
get_discussion - 获取讨论
- OAuth Challenge Scopes:
repo discussionNumber:讨论编号(number,必填)owner:仓库所有者(string,必填)repo:仓库名称(string,必填)
- OAuth Challenge Scopes:
-
get_discussion_comments - 获取讨论评论
- OAuth Challenge Scopes:
repo after:分页游标。使用上一次响应中的游标。(string,可选)discussionNumber:讨论编号(number,必填)includeReplies:为 true 时,每条顶层评论都会包含嵌套在其中的回复(每条评论最多 100 条回复,这是 GitHub API 的上限)。默认为 false。(boolean,可选)owner:仓库所有者(string,必填)perPage:分页时每页的结果数(最小值为 1,最大值为 100)(number,可选)repo:仓库名称(string,必填)
- OAuth Challenge Scopes:
-
list_discussion_categories - 列出讨论类别
- OAuth Challenge Scopes:
repo owner:仓库所有者(string,必填)repo:仓库名称。如果未提供,将在组织级别查询讨论类别。(string,可选)
- OAuth Challenge Scopes:

Gists
-
create_gist - 创建 Gist
- OAuth Challenge Scopes:
gist content: 用于创建简单的单文件 gist 的内容(string, required)description: gist 的描述(string, optional)filename: 用于创建简单的单文件 gist 的文件名(string, required)public: gist 是否公开(boolean, optional)
- OAuth Challenge Scopes:
-
get_gist - 获取 Gist 内容
gist_id: gist 的 ID(string, required)
-
list_gists - 列出 Gist
page: 分页的页码(最小值 1)(number, optional)perPage: 每页的分页结果数(最小值 1,最大值 100)(number, optional)since: 仅列出在此时间之后更新的 gist(ISO 8601 时间戳)(string, optional)username: GitHub 用户名(省略则列出已认证用户的 gist)(string, optional)
-
update_gist - 更新 Gist
- OAuth Challenge Scopes:
gist content: 文件内容(string, required)description: 更新后的 gist 描述(string, optional)filename: 要更新或创建的文件名(string, required)gist_id: 要更新的 gist 的 ID(string, required)
- OAuth Challenge Scopes:

Git
- get_repository_tree - 获取仓库树
- OAuth Challenge Scopes:
repo owner: 仓库所有者(用户名或组织)(string, required)path_filter: 可选的路径前缀,用于筛选树结果(例如,'src/'表示仅显示 src 目录中的文件)(string, optional)recursive: 将此参数设为 true 会返回树引用的对象或子树。默认值为 false(boolean, optional)repo: 仓库名称(string, required)tree_sha: 树的 SHA1 值或 ref(分支或标签)名称。默认为仓库的默认分支(string, optional)
- OAuth Challenge Scopes:

Governance
- **create_repository_ruleset** - 创建仓库规则集
- **OAuth Challenge Scopes**:`repo`、`admin:org`、`admin:enterprise`
- `bypass_actors`:可绕过此规则集规则的主体(object[],可选)
- `conditions`:此规则集的适用条件,例如 {"ref_name": {"include": ["refs/heads/main"], "exclude": []}}(object,可选)
- `enforcement`:规则集的强制级别。'evaluate' 允许管理员在强制执行规则前进行测试(string,必填)
- `enterprise`:企业 slug。level 为 'enterprise' 时必填。(string,可选)
- `level`:配置规则集的级别:
- 'repository':单个仓库的规则集(需要 'owner' 和 'repo')。
- 'organization':涵盖组织中多个仓库的规则集(需要 'org')。
- 'enterprise':涵盖整个企业中多个仓库的规则集(需要 'enterprise')。(string,必填)
- `name`:规则集名称(string,必填)
- `org`:组织名称。level 为 'organization' 时必填。(string,可选)
- `owner`:仓库所有者。level 为 'repository' 时必填。(string,可选)
- `repo`:仓库名称。level 为 'repository' 时必填。(string,可选)
- `rules`:规则集中的规则数组。每条规则都是一个对象,包含 'type'(例如 'creation'、'deletion'、'non_fast_forward'、'required_signatures'、'pull_request'、'required_status_checks');需要配置的规则还包含一个 'parameters' 对象(object[],必填)
- `target`:规则集的目标。默认为 'branch'。'repository' 仅适用于 'organization' 和 'enterprise' 级别的规则集。(string,可选)
-
custom_properties_read - 读取自定义属性
- OAuth Challenge Scopes:
repo、read:org、read:enterprise enterprise:企业 slug。level 为 'enterprise' 时必填。(string,可选)level:管理自定义属性的级别:- 'repository':分配给仓库的自定义属性值(需要 'owner' 和 'repo')。
- 'organization':组织的自定义属性定义(架构)(需要 'org')。
- 'enterprise':企业的自定义属性定义(架构)(需要 'enterprise')。(string,必填)
org:组织名称。level 为 'organization' 时必填。(string,可选)owner:仓库所有者。level 为 'repository' 时必填。(string,可选)repo:仓库名称。level 为 'repository' 时必填。(string,可选)
- OAuth Challenge Scopes:
-
custom_properties_write - 设置自定义属性
- OAuth Challenge Scopes:
repo、admin:org、admin:enterprise enterprise:企业 slug。level 为 'enterprise' 时必填。(string,可选)level:管理自定义属性的级别:- 'repository':分配给仓库的自定义属性值(需要 'owner' 和 'repo')。
- 'organization':组织的自定义属性定义(架构)(需要 'org')。
- 'enterprise':企业的自定义属性定义(架构)(需要 'enterprise')。(string,必填)
org:组织名称。level 为 'organization' 时必填。(string,可选)owner:仓库所有者。level 为 'repository' 时必填。(string,可选)properties:要创建或更新的自定义属性。在仓库级别,每项用于指定一个值('property_name' 和 'value');在组织和企业级别,每项用于定义架构('property_name' 和 'value_type',以及可选的定义字段)。(object[],必填)repo:仓库名称。level 为 'repository' 时必填。(string,可选)
- OAuth Challenge Scopes:
-
repository_ruleset_read - 读取仓库规则集
- OAuth Challenge Scopes:
repo、read:org、read:enterprise actor_name:用于筛选规则套件的 GitHub 用户账号句柄。由 'list_rule_suites' 方法使用。(string,可选)branch:分支名称。'get_rules_for_branch' 方法必填。(string,可选)enterprise:企业标识。当 level 为 'enterprise' 时必填。(string,可选)evaluate_status:按规则集评估模式筛选规则套件。由 'list_rule_suites' 方法使用。(string,可选)includes_parents:包含在更高级别配置且同样适用的规则集。默认为 true。在仓库级别由 'get' 和 'list' 方法使用。(boolean,可选)level:规则集的配置级别:- 'repository':单个仓库上的规则集(需要 'owner' 和 'repo')。
- 'organization':涵盖组织内仓库的规则集(需要 'org')。
- 'enterprise':涵盖企业内仓库的规则集(需要 'enterprise')。(string,必填)
method:要执行的操作:- 'get':按 ID 获取指定规则集(需要 'ruleset_id')。所有级别均支持。
- 'list':列出所有规则集。所有级别均支持。
- 'get_rules_for_branch':获取适用于某个分支的所有规则(需要 'branch')。仅支持仓库级别。
- 'list_rule_suites':列出规则套件,即针对推送执行的规则评估。仅支持仓库和组织级别。
- 'get_rule_suite':按 ID 获取指定规则套件(需要 'rule_suite_id')。仅支持仓库和组织级别。(string,必填)
org:组织名称。当 level 为 'organization' 时必填。(string,可选)owner:仓库所有者。当 level 为 'repository' 时必填。(string,可选)page:分页页码(最小值 1)(number,可选)perPage:每页分页结果数(最小值 1,最大值 100)(number,可选)ref:用于筛选规则套件的 ref 名称(分支、标签等)。由 'list_rule_suites' 方法使用。(string,可选)repo:仓库名称。当 level 为 'repository' 时必填。(string,可选)repository_name:用于筛选规则套件的仓库名称。在组织级别由 'list_rule_suites' 方法使用。(string,可选)rule_suite_id:规则套件 ID。'get_rule_suite' 方法必填。(number,可选)rule_suite_result:用于筛选的规则套件结果。由 'list_rule_suites' 方法使用。(string,可选)ruleset_id:规则集 ID。'get' 方法必填。(number,可选)time_period:用于筛选规则套件的时间段。由 'list_rule_suites' 方法使用。(string,可选)
- OAuth Challenge Scopes:

议题
- add_issue_comment - 为议题或拉取请求添加评论
- OAuth Challenge Scopes:
repo body:评论内容。除非提供 reaction,否则必填。(string,可选)comment_id:要添加反应的议题或拉取请求评论的数字 ID。对评论添加反应时使用此项;若要对议题或拉取请求本身添加反应,则省略此项。不能与 body 同时使用。(integer,可选)issue_number:要评论或添加反应的议题或拉取请求编号。(number,必填)owner:仓库所有者(string,必填)reaction:要添加的 Emoji 反应。除非提供 body,否则必填。(string,可选)repo:仓库名称(string,必填)
- OAuth Challenge Scopes:
-
issue_read - 获取议题详情
- OAuth Challenge Scopes:
repo issue_number:议题编号(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 - 获取分配给该议题的标签。 (string,必填)
- get - 获取议题详情。还会尽力返回层级标志(
owner:仓库所有者(string,必填)page:分页页码(最小值 1)(number,可选)perPage:每页结果数(最小值 1,最大值 100)(number,可选)repo:仓库名称(string,必填)
- OAuth Challenge Scopes:
-
issue_write - 创建或更新议题/拉取请求
- OAuth Challenge Scopes:
repo - MCP App UI:
ui://github-mcp-server/issue-write assignees:分配给此议题的用户名(string[],可选)body:议题正文内容(string,可选)duplicate_of:此议题所重复的议题编号。当 state_reason 为 'duplicate' 时必填。(number,可选)issue_fields:要设置或清除的议题字段值。每个项目都必须包含 'field_name',并且只能包含 'value'、'field_option_name' 或 'delete: true' 中的一项。(object[],可选)issue_number:要更新的议题编号(number,可选)labels:应用于此议题的标签(string[],可选)method:对单个议题执行的写入操作。 选项包括:- 'create' - 创建新议题。
- 'update' - 更新现有议题。 (string,必填)
milestone:里程碑编号(number,可选)owner:仓库所有者(string,必填)parent_issue_number:父议题的编号。仅在 method 为 'create' 时使用,且不能与 issue_fields 一起使用。新议题会在同一操作中创建并关联到此父议题。(number,可选)parent_owner:父议题所在仓库的所有者。必须与 parent_repo 一起提供。若要使用 owner 和 repo,请同时省略二者。仅在 method 为 'create' 且提供了 parent_issue_number 时使用。(string,可选)parent_repo:父议题所在的仓库名称。必须与 parent_owner 一起提供。若要使用 owner 和 repo,请同时省略二者。仅在 method 为 'create' 且提供了 parent_issue_number 时使用。(string,可选)repo:仓库名称(string,必填)state:新状态(string,可选)state_reason:状态变更原因。仅在状态发生变化时使用。(string,可选)title:议题标题(string,可选)type:此议题的类型。更新时,传入 null 可移除当前类型。仅当此仓库启用了议题类型时使用。使用 list_issue_types 获取此仓库或其所属组织的有效类型值。如果仓库不支持议题类型,请省略此参数。(string | null,可选)
- OAuth Challenge Scopes:
-
list_issue_fields - 列出议题字段
- OAuth Challenge Scopes:
repo、read:org owner:仓库或组织的账户所有者。名称不区分大小写。(string,必填)repo:仓库名称。提供时,返回此特定仓库的字段(继承自其所属组织)。省略时,直接返回组织级字段。(string,可选)
- OAuth Challenge Scopes:
-
list_issue_types - 列出可用的问题类型
- OAuth Challenge Scopes:
repo、read:org owner:仓库或组织的帐户所有者。(string,必填)repo:仓库名称。提供时,返回此特定仓库的问题类型。省略时,直接返回组织级别的问题类型。(string,可选)
- OAuth Challenge Scopes:
-
list_issues - 列出问题
- OAuth Challenge Scopes:
repo after:分页游标。使用上一个响应中的游标。(string,可选)direction:排序方向。提供此参数时,也必须提供orderBy。(string,可选)field_filters:按自定义问题字段值筛选。每个条目包含一个 field_name 和一个值;服务会查找该字段,并将值转换为对应的类型(单选选项名称、文本、数字或 YYYY-MM-DD 日期)。(object[],可选)fields:要为每个问题返回的字段子集。省略时,返回所有字段。仅需特定字段时,可使用此参数缩减响应大小;尤其是省略body和field_values,可以去掉每条结果中占用空间最大的部分。(string[],可选)labels:按标签筛选(string[],可选)orderBy:按字段对问题排序。提供此参数时,也必须提供direction。(string,可选)owner:仓库所有者(string,必填)perPage:每页的分页结果数(最少 1,最多 100)(number,可选)repo:仓库名称(string,必填)since:按日期筛选(ISO 8601 时间戳)(string,可选)state:按状态筛选;未提供时,默认返回打开和已关闭的问题(string,可选)
- OAuth Challenge Scopes:
-
search_issues - 搜索问题
- OAuth Challenge Scopes:
repo fields:要为每条问题结果返回的字段子集。省略时,返回所有字段。仅需特定字段时,可使用此参数缩减响应大小;尤其是省略body、reactions和labels,可以去掉每条结果中占用空间最大的部分。(string[],可选)order:排序顺序(string,可选)owner:可选的仓库所有者。与 repo 一起提供时,只列出此仓库的问题。(string,可选)page:分页页码(最少 1)(number,可选)perPage:每页的分页结果数(最少 1,最多 100)(number,可选)query:以自然语言编写的搜索查询。用户给出不同表述时,应将它们作为普通词语纳入查询,而不是用 OR 连接。(string,必填)repo:可选的仓库名称。与 owner 一起提供时,只列出此仓库的问题。(string,可选)sort:按匹配类别的数量排序的字段;默认按最佳匹配排序(string,可选)
- OAuth Challenge Scopes:
-
sub_issue_write - 更改子议题
- OAuth Challenge Scopes:
repo after_id:要在其后调整优先级的子议题 ID(必须指定after_id或before_id其中之一)(number,可选)before_id:要在其前调整优先级的子议题 ID(必须指定after_id或before_id其中之一)(number,可选)issue_number:父议题编号(number,必填)method:对单个子议题执行的操作 可选项:- 'add' - 将子议题添加到 GitHub 仓库中的父议题。
- 'remove' - 从 GitHub 仓库中的父议题移除子议题。
- 'reprioritize' - 更改 GitHub 仓库中父议题内子议题的顺序。使用 'after_id' 或 'before_id' 指定新位置。
写入议题层级结构。若要将子议题移至新的父议题,请使用
add并设置replace_parent=true;父议题字段不可写入。 (string,必填)
owner:仓库所有者(string,必填)replace_parent:为 true 时,替换子议题当前的父议题。仅与 'add' 方法搭配使用。(boolean,可选)repo:仓库名称(string,必填)sub_issue_id:要添加的子议题 ID。此 ID 与议题编号不同(number,必填)
- OAuth Challenge Scopes:
-
update_issue_comment - 更新议题评论
- OAuth Challenge Scopes:
repo body:新的评论内容(string,必填)comment_id:要更新的议题或拉取请求对话评论的数字 ID。请勿使用拉取请求评审评论 ID。(integer,必填)owner:仓库所有者(string,必填)repo:仓库名称(string,必填)
- OAuth Challenge Scopes:

标签
-
get_label - 获取仓库中的指定标签
- OAuth Challenge Scopes:
repo name:标签名称。(string,必填)owner:仓库所有者(用户名或组织名称)(string,必填)repo:仓库名称(string,必填)
- OAuth Challenge Scopes:
-
label_write - 对仓库标签执行写入操作
- OAuth Challenge 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,必填)
- OAuth Challenge Scopes:
-
list_label - 列出仓库中的标签
- OAuth Challenge Scopes:
repo after:分页游标。使用上一条响应中的游标。(string,可选)owner:仓库所有者(用户名或组织名称)- 所有操作均必填(string,必填)perPage:每页结果数(最小值 1,最大值 100)(number,可选)repo:仓库名称 - 所有操作均必填(string,必填)
- OAuth Challenge Scopes:

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

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

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

拉取请求
-
add_comment_to_pending_review - 向请求者最新的待处理拉取请求审查添加审查评论
- OAuth Challenge Scopes:
repo body:审查评论文本(字符串,必填)line:评论所针对的拉取请求差异中 blob 的行号。对于多行评论,这是范围的最后一行(数字,可选)owner:仓库所有者(字符串,必填)path:需要添加评论的文件相对路径(字符串,必填)pullNumber:拉取请求编号(数字,必填)repo:仓库名称(字符串,必填)side:要评论的差异一侧。LEFT 表示先前状态,RIGHT 表示新状态(字符串,可选)startLine:对于多行评论,这是评论所针对范围的第一行(数字,可选)startSide:对于多行评论,这是评论所针对的差异起始侧。LEFT 表示先前状态,RIGHT 表示新状态(字符串,可选)subjectType:评论所针对的级别(字符串,必填)
- OAuth Challenge Scopes:
-
add_reply_to_pull_request_comment - 回复拉取请求评论
- OAuth Challenge Scopes:
repo body:回复文本。除非提供了 reaction,否则必填。(字符串,可选)commentId:要回复或添加反应的拉取请求审查评论数字 ID。请使用 #discussion_r... 锚点中的编号,而不是 GraphQL 线程节点 ID(PRRT_...)。(数字,必填)owner:仓库所有者(字符串,必填)pullNumber:拉取请求编号。提供 body 时必填。(数字,可选)reaction:要添加的表情符号反应。除非提供了 body,否则必填。(字符串,可选)repo:仓库名称(字符串,必填)
- OAuth Challenge Scopes:
-
create_pull_request - 新建拉取请求
- OAuth Challenge Scopes:
repo - MCP App UI:
ui://github-mcp-server/pr-write base:要合并到的分支(字符串,必填)body:PR 描述(字符串,可选)draft:将 PR 创建为草稿(布尔值,可选)head:包含更改的分支(字符串,必填)maintainer_can_modify:允许维护者编辑(布尔值,可选)owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)reviewers:要请求审查的 GitHub 用户名或 ORG/team-slug 团队审查者(字符串数组,可选)title:PR 标题(字符串,必填)
- OAuth Challenge Scopes:
-
list_pull_requests - 列出拉取请求
- OAuth Challenge Scopes:
repo base:按基础分支筛选(字符串,可选)direction:排序方向(字符串,可选)fields:每个拉取请求要返回的字段子集。省略时将返回所有字段。仅需要特定字段时,可用此项减少响应大小;特别是省略 'body' 可去掉每个结果中体积最大的部分。(字符串数组,可选)head:按头部分支用户/组织及分支筛选(字符串,可选)owner:仓库所有者(字符串,必填)page:分页页码(最小值 1)(数字,可选)perPage:每页结果数(最小值 1,最大值 100)(数字,可选)repo:仓库名称(字符串,必填)sort:排序依据(字符串,可选)state:按状态筛选(字符串,可选)
- OAuth Challenge Scopes:
-
merge_pull_request - 合并拉取请求
- OAuth Challenge Scopes:
repo commit_message:合并提交的额外说明(字符串,可选)commit_title:合并提交的标题(字符串,可选)expectedHeadSha:拉取请求 HEAD 引用的预期 SHA(字符串,可选)merge_method:合并方法(字符串,可选)owner:仓库所有者(字符串,必填)pullNumber:拉取请求编号(数字,必填)repo:仓库名称(字符串,必填)
- OAuth Challenge Scopes:
-
pull_request_read - 获取单个拉取请求的详情
- OAuth Challenge Scopes:
repo after:分页游标,仅由 get_review_comments 方法使用。传入上一页 PageInfo 中的 endCursor,以获取下一页。(字符串,可选)method:指定从 GitHub 获取哪些拉取请求数据的操作。 可能的选项:- get - 获取特定拉取请求的详情。
- get_diff - 获取拉取请求的差异。
- get_status - 获取拉取请求中 HEAD 提交的综合提交状态。
- get_files - 获取拉取请求中已更改文件的列表。使用分页参数控制返回结果的数量。
- get_commits - 获取拉取请求中的提交列表。使用分页参数控制返回结果的数量。
- get_review_comments - 获取拉取请求中的审查讨论串。每个讨论串包含在拉取请求审查期间针对同一代码位置发表、按逻辑分组的审查评论。返回讨论串元数据和评论,其中当前及原始行范围坐标(line、start_line、original_line、original_start_line)可为空。坐标不可用时(例如评论已过时),不会返回当前坐标。使用基于游标的分页(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 Challenge Scopes:
-
pull_request_review_write - 对拉取请求审查执行写入操作(创建、提交、删除)
- OAuth Challenge Scopes:
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 Challenge Scopes:
-
search_pull_requests - 搜索拉取请求
- OAuth Challenge Scopes:
repo fields:每个拉取请求结果要返回的字段子集。省略时将返回所有字段。如果只需要特定字段,可使用此项减少响应大小;尤其是省略 'body'、'reactions' 和 'labels',可以去掉每个结果中体积最大的部分数据。(string[],可选)order:排序顺序(string,可选)owner:可选的仓库所有者。如果与 repo 一起提供,则仅列出此仓库的拉取请求。(string,可选)page:分页页码(最小值为 1)(number,可选)perPage:每页结果数(最小值为 1,最大值为 100)(number,可选)query:使用 GitHub 拉取请求搜索语法的搜索查询(string,必填)repo:可选的仓库名称。如果与 owner 一起提供,则仅列出此仓库的拉取请求。(string,可选)sort:按匹配类别数量排序的字段;默认按最佳匹配排序(string,可选)
- OAuth Challenge Scopes:
-
update_pull_request - 编辑拉取请求
- OAuth Challenge Scopes:
repo - MCP App UI:
ui://github-mcp-server/pr-edit base:新的目标分支名称(string,可选)body:新的描述(string,可选)draft:将拉取请求标记为草稿(true)或准备好接受评审(false)(boolean,可选)maintainer_can_modify:允许维护者进行编辑(boolean,可选)owner:仓库所有者(string,必填)pullNumber:要更新的拉取请求编号(number,必填)repo:仓库名称(string,必填)reviewers:要请求评审的 GitHub 用户名或 ORG/team-slug 团队评审者(string[],可选)state:新状态(string,可选)title:新标题(string,可选)
- OAuth Challenge Scopes:
-
update_pull_request_branch - 更新拉取请求分支
- OAuth Challenge Scopes:
repo expectedHeadSha:拉取请求 HEAD 引用的预期 SHA(string,可选)owner:仓库所有者(string,必填)pullNumber:拉取请求编号(number,必填)repo:仓库名称(string,必填)
- OAuth Challenge Scopes:

仓库
-
create_branch - 创建分支
- OAuth Challenge Scopes:
repo branch:新分支的名称(string,必填)from_branch:源分支(默认为仓库的默认分支)(string,可选)owner:仓库所有者(string,必填)repo:仓库名称(string,必填)
- OAuth Challenge Scopes:
-
create_or_update_file - 创建或更新文件
- OAuth Challenge Scopes:
repo、workflow allow_symlink_write:设为 true 可更新符号链接本身;内容必须是其新的目标路径。(boolean,可选)branch:创建或更新文件所在的分支(string,必填)content:文件内容,写入后应与此完全一致。不要对其进行 Base64 编码;此服务会在调用 REST API 前进行编码。(string,必填)message:提交说明(string,必填)owner:仓库所有者(用户名或组织)(string,必填)path:创建或更新文件的路径(string,必填)repo:仓库名称(string,必填)sha:要替换文件的 blob SHA。如果文件已存在,则为必填。使用 get_file_contents 并提供相同的 owner、repo 和 path,同时将 ref 设为此工具的 branch 值,即可获取。(string,可选)
- OAuth Challenge Scopes:
-
delete_file - 删除文件
- OAuth Challenge Scopes:
repo、workflow branch:要从中删除文件的分支(字符串,必填)message:提交消息(字符串,必填)owner:仓库所有者(用户名或组织)(字符串,必填)path:要删除的文件路径(字符串,必填)repo:仓库名称(字符串,必填)
- OAuth Challenge Scopes:
-
delete_repository - 删除仓库
- OAuth Challenge Scopes:
delete_repo、repo owner:仓库所有者(用户名或组织)(字符串,必填)repo:仓库名称(字符串,必填)
- OAuth Challenge Scopes:
-
fork_repository - 派生仓库
- OAuth Challenge Scopes:
repo organization:要派生到的组织(字符串,可选)owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)
- OAuth Challenge Scopes:
-
get_commit - 获取提交详情
- OAuth Challenge Scopes:
repo detail:要包含的已更改文件详情级别。"none" 表示完全省略统计信息和文件。"stats"(默认值)包含每个文件的元数据:文件名、状态和代码行数(新增、删除、更改),不包含补丁内容。"full_patch" 还会包含每个文件的统一差异内容,可能会非常大。(字符串,可选)owner:仓库所有者(字符串,必填)page:分页页码(最小值为 1)(数字,可选)perPage:每页结果数(最小值为 1,最大值为 100)(数字,可选)repo:仓库名称(字符串,必填)sha:提交 SHA、分支名称或标签名称(字符串,必填)
- OAuth Challenge Scopes:
-
get_file_contents - 获取文件或目录内容
- OAuth Challenge Scopes:
repo fields:当路径为目录时,每个条目要返回的字段子集。省略时会返回所有字段。路径为单个文件时,此参数会被忽略。列出目录时,可使用此参数缩小响应大小,例如只需要 'name' 和 'type'。(字符串数组,可选)owner:仓库所有者(用户名或组织)(字符串,必填)path:文件/目录路径(字符串,可选)ref:接受可选的 git 引用,例如refs/tags/{tag}、refs/heads/{branch}或refs/pull/{pr_number}/head(字符串,可选)repo:仓库名称(字符串,必填)sha:接受可选的提交 SHA。若指定,将取代 ref 使用(字符串,可选)
- OAuth Challenge Scopes:
-
get_latest_release - 获取最新发布版本
- OAuth Challenge Scopes:
repo owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)
- OAuth Challenge Scopes:
-
get_release_by_tag - 按标签名称获取发布版本
- OAuth Challenge Scopes:
repo owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)tag:标签名称(例如 'v1.0.0')(字符串,必填)
- OAuth Challenge Scopes:
-
get_tag - 获取标签详情
- OAuth Challenge Scopes:
repo owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)tag:标签名称(字符串,必填)
- OAuth Challenge Scopes:
-
list_branches - 列出分支
- OAuth Challenge Scopes:
repo owner:仓库所有者(字符串,必填)page:分页页码(最小值为 1)(数字,可选)perPage:每页结果数(最小值为 1,最大值为 100)(数字,可选)repo:仓库名称(字符串,必填)
- OAuth Challenge Scopes:
-
list_commits - 列出提交
- OAuth Challenge Scopes:
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 Challenge Scopes:
-
list_releases - 列出发行版本
- OAuth Challenge Scopes:
repo fields:每个发行版本要返回的字段子集。如果省略,则返回所有字段。如果只需要特定字段,可使用此参数减小响应大小;尤其是省略 'body' 可以去掉每个发行版本中占用空间最大的部分数据。(字符串数组,可选)owner:仓库所有者(字符串,必填)page:分页页码(最小值为 1)(数字,可选)perPage:每页分页结果数(最小值为 1,最大值为 100)(数字,可选)repo:仓库名称(字符串,必填)
- OAuth Challenge Scopes:
-
list_repository_collaborators - 列出仓库协作者
- OAuth Challenge Scopes:
repo affiliation:按关联关系筛选。可选值包括:'outside'(外部协作者)、'direct'(不论是否属于组织,列出所有拥有权限的协作者)、'all'(所有协作者)。默认值:'all'(字符串,可选)owner:仓库所有者(字符串,必填)page:分页页码(默认值为 1,最小值为 1)(数字,可选)perPage:每页分页结果数(默认值为 30,最小值为 1,最大值为 100)(数字,可选)repo:仓库名称(字符串,必填)
- OAuth Challenge Scopes:
-
list_tags - 列出标签
- OAuth Challenge Scopes:
repo owner:仓库所有者(字符串,必填)page:分页页码(最小值为 1)(数字,可选)perPage:每页分页结果数(最小值为 1,最大值为 100)(数字,可选)repo:仓库名称(字符串,必填)
- OAuth Challenge Scopes:
-
push_files - 推送文件到仓库
- OAuth Challenge Scopes:
repo、workflow branch:要推送到的分支(字符串,必填)files:要推送的文件对象数组,每个对象包含 path(字符串)和 content(字符串)(对象数组,必填)message:提交消息(字符串,必填)owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)
- OAuth Challenge Scopes:
-
search_code - 搜索代码
- OAuth Challenge Scopes:
repo fields:为每条代码搜索结果返回的字段子集。若省略,则返回所有字段。仅需特定字段时,可使用此参数缩减响应大小;尤其是省略 'repository' 和 'text_matches',可去掉每条结果中体积最大的部分数据。(string[],可选)order:结果的排序顺序(string,可选)page:分页的页码(最小值为 1)(number,可选)perPage:每页的结果数(最小值为 1,最大值为 100)(number,可选)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。(string,必填)sort:排序字段(仅限 'indexed')(string,可选)
- OAuth Challenge Scopes:
-
search_commits - 搜索提交
- OAuth Challenge Scopes:
repo order:排序顺序(string,可选)page:分页的页码(最小值为 1)(number,可选)perPage:每页的结果数(最小值为 1,最大值为 100)(number,可选)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。(string,必填)sort:按作者或提交者日期排序(默认按最佳匹配排序)(string,可选)
- OAuth Challenge Scopes:
-
search_repositories - 搜索代码仓库
- OAuth Challenge Scopes:
repo minimal_output:返回最少的代码仓库信息(默认值:true)。设为 false 时,现代客户端会收到额外整理的代码仓库详情,而非完整的 GitHub API 对象。旧版客户端仍会保留完整的 GitHub API 代码仓库对象。(boolean,可选)order:排序顺序(string,可选)page:分页的页码(最小值为 1)(number,可选)perPage:每页的结果数(最小值为 1,最大值为 100)(number,可选)query:代码仓库搜索查询。示例:'machine learning in:name stars:>1000 language:python'、'topic:react'、'user:facebook'。支持高级搜索语法,可进行精确筛选。(string,必填)sort:按字段对代码仓库排序,默认按最佳匹配排序(string,可选)
- OAuth Challenge Scopes:

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

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

星标者
- list_starred_repositories - 列出已加星标的仓库
- OAuth Challenge Scopes:
repo direction:结果排序方向。(string,可选)page:分页页码(最小值为 1)(number,可选)perPage:每页结果数(最小值为 1,最大值为 100)(number,可选)sort:结果排序方式。可以是 'created'(仓库被加星标的时间)或 'updated'(仓库最近一次推送的时间)。(string,可选)username:要列出其已加星标仓库的用户名。默认为已通过身份验证的用户。(string,可选)
- OAuth Challenge Scopes:
- unstar_repository - 取消仓库星标
- OAuth Challenge Scopes:
repo owner:仓库所有者(字符串,必填)repo:仓库名称(字符串,必填)
- OAuth Challenge Scopes:

用户
- search_users - 搜索用户
- OAuth Challenge Scopes:
repo order:排序顺序(字符串,可选)page:分页页码(最小值为 1)(数字,可选)perPage:每页结果数(最小值为 1,最大值为 100)(数字,可选)query:用户搜索查询。例如:'john smith'、'location:seattle'、'followers:>100'。搜索范围会自动限定为 type:user。(字符串,必填)sort:按关注者数量、仓库数量或用户加入 GitHub 的时间排序。(字符串,可选)
- OAuth Challenge Scopes:
远程 GitHub MCP 服务中的其他工具
Copilot
- create_pull_request_with_copilot - 使用 GitHub Copilot 编码 Agent 执行任务
owner:仓库所有者。你可以猜测所有者,但请在继续操作前与用户确认。(字符串,必填)repo:仓库名称。你可以猜测仓库名称,但请在继续操作前与用户确认。(字符串,必填)problem_statement:要执行任务的详细描述(例如:“实现功能 X”、“修复错误 Y”等)(字符串,必填)title:要创建的拉取请求标题(字符串,必填)base_ref:Agent 开始工作的 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 凭据的读写权限,通过过滤工具响应而隐藏的内容仍可能通过其他工具,或使用相同凭据直接访问 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
你还可以使用 ENV 变量覆盖描述。环境变量名称与 JSON 文件中的键相同,并添加 GITHUB_MCP_ 前缀且全部使用大写字母。
例如,要覆盖 TOOL_ADD_ISSUE_COMMENT_DESCRIPTION 工具的描述,可以设置以下环境变量:
export GITHUB_MCP_TOOL_ADD_ISSUE_COMMENT_DESCRIPTION="an alternative description"
覆盖服务名称和标题
同样的覆盖机制也可用于自定义初始化响应中的 MCP 服务 name 和 title 字段。在运行多个 GitHub MCP Server 实例时(例如,一个用于 github.com,另一个用于 GitHub Enterprise Server),这有助于 Agent 区分不同实例。
| 键 | 环境变量 | 默认值 |
|---|---|---|
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 视为不稳定,且可能发生不兼容变更。未来我们可能会提供稳定版本;如果你有相关使用场景并认为这会有所帮助,请提交 issue。
贡献
欢迎贡献。提交拉取请求前,请阅读贡献指南,了解环境设置、测试、代码检查和文档生成说明。
支持
如需了解如何使用 GitHub MCP Server,请参阅支持指南。如果您发现了错误或想请求新功能,请先搜索现有议题,再新建议题。
安全
请勿通过公开议题报告安全漏洞。请按照安全政策中的说明,负责任地报告漏洞。
许可证
本项目根据 MIT 开源许可证的条款授权。完整条款请参阅 MIT。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。