github-mcp-server
github-mcp-server 是 GitHub 官方推出的模型上下文协议(MCP)服务器,旨在成为连接人工智能工具与 GitHub 平台的桥梁。它让 AI 助手、聊天机器人或智能体能够直接“读懂”你的代码仓库,通过自然语言对话即可执行浏览代码、管理议题与拉取请求、分析构建失败原因以及监控自动化工作流等复杂操作。
这一工具主要解决了开发者在利用 AI 辅助编程时面临的“上下文割裂”痛点。以往 AI 往往缺乏对项目实时状态、权限细节及流水线数据的访问能力,而 github-mcp-server 赋予了 AI 真正的实操权限,使其从单纯的代码建议者转变为能主动参与项目维护和流程自动化的得力助手。
它专为希望将 AI 深度集成到开发工作流中的软件工程师、技术团队及开源维护者设计。无论是日常代码审查、Bug 分派,还是复杂的 CI/CD 故障排查,都能通过简单的指令高效完成。
其核心技术亮点在于支持远程托管模式,用户无需本地部署即可通过 VS Code 等主流编辑器快速接入;同时提供灵活的认证机制,既支持便捷的 OAuth 登录,也兼容个人访问令牌(PAT),确保企业在不同安全策略下均能顺畅使用,真正实现用自然语言驱动软件开发全流程。
使用场景
某后端开发团队在紧急修复一个线上高优先级 Bug 时,需要快速定位代码问题、创建修复分支并协调代码审查。
没有 github-mcp-server 时
- 开发者需在浏览器、IDE 和终端间频繁切换,手动搜索相关代码文件和提交记录以复现问题上下文。
- 创建修复分支、起草 Pull Request 描述以及关联 Issue 全靠人工操作,容易遗漏关键信息或格式不规范。
- 等待代码审查时,无法实时获取 CI/CD 流水线的失败日志详情,必须反复刷新页面查看构建状态。
- 团队成员间通过即时通讯软件同步进度,导致讨论碎片化,缺乏与代码变更直接关联的结构化记录。
使用 github-mcp-server 后
- 开发者直接在 IDE 的 AI 对话框中用自然语言查询“最近修改支付模块的提交”,github-mcp-server 即刻返回精准的文件差异与作者信息。
- 一句指令“为 Issue #1024 创建修复分支并提交 PR",github-mcp-server 自动完成分支创建、代码提交及包含上下文的 PR 描述生成。
- 当构建失败时,AI 助手通过 github-mcp-server 直接读取流水线日志,主动分析错误原因并给出具体修复建议,无需人工介入排查。
- 所有代码讨论、审查意见及状态更新均通过 AI 代理直接在 GitHub 平台上闭环完成,确保协作流程透明且可追溯。
github-mcp-server 将分散的 GitHub 操作转化为流畅的自然语言交互,让开发者从繁琐的平台跳转中解放,专注于核心代码逻辑的修复。
运行环境要求
- Linux
- macOS
- Windows
无需求
未说明

快速开始
GitHub MCP 服务器
GitHub MCP 服务器可将 AI 工具直接连接到 GitHub 平台。这使 AI 代理、助手和聊天机器人能够读取代码库和代码文件,管理问题与拉取请求,分析代码并自动化工作流——所有这些都可通过自然语言交互完成。
使用场景
- 仓库管理:浏览和查询代码、搜索文件、分析提交记录,并了解您有权访问的任何仓库的项目结构。
- 问题与 PR 自动化:创建、更新和管理问题及拉取请求。让 AI 协助分类 Bug、审查代码变更并维护项目看板。
- 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 的安装指南
- GitHub Copilot 在其他 IDE 中 - JetBrains、Visual Studio、Eclipse 和 Xcode 中安装 GitHub Copilot 的指南
- Claude 应用程序 - Claude Desktop 和 Claude Code CLI 的安装指南
- Codex - OpenAI Codex 的安装指南
- Cursor - Cursor IDE 的安装指南
- Windsurf - Windsurf IDE 的安装指南
- Rovo Dev CLI - Rovo Dev CLI 的安装指南
注意: 每个 MCP 主机应用都需要配置 GitHub 应用或 OAuth 应用来支持通过 OAuth 的远程访问。任何支持远程 MCP 服务器的主机应用都应支持使用 PAT 认证的远程 GitHub 服务器。具体配置细节和支持级别因主机而异。请务必参考主机应用的文档以获取更多信息。
配置
工具集配置
有关远程服务器配置、工具集、请求头及高级用法的完整详情,请参阅 远程服务器文档。该文档提供了在 VS Code 及其他 MCP 主机上连接、自定义和安装远程 GitHub MCP 服务器的全面说明和示例。
未指定任何工具集时,将使用 默认工具集。
Insiders 模式
抢先体验新功能! 远程服务器提供 Insiders 版本,可提前访问新功能和实验性工具。
| 使用 URL 路径 | 使用请求头 |
|---|---|
|
|
更多详细信息和示例请参阅 远程服务器文档,完整可用功能列表请参阅 Insiders 功能文档。
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}"
}
},
...
}
注意: 当使用 OAuth 与 GitHub Enterprise 结合 VS Code 和 GitHub Copilot 时,还需要配置 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 个人访问令牌。 MCP 服务器可以使用许多 GitHub API,因此请启用您认为适合授予 AI 工具的权限(如需了解更多关于访问令牌的信息,请查阅 文档)。
安全处理 PAT 的方法
环境变量(推荐)
为确保您的 GitHub PAT 安全且可在不同 MCP 主机之间重复使用:
将您的 PAT 存储在环境变量中
export GITHUB_PAT=your_token_here或者创建一个
.env文件:GITHUB_PAT=your_token_here保护您的
.env文件# 添加到 .gitignore 以防止意外提交 echo ".env" >> .gitignore在配置中引用令牌
# CLI 使用 claude mcp update github -e GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_PAT # 在配置文件中(若支持) "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://<您的 GHES 或 ghe.com 域名>"
}
}
安装
在 VS Code 中安装 GitHub Copilot
如需快速安装,请使用上方的任一键式安装按钮。完成该流程后,切换代理模式(位于 Copilot Chat 文本输入框旁),服务器便会启动。
有关在 VS Code 的代理模式中使用 MCP 服务器工具的更多信息,请参阅 代理模式文档。
在其他 IDE(JetBrains、Visual Studio、Eclipse 等)中安装 GitHub Copilot
将以下 JSON 块添加到您 IDE 的 MCP 设置中。
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "github_token",
"description": "GitHub 个人访问令牌",
"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 个人访问令牌",
"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 的安装指南
- Windsurf - Windsurf IDE 的安装指南
如需全面了解所有安装选项,请参阅我们的 安装指南索引。
注意: 任何支持本地 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。与动态工具集结合使用(累加):
github-mcp-server --tools get_file_contents --dynamic-toolsets这将注册
get_file_contents以及动态工具集中的工具(enable_toolset、list_available_toolsets、get_toolset_tools)。
重要提示:
- 工具、工具集和动态工具集可以同时使用。
- 只读模式优先:如果设置了
--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 时,您可以将特定工具作为环境变量传递。您还可以将工具与工具集结合使用:
# 仅工具
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
# 工具与工具集结合使用(累加)
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_security |
与代码安全相关的工具,例如 GitHub Code Scanning | |
copilot |
Copilot 相关工具 | |
dependabot |
Dependabot 工具 | |
discussions |
GitHub Discussions 相关工具 | |
gists |
GitHub Gist 相关工具 | |
git |
用于低级别 Git 操作的 GitHub Git API 相关工具 | |
issues |
GitHub Issues 相关工具 | |
labels |
GitHub Labels 相关工具 | |
notifications |
GitHub Notifications 相关工具 | |
orgs |
GitHub Organization 相关工具 | |
projects |
GitHub Projects 相关工具 | |
pull_requests |
GitHub Pull Request 相关工具 | |
repos |
GitHub Repository 相关工具 | |
secret_protection |
与机密保护相关的工具,例如 GitHub Secret Scanning | |
security_advisories |
安全公告相关工具 | |
stargazers |
GitHub Stargazers 相关工具 | |
users |
GitHub User 相关工具 |
远程 GitHub MCP 服务器中的附加工具集
| 工具集 | 描述 |
|---|---|
copilot |
Copilot 相关工具(例如 Copilot 编码代理) |
copilot_spaces |
Copilot Spaces 相关工具 |
github_support_docs_search |
搜索文档以解答 GitHub 产品及支持相关问题 |
工具

Actions
actions_get - 获取 GitHub Actions 资源的详细信息(工作流、工作流运行、作业和构件)
- 所需 OAuth 范围:
repo method: 要执行的方法(字符串,必填)owner: 仓库所有者(字符串,必填)repo: 仓库名称(字符串,必填)resource_id: 资源的唯一标识符。这会根据提供的“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 范围:
actions_list - 列出仓库中的 GitHub Actions 工作流
- 所需 OAuth 范围:
repo method: 要执行的操作(字符串,必填)owner: 仓库所有者(字符串,必填)page: 分页的页码(默认:1)(数字,可选)per_page: 每页显示的结果数(默认: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: 工作流作业的筛选条件。仅在方法为 '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: 如果为真,则获取由 run_id 指定的工作流运行中所有失败作业的日志。需要提供 run_id。(布尔值,可选)job_id: 工作流作业的唯一标识符。当要获取单个作业的日志时,此参数为必填项。(数字,可选)owner: 仓库所有者(字符串,必填)repo: 仓库名称(字符串,必填)return_content: 返回实际的日志内容而非 URL。(布尔值,可选)run_id: 工作流运行的唯一标识符。当 failed_only 为真时,此参数为必填项,用于获取该运行中所有失败作业的日志。(数字,可选)tail_lines: 从日志末尾返回的行数(数字,可选)
- 所需 OAuth 范围:

代码安全
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: 仓库的所有者。(字符串,必填)ref: 您想要列出结果的 Git 引用。(字符串,可选)repo: 仓库名称。(字符串,必填)severity: 按严重程度筛选代码扫描告警。(字符串,可选)state: 按状态筛选代码扫描告警。默认为未解决。(字符串,可选)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: 要为其获取团队的用户名。如果未提供,则使用已认证的用户。(字符串,可选)
- 所需 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 owner: 仓库的所有者。(字符串,必填)repo: 仓库的名称。(字符串,必填)severity: 按严重程度筛选 Dependabot 警报(字符串,可选)state: 按状态筛选 Dependabot 警报。默认为未解决(字符串,可选)
- 必需的 OAuth 范围:

讨论区
get_discussion - 获取讨论
- 必需的 OAuth 范围:
repo discussionNumber: 讨论编号(数字,必填)owner: 仓库所有者(字符串,必填)repo: 仓库名称(字符串,必填)
- 必需的 OAuth 范围:
get_discussion_comments - 获取讨论评论
- 必需的 OAuth 范围:
repo after: 分页游标。对于 GraphQL API,使用上一页 PageInfo 中的 endCursor。(字符串,可选)discussionNumber: 讨论编号(数字,必填)owner: 仓库所有者(字符串,必填)perPage: 每页返回的结果数,用于分页(最小 1,最大 100)(数字,可选)repo: 仓库名称(字符串,必填)
- 必需的 OAuth 范围:
list_discussion_categories - 列出讨论类别
- 必需的 OAuth 范围:
repo owner: 仓库所有者(字符串,必填)repo: 仓库名称。如果未提供,则将在组织级别查询讨论类别。(字符串,可选)
- 必需的 OAuth 范围:
list_discussions - 列出讨论
- 必需的 OAuth 范围:
repo after: 分页游标。对于 GraphQL API,使用上一页 PageInfo 中的 endCursor。(字符串,可选)category: 按讨论类别 ID 进行筛选(可选)。如果提供,则仅列出具有该类别的讨论。(字符串,可选)direction: 排序方向。(字符串,可选)orderBy: 按字段对讨论进行排序。如果提供,则也需要提供 'direction'。(字符串,可选)owner: 仓库所有者(字符串,必填)perPage: 每页返回的结果数,用于分页(最小 1,最大 100)(数字,可选)repo: 仓库名称。如果未提供,则将在组织级别查询讨论。(字符串,可选)
- 必需的 OAuth 范围:

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

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

议题
add_issue_comment - 向议题添加评论
- 所需 OAuth 范围:
repo body: 评论内容(字符串,必填)issue_number: 要评论的议题编号(数字,必填)owner: 仓库所有者(字符串,必填)repo: 仓库名称(字符串,必填)
- 所需 OAuth 范围:
get_label - 获取仓库中的特定标签。
- 所需 OAuth 范围:
repo name: 标签名称。(字符串,必填)owner: 仓库所有者(用户名或组织名称)(字符串,必填)repo: 仓库名称(字符串,必填)
- 所需 OAuth 范围:
issue_read - 获取议题详情
- 所需 OAuth 范围:
repo issue_number: 议题的编号(数字,必填)method: 对单个议题执行的读取操作。 选项包括:- get - 获取特定议题的详细信息。
- get_comments - 获取议题评论。
- get_sub_issues - 获取该议题的子议题。
- get_labels - 获取分配给该议题的标签。 (字符串,必填)
owner: 仓库的所有者(字符串,必填)page: 分页的页码(最小为1)(数字,可选)perPage: 每页显示的结果数(最小为1,最大为100)(数字,可选)repo: 仓库名称(字符串,必填)
- 所需 OAuth 范围:
issue_write - 创建或更新议题。
- 所需 OAuth 范围:
repo assignees: 要分配给该议题的用户名(字符串数组,可选)body: 议题正文内容(字符串,可选)duplicate_of: 该议题是哪个议题的重复。仅当 state_reason 为 'duplicate' 时使用。(数字,可选)issue_number: 要更新的议题编号(数字,可选)labels: 要应用到该议题的标签(字符串数组,可选)method: 对单个议题执行的写入操作。 选项包括:- 'create' - 创建新议题。
- 'update' - 更新现有议题。 (字符串,必填)
milestone: 阶段里程碑编号(数字,可选)owner: 仓库所有者(字符串,必填)repo: 仓库名称(字符串,必填)state: 新状态(字符串,可选)state_reason: 状态变更的原因。除非状态发生改变,否则将被忽略。(字符串,可选)title: 议题标题(字符串,可选)type: 该议题的类型。仅在仓库已配置议题类型时使用。请使用 list_issue_types 工具获取组织的有效类型值。如果仓库不支持议题类型,则省略此参数。(字符串,可选)
- 所需 OAuth 范围:
list_issue_types - 列出可用的议题类型
- 所需 OAuth 范围:
read:org - 接受的 OAuth 范围:
admin:org,read:org,write:org owner: 仓库所属组织的所有者(字符串,必填)
- 所需 OAuth 范围:
list_issues - 列出议题
- 所需 OAuth 范围:
repo after: 分页游标。对于 GraphQL API,使用上一页 PageInfo 中的 endCursor。(字符串,可选)direction: 排序方向。如果提供此参数,则也需要提供 'orderBy'。(字符串,可选)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' 来指定新的位置。 (字符串,必填)
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')。创建标签时必填,更新标签时可选。(字符串,可选)description: 标签描述文本。创建和更新标签时均可选。(字符串,可选)method: 要执行的操作:'create'、'update' 或 'delete'(字符串,必填)name: 标签名称 - 所有操作均需提供(字符串,必填)new_name: 标签的新名称(仅在使用 'update' 方法重命名时使用)(字符串,可选)owner: 仓库所有者(用户名或组织名称)(字符串,必填)repo: 仓库名称(字符串,必填)
- 所需 OAuth 范围:
list_label - 从仓库中列出标签
- 所需 OAuth 范围:
repo owner: 仓库所有者(用户名或组织名称)——所有操作均需提供(字符串,必填)repo: 仓库名称——所有操作均需提供(字符串,必填)
- 所需 OAuth 范围:

通知
dismiss_notification - 关闭通知
- 所需 OAuth 范围:
notifications state: 通知的新状态(已读/已完成)(字符串,必填)threadID: 通知线程的 ID(字符串,必填)
- 所需 OAuth 范围:
get_notification_details - 获取通知详情
- 所需 OAuth 范围:
notifications notificationID: 通知的 ID(字符串,必填)
- 所需 OAuth 范围:
list_notifications - 列出通知
- 所需 OAuth 范围:
notifications before: 仅显示在指定时间之前更新的通知(ISO 8601 格式)(字符串,可选)filter: 过滤通知类型,默认为未读。未读通知是指用户尚未查看的通知;参与中的通知则是指用户直接参与其中的通知,例如他们评论或创建的议题或拉取请求。(字符串,可选)owner: 可选的仓库所有者。如果同时提供了仓库名,则只列出该仓库的通知。(字符串,可选)page: 分页的页码(最小值为 1)(数字,可选)perPage: 每页显示的结果数量(最小值为 1,最大值为 100)(数字,可选)repo: 可选的仓库名称。如果同时提供了所有者,则只列出该仓库的通知。(字符串,可选)since: 仅显示在指定时间之后更新的通知(ISO 8601 格式)(字符串,可选)
- 所需 OAuth 范围:
manage_notification_subscription - 管理通知订阅
- 所需 OAuth 范围:
notifications action: 要执行的操作:忽略、关注或删除通知订阅。(字符串,必填)notificationID: 通知线程的 ID。(字符串,必填)
- 所需 OAuth 范围:
manage_repository_notification_subscription - 管理仓库通知订阅
- 所需 OAuth 范围:
notifications action: 要执行的操作:忽略、关注或删除仓库通知订阅。(字符串,必填)owner: 仓库的所有者账户。(字符串,必填)repo: 仓库的名称。(字符串,必填)
- 所需 OAuth 范围:
mark_all_notifications_read - 将所有通知标记为已读
- 所需 OAuth 范围:
notifications lastReadAt: 描述上次检查通知的时间点(可选)。默认值为当前时间。(字符串,可选)owner: 可选的仓库所有者。如果同时提供了仓库名,则只将该仓库的通知标记为已读。(字符串,可选)repo: 可选的仓库名称。如果同时提供了所有者,则只将该仓库的通知标记为已读。(字符串,可选)
- 所需 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 项目资源的详细信息
- 所需 OAuth 范围:
read:project - 接受的 OAuth 范围:
project,read:project field_id: 字段的 ID。用于“get_project_field”方法。(数字,可选)fields: 获取项目条目时,在响应中包含的具体字段 ID 列表(例如:[“102589”、“985201”、“169875”])。如果不提供,则仅包含标题字段。仅适用于“get_project_item”方法。(字符串数组,可选)item_id: 项目的 ID。用于“get_project_item”方法。(数字,可选)method: 要执行的方法(字符串,必填)owner: 所有者(用户或组织登录名)。名称不区分大小写。(字符串,可选)owner_type: 所有者类型(用户或组织)。如果不提供,则会自动检测。(字符串,可选)project_number: 项目的编号。(数字,可选)status_update_id: 项目状态更新的节点 ID。用于“get_project_status_update”方法。(字符串,可选)
- 所需 OAuth 范围:
projects_list - 列出 GitHub 项目资源
- 所需 OAuth 范围:
read:project - 接受的 OAuth 范围:
project,read:project after: 来自上一页 pageInfo.nextCursor 的向前分页光标。(字符串,可选)before: 来自上一页 pageInfo.prevCursor 的向后分页光标(较少见)。(字符串,可选)fields: 列出项目条目时要包含的字段 ID(例如:[“102589”、“985201”])。重要提示:务必提供此参数才能获取字段值。否则只会返回标题。仅适用于“list_project_items”方法。(字符串数组,可选)method: 要执行的动作(字符串,必填)owner: 所有者(用户或组织登录名)。名称不区分大小写。(字符串,必填)owner_type: 所有者类型(用户或组织)。如果不提供,则会自动尝试两种类型。(字符串,可选)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 项目条目
- 所需 OAuth 范围:
project body: 状态更新的内容(Markdown 格式)。用于create_project_status_update方法。(字符串,可选)issue_number: 问题编号(当item_type为issue时用于add_project_item方法)。请提供issue_number或pull_request_number中的一个。(数字,可选)item_id: 项目条目的 ID。用于update_project_item和delete_project_item方法时必填。(数字,可选)item_owner: 包含问题或拉取请求的仓库的所有者(用户或组织)。用于add_project_item方法时必填。(字符串,可选)item_repo: 包含问题或拉取请求的仓库名称。用于add_project_item方法时必填。(字符串,可选)item_type: 条目的类型,可以是 issue 或 pull_request。用于add_project_item方法时必填。(字符串,可选)method: 要执行的方法(字符串,必填)owner: 项目的负责人(用户或组织登录名)。名称不区分大小写。(字符串,必填)owner_type: 负责人类型(user 或 org)。如果未提供,则会自动检测。(字符串,可选)project_number: 项目的编号。(数字,必填)pull_request_number: 拉取请求编号(当item_type为pull_request时用于add_project_item方法)。请提供issue_number或pull_request_number中的一个。(数字,可选)start_date: 状态更新的开始日期,格式为 YYYY-MM-DD。用于create_project_status_update方法。(字符串,可选)status: 项目的状态。用于create_project_status_update方法。(字符串,可选)target_date: 状态更新的目标日期,格式为 YYYY-MM-DD。用于create_project_status_update方法。(字符串,可选)updated_field: 一个对象,包含要更新的项目字段的 ID 和该字段的新值。若要清空字段,将值设为 null。例如:{"id": 123456, "value": "新值"}。用于update_project_item方法时必填。(对象,可选)
- 所需 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: 回复的文字内容(字符串,必填)commentId: 要回复的评论 ID(数字,必填)owner: 仓库所有者(字符串,必填)pullNumber: 拉取请求编号(数字,必填)repo: 仓库名称(字符串,必填)
- 所需 OAuth 范围:
create_pull_request - 创建新的拉取请求
- 所需 OAuth 范围:
repo base: 要合并到的分支(字符串,必填)body: PR 描述(字符串,可选)draft: 是否创建为草稿 PR(布尔值,可选)head: 包含更改的分支(字符串,必填)maintainer_can_modify: 是否允许维护者编辑(布尔值,可选)owner: 仓库所有者(字符串,必填)repo: 仓库名称(字符串,必填)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 method: 操作,用于指定需要从 GitHub 获取的拉取请求数据。 可能的选项:- get - 获取特定拉取请求的详细信息。
- get_diff - 获取拉取请求的差异。
- get_status - 获取拉取请求中头部提交的合并提交状态。
- get_files - 获取拉取请求中更改的文件列表。结合分页参数控制返回结果的数量。
- get_review_comments - 获取拉取请求上的评审线程。每个线程包含在拉取请求评审期间对同一代码位置所做的逻辑分组的评审评论。返回带有元数据(isResolved、isOutdated、isCollapsed)及其相关评论的线程。使用基于游标的分页(perPage、after)来控制结果。
- get_reviews - 获取拉取请求上的评审。如果需要评审评论,请使用 get_review_comments 方法。
- get_comments - 获取拉取请求上的评论。如果用户不特别需要评审评论,可使用此方法。结合分页参数控制返回结果的数量。
- get_check_runs - 获取拉取请求头部提交的检查运行。检查运行是针对该拉取请求运行的各个 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 方法是必填项。评审线程 ID 可通过 pull_request_read 方法中的 get_review_comments 获取。(字符串,可选)
- 所需 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 用户名(字符串数组,可选)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: 仓库是否应为私有(布尔值,可选)
- 所需 OAuth 范围:
delete_file - 删除文件。
- 所需 OAuth 范围:
repo branch: 要从中删除文件的分支(字符串,必填)message: 提交消息(字符串,必填)owner: 仓库所有者(用户名或组织)(字符串,必填)path: 要删除文件的路径(字符串,必填)repo: 仓库名称(字符串,必填)
- 所需 OAuth 范围:
fork_repository - 分叉仓库。
- 所需 OAuth 范围:
repo organization: 要分叉到的组织(字符串,可选)owner: 仓库所有者(字符串,必填)repo: 仓库名称(字符串,必填)
- 所需 OAuth 范围:
get_commit - 获取提交详情。
- 所需 OAuth 范围:
repo include_diff: 是否在响应中包含文件差异和统计信息。默认为 true。(布尔值,可选)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。如果指定,则会替代ref使用(字符串,可选)
- 所需 OAuth 范围:
get_latest_release - 获取最新发布
- 所需 OAuth 范围:
repo owner: 仓库所有者(字符串,必填)repo: 仓库名称(字符串,必填)
- 所需 OAuth 范围:
get_release_by_tag - 根据标签名获取发布
- 所需 OAuth 范围:
repo owner: 仓库所有者(字符串,必填)repo: 仓库名称(字符串,必填)tag: 标签名(例如'v1.0.0')(字符串,必填)
- 所需 OAuth 范围:
get_tag - 获取标签详情
- 所需 OAuth 范围:
repo owner: 仓库所有者(字符串,必填)repo: 仓库名称(字符串,必填)tag: 标签名(字符串,必填)
- 所需 OAuth 范围:
list_branches - 列出分支
- 所需 OAuth 范围:
repo owner: 仓库所有者(字符串,必填)page: 分页的页码(最小值为 1)(数字,可选)perPage: 每页显示的结果数(最小值为 1,最大值为 100)(数字,可选)repo: 仓库名称(字符串,必填)
- 所需 OAuth 范围:
list_commits - 列出提交
- 所需 OAuth 范围:
repo author: 用于按作者用户名或电子邮件地址筛选提交的作者(字符串,可选)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_tags - 列出标签
- 所需 OAuth 范围:
repo owner: 仓库所有者(字符串,必填)page: 分页的页码(最小值为 1)(数字,可选)perPage: 每页显示的结果数(最小值为 1,最大值为 100)(数字,可选)repo: 仓库名称(字符串,必填)
- 所需 OAuth 范围:
push_files - 将文件推送到仓库
- 所需 OAuth 范围:
repo branch: 要推送的分支(字符串,必填)files: 要推送的文件对象数组,每个对象包含路径(字符串)和内容(字符串)(对象数组,必填)message: 提交信息(字符串,必填)owner: 仓库所有者(字符串,必填)repo: 仓库名称(字符串,必填)
- 所需 OAuth 范围:
search_code - 搜索代码
- 所需 OAuth 范围:
repo order: 结果的排序方式(字符串,可选)page: 分页的页码(最小值为 1)(数字,可选)perPage: 每页显示的结果数(最小值为 1,最大值为 100)(数字,可选)query: 使用 GitHub 强大的代码搜索语法进行查询。示例:content:Skill language:Java org:github、NOT is:archived language:Python OR language:go、repo:github/github-mcp-server。支持精确匹配、语言过滤、路径过滤等。(字符串,必填)sort: 排序字段(仅限'indexed')(字符串,可选)
- 所需 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: 仓库的所有者。(字符串,必填)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 的功能”,“修复 bug Y”等)。(字符串,必填)title: 将要创建的拉取请求的标题。(字符串,必填)base_ref: 代理将开始工作的 Git 引用(例如分支)。如果未指定,则默认为仓库的默认分支。(字符串,可选)
Copilot Spaces
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: 用户关于需要解答的问题的输入。这是最新的原始未编辑的用户消息。你应始终保留用户消息原样,绝不要对其进行修改。(字符串,必填)
动态工具发现
注意: 此功能目前处于测试阶段,尚未在远程 GitHub MCP 服务器中提供。请试用并告知我们是否遇到任何问题。
与其一开始就启用所有工具,不如开启动态工具集发现功能。动态工具集允许 MCP 主机根据用户提示列出并启用工具集,这有助于避免模型因可用工具过多而产生混淆的情况。
使用动态工具发现
在使用二进制文件时,可以传递 --dynamic-toolsets 标志。
./github-mcp-server --dynamic-toolsets
在使用 Docker 时,可以通过环境变量传递工具集:
docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN=<your-token> \
-e GITHUB_DYNAMIC_TOOLSETS=1 \
ghcr.io/github/github-mcp-server
只读模式
要以只读模式运行服务器,可以使用 --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
i18n / 覆盖描述
可以通过在二进制文件所在的目录下创建一个 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 应被视为不稳定,并可能随时发生破坏性变更。未来我们可能会提供稳定性保证;如果您有相关需求,请提交一个问题。
许可证
本项目采用 MIT 开源许可证授权。完整的条款请参阅 MIT。
版本历史
v0.32.02026/03/06v0.31.02026/02/19v0.30.32026/02/03v0.30.22026/01/27v0.30.12026/01/26v0.30.02026/01/26v0.29.02026/01/19v0.28.12026/01/12v0.28.02026/01/12v0.27.02026/01/05v0.26.32025/12/19v0.26.22025/12/19v0.26.12025/12/18v0.26.02025/12/18v0.26.0-rc.32025/12/17v0.26.0-rc.22025/12/16v0.26.0-rc.12025/12/16v0.25.02025/12/16v0.24.12025/12/08v0.24.02025/12/02相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
gemini-cli
gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。
markitdown
MarkItDown 是一款由微软 AutoGen 团队打造的轻量级 Python 工具,专为将各类文件高效转换为 Markdown 格式而设计。它支持 PDF、Word、Excel、PPT、图片(含 OCR)、音频(含语音转录)、HTML 乃至 YouTube 链接等多种格式的解析,能够精准提取文档中的标题、列表、表格和链接等关键结构信息。 在人工智能应用日益普及的今天,大语言模型(LLM)虽擅长处理文本,却难以直接读取复杂的二进制办公文档。MarkItDown 恰好解决了这一痛点,它将非结构化或半结构化的文件转化为模型“原生理解”且 Token 效率极高的 Markdown 格式,成为连接本地文件与 AI 分析 pipeline 的理想桥梁。此外,它还提供了 MCP(模型上下文协议)服务器,可无缝集成到 Claude Desktop 等 LLM 应用中。 这款工具特别适合开发者、数据科学家及 AI 研究人员使用,尤其是那些需要构建文档检索增强生成(RAG)系统、进行批量文本分析或希望让 AI 助手直接“阅读”本地文件的用户。虽然生成的内容也具备一定可读性,但其核心优势在于为机器
