GitHub MCP服务器
GitHub MCP服务器将AI工具直接连接到GitHub平台。这使AI代理、助手和聊天机器人能够读取存储库和代码文件,管理问题和PR,分析代码,并自动化工作流程。通过自然语言的互动。
用例
- 存储库管理:浏览和查询代码、搜索文件、分析提交,并了解您有权访问的任何存储库中的项目结构。
- 问题和公关自动化:创建、更新和管理问题和拉取请求。让人工智能帮助分类错误、审查代码更改和维护项目板。
- CI/CD和工作流智能:监控GitHub Actions工作流运行,分析构建失败,管理发布,并深入了解您的开发流程。
- 代码分析:检查安全发现,查看Dependabot警报,了解代码模式,并全面了解您的代码库。
- 团队协作:访问讨论、管理通知、分析团队活动并简化团队流程。
专为希望将人工智能工具连接到GitHub上下文和功能的开发人员而设计,从简单的自然语言查询到复杂的多步骤代理工作流。
______________________________________________________________________
远程GitHub MCP服务器
远程GitHub MCP服务器由GitHub托管,提供了最简单的启动和运行方法。如果您的MCP主机不支持远程MCP服务器,请不要担心!您可以使用 相反。
先决条件
- 支持远程服务器的兼容MCP主机(VS Code 1.101+、Claude Desktop、Cursor、Windsurf等)
- 任何适用 已启用策略
在VS代码中安装
为了快速安装,请使用上面的一键安装按钮之一。完成该流程后,切换代理模式(位于副驾驶聊天文本输入处),服务器将启动。确保您正在使用 VS代码1.101 或 稍后 用于远程MCP和OAuth支持。
或者,要手动配置VS Code,请从以下示例中选择适当的JSON块并将其添加到您的主机配置中:
Using OAuthUsing a GitHub PAT VS Code (version 1.101 or greater)
{
"servers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/"
}
}
}{
"servers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer ${input:github_mcp_pat}"
}
}
},
"inputs": [
{
"type": "promptString",
"id": "github_mcp_pat",
"description": "GitHub Personal Access Token",
"password": true
}
]
}在其他MCP主机中安装
- **** -使用GitHub Copilot安装JetBrains、Visual Studio、Eclipse和Xcode
- Claude应用程序 -Claude Web、Claude Desktop和Claude Code CLI的安装指南
- 光标 -Cursor IDE安装指南
- 帆板运动 -Windsurf IDE安装指南
注: 每个MCP主机应用程序都需要配置一个GitHub应用程序或OAuth应用程序,以支持通过OAuth进行远程访问。任何支持远程MCP服务器的主机应用程序都应该支持具有PAT身份验证的远程GitHub服务器。配置细节和支持级别因主机而异。请确保参考主机应用程序的文档以获取更多信息。
⚠️ 公开预览状态: 这 远程 GitHub MCP服务器目前处于公开预览阶段。在预览期间,访问可能会根据身份验证类型和表面进行门控: - OAuth:在正式发布之前,遵循GitHub Copilot编辑器预览政策 - PAT:通过贵组织的PAT政策进行控制 - 复制副本中的MCP服务器策略:启用/禁用对VS Code中所有MCP服务器的访问,其他复制副本编辑器将在未来几个月内迁移到此策略。
配置
看 远程服务器文档 关于如何将其他配置设置传递给远程GitHub MCP服务器。
______________________________________________________________________
本地GitHub MCP服务器
](https://insiders.vscode.dev/redirect/mcp/install?name=github&inputs=%5B%7B%22id%22%3A%22github_token%22%2C%22type%22%3A%22promptString%22%2C%22description%22%3A%22GitHub%20Personal%20Access%20Token%22%2C%22password%22%3Atrue%7D%5D&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22--rm%22%2C%22-e%22%2C%22GITHUB_PERSONAL_ACCESS_TOKEN%22%2C%22ghcr.io%2Fgithub%2Fgithub-mcp-server%22%5D%2C%22env%22%3A%7B%22GITHUB_PERSONAL_ACCESS_TOKEN%22%3A%22%24%7Binput%3Agithub_token%7D%22%7D%7D) ](https://insiders.vscode.dev/redirect/mcp/install?name=github&inputs=%5B%7B%22id%22%3A%22github_token%22%2C%22type%22%3A%22promptString%22%2C%22description%22%3A%22GitHub%20Personal%20Access%20Token%22%2C%22password%22%3Atrue%7D%5D&config=%7B%22command%22%3A%22docker%22%2C%22args%22%3A%5B%22run%22%2C%22-i%22%2C%22--rm%22%2C%22-e%22%2C%22GITHUB_PERSONAL_ACCESS_TOKEN%22%2C%22ghcr.io%2Fgithub%2Fgithub-mcp-server%22%5D%2C%22env%22%3A%7B%22GITHUB_PERSONAL_ACCESS_TOKEN%22%3A%22%24%7Binput%3Agithub_token%7D%22%7D%7D&quality=insiders)
先决条件
- 要在容器中运行服务器,您需要 码头工人 安装。
- 安装Docker后,您还需要确保Docker正在运行。形象是公开的;如果你在pull时出错,你可能有一个过期的令牌,需要
docker logout ghcr.io. - 最后,你需要 .
MCP服务器可以使用许多GitHub API,因此请启用您认为授予AI工具的权限(要了解有关访问令牌的更多信息,请查看 文档).
Handling PATs Securely
环境变量(推荐)
为了确保您的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 update github -e GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_PAT
# 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上安装VS代码副本
为了快速安装,请使用上面的一键安装按钮之一。完成该流程后,切换代理模式(位于副驾驶聊天文本输入处),服务器将启动。
更多关于在VS Code中使用MCP服务器工具的信息 代理模式文档.
在其他IDE(JetBrains、Visual Studio、Eclipse等)上的GitHub Copilot中安装
将以下JSON块添加到IDE的MCP设置中。
{
"mcp": {
"inputs": [
{
"type": "promptString",
"id": "github_token",
"description": "GitHub Personal Access Token",
"password": true
}
],
"servers": {
"github": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"ghcr.io/github/github-mcp-server"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}"
}
}
}
}
}您可以选择将类似的示例(即不带mcp键)添加到名为的文件中 .vscode/mcp.json 在您的工作空间中。这将允许您与接受相同格式的其他主机应用程序共享配置。
Example JSON block without the MCP key included
{
"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主机应用程序,请参阅我们的安装指南:
- **** -使用GitHub Copilot安装JetBrains、Visual Studio、Eclipse和Xcode
- 克劳德代码和克劳德桌面 -Claude Code和Claude Desktop的安装指南
- 光标 -Cursor IDE安装指南
- 帆板运动 -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": ""
}
}
}
}
}工具配置
GitHub MCP Server支持通过以下方式启用或禁用特定功能组 --toolsets 旗帜。这允许您控制哪些GitHub API功能可用于您的人工智能工具。仅启用所需的工具集可以帮助LLM进行工具选择并减少上下文大小。
_工具集不限于工具。在适用的情况下,还包括相关的MCP资源和提示。_
可用工具集
以下工具集可用(默认情况下都处于打开状态):
| 工具集 | 说明 |
|---|---|
context | 强烈推荐:提供当前用户上下文和您正在操作的GitHub上下文的工具 |
actions | GitHub操作工作流和CI/CD操作 |
code_security | 代码安全相关工具,如GitHub代码扫描 |
dependabot 依赖于工具。 | |
discussions | GitHub讨论相关工具 |
experiments | 尚不稳定的实验特征 |
gists | GitHub Gist相关工具 |
issues | GitHub问题相关工具 |
notifications | GitHub通知相关工具 |
orgs | GitHub组织相关工具 |
pull_requests | GitHub Pull Request相关工具 |
repos | GitHub仓库相关工具 |
secret_protection | 与秘密保护相关的工具,如GitHub秘密扫描 |
users | GitHub用户相关工具 |
工具
Actions
- cancel_workflow_run -取消工作流运行
- owner:存储库所有者(字符串,必填) - repo:存储库名称(字符串,必填) - run_id:工作流运行的唯一标识符(数字,必填)
- delete_workflow_run_logs -删除工作流日志
- owner:存储库所有者(字符串,必填) - repo:存储库名称(字符串,必填) - run_id:工作流运行的唯一标识符(数字,必填)
- download_workflow_run_artifact -下载工作流工件
- artifact_id:工件的唯一标识符(编号,必填) - owner:存储库所有者(字符串,必填) - repo:存储库名称(字符串,必填)
- get_job_logs -获取作业日志
- failed_only:如果为true,则获取run_id中所有失败作业的日志(布尔值,可选) - job_id:工作流作业的唯一标识符(单个作业日志需要)(编号,可选) - owner:存储库所有者(字符串,必填) - repo:存储库名称(字符串,必填) - return_content:返回实际日志内容而不是URL(布尔值,可选) - run_id:工作流运行ID(仅使用failed_only时需要)(数字,可选) - tail_lines:从日志末尾返回的行数(数字,可选)
- get_workflow_run -运行工作流
- owner:存储库所有者(字符串,必填) - repo:存储库名称(字符串,必填) - run_id:工作流运行的唯一标识符(数字,必填)
- get_workflow_run_logs -获取工作流运行日志
- owner:存储库所有者(字符串,必填) - repo:存储库名称(字符串,必填) - run_id:工作流运行的唯一标识符(数字,必填)
- get_workflow_run_usage -获取工作流使用情况
- owner:存储库所有者(字符串,必填) - repo:存储库名称(字符串,必填) - run_id:工作流运行的唯一标识符(数字,必填)
- list_workflow_jobs -列出工作流作业
- filter:按作业的completed_at时间戳筛选作业(字符串,可选) - owner:存储库所有者(字符串,必填) - page:分页页码(最少1页)(数字,可选) - perPage:分页每页结果(最少1个,最多100个)(数量,可选) - repo:存储库名称(字符串,必填) - run_id:工作流运行的唯一标识符(数字,必填)
- list_workflow_run_artifacts -列出工作流工件
- owner:存储库所有者(字符串,必填) - page:分页页码(最少1页)(数字,可选) - perPage:分页每页结果(最少1个,最多100个)(数量,可选) - repo:存储库名称(字符串,必填) - run_id:工作流运行的唯一标识符(数字,必填)
- list_workflow_run -列表工作流运行
- actor:返回某人的工作流运行。使用创建工作流运行的用户的登录名。(字符串,可选) - branch:返回与分支关联的工作流运行。使用分支的名称。(字符串,可选) - event:返回特定事件类型的工作流运行(字符串,可选) - owner:存储库所有者(字符串,必填) - page:分页页码(最少1页)(数字,可选) - perPage:分页每页结果(最少1个,最多100个)(数量,可选) - repo:存储库名称(字符串,必填) - status:返回带有检查运行状态的工作流运行(字符串,可选) - workflow_id:工作流ID或工作流文件名(字符串,必填)
- list_workflows -列出工作流
- owner:存储库所有者(字符串,必填) - page:分页页码(最少1页)(数字,可选) - perPage:分页每页结果(最少1个,最多100个)(数量,可选) - repo:存储库名称(字符串,必填)
- 重新运行失败的作业 -重新运行失败的作业
- owner:存储库所有者(字符串,必填) - repo:存储库名称(字符串,必填) - run_id:工作流运行的唯一标识符(数字,必填)
- 重新运行工作流运行 -重新运行工作流运行
- owner:存储库所有者(字符串,必填) - repo:存储库名称(字符串,必填) - run_id:工作流运行的唯一标识符(数字,必填)
- 运行工作流 -运行工作流
- inputs:工作流接受的输入(对象,可选) - owner:存储库所有者(字符串,必填) - ref:工作流的git参考。引用可以是分支或标记名称。(字符串,必填) - repo:存储库名称(字符串,必填) - workflow_id:工作流ID(数字)或工作流文件名(例如main.yml、ci.yaml)(字符串,必填)
Code Security
- get_code_scanning_alert -获取代码扫描警报
- alertNumber:警报的编号。(数字,必填) - owner:存储库的所有者。(字符串,必填) - repo:存储库的名称。(字符串,必填)
- list_code_scanning_alerts -列出代码扫描警报
- owner:存储库的所有者。(字符串,必填) - ref:要列出的结果的Git引用。(字符串,可选) - repo:存储库的名称。(字符串,必填) - severity:按严重性筛选代码扫描警报(字符串,可选) - state:按州筛选代码扫描警报。默认打开(字符串,可选) - tool_name:用于代码扫描的工具的名称。(字符串,可选)
Context
- get_me -获取我的用户资料
- 无需参数
- get_team_members -获取团队成员
- org:包含团队的组织登录名(所有者)。(字符串,必填) - team_slug:团队蛞蝓(字符串,必填)
- get_teams -组建团队
- user:用于获取团队的用户名。如果没有提供,则使用经过身份验证的用户。(字符串,可选)
Dependabot
- 获取_dependabot_alert - 获取取决于警报
- alertNumber:警报的编号。(数字,必填) - owner:存储库的所有者。(字符串,必填) - repo:存储库的名称。(字符串,必填)
- list_dependabot_alerts 列表 列出取决于警报
- owner:存储库的所有者。(字符串,必填) - repo:存储库的名称。(字符串,必填) - severity:按严重性过滤可靠性警报(字符串,可选) - state:按州过滤可靠性警报。默认打开(字符串,可选)
Discussions
- get_discussion -获取讨论
- discussionNumber:讨论编号(数字,必填) - owner:存储库所有者(字符串,必填) - repo:存储库名称(字符串,必填)
- get_discussion_comments -获取讨论评论
- after:分页光标。使用上一页PageInfo中的endCursor用于GraphQL API。(字符串,可选) - discussionNumber:讨论编号(数字,必填) - owner:存储库所有者(字符串,必填) - perPage:分页每页结果(最少1个,最多100个)(数量,可选) - repo:存储库名称(字符串,必填)
- 列表_讨论_类别 -列出讨论类别
- owner:存储库所有者(字符串,必填) - repo:存储库名称。如果没有提供,将在组织级别查询讨论类别。(字符串,可选)
- list_讨论 -列出讨论
- after:分页光标。使用上一页PageInfo中的endCursor用于GraphQL API。(字符串,可选) - category:可选的按讨论类别ID筛选。如果提供,则仅列出具有此类别的讨论。(字符串,可选) - direction:订单方向。(字符串,可选) - orderBy:按字段排序讨论。如果提供,还需要提供“方向”。(字符串,可选) - owner:存储库所有者(字符串,必填) - perPage:分页每页结果(最少1个,最多100个)(数量,可选) - repo:存储库名称。如果没有提供,将在组织层面进行讨论。(字符串,可选)
Gists
- 创建列表 -创建Gist
- content:用于创建简单单文件要点的内容(字符串,必填) - description:要点描述(字符串,可选) - filename:用于创建简单单文件要点的文件名(字符串,必填) - public:要点是否公开(布尔值,可选)
- 列表列表 -列出Gists
- page:分页页码(最少1页)(数字,可选) - perPage:分页每页结果(最少1个,最多100个)(数量,可选) - since:仅在此时间之后更新注册表(ISO 8601时间戳)(字符串,可选) - username:GitHub用户名(对于经过身份验证的用户的注册表省略)(字符串,可选)
- update_gist -更新Gist
- content:文件内容(字符串,必填) - description:更新了要点描述(字符串,可选) - filename:要更新或创建的文件名(字符串,必填) - gist_id:要更新的要点的ID(字符串,必填)
Issues
- add_issue_comment -向问题添加评论
- body:评论内容(字符串,必填) - issue_number:要评论的问题编号(编号,必填) - owner:存储库所有者(字符串,必填) - repo:存储库名称(字符串,必填)
- add_sub_issue -添加子问题
- issue_number:父问题的编号(编号,必填) - owner:存储库所有者(字符串,必填) - replace_parent:如果为true,则替换子问题的当前父问题(布尔值,可选) - repo:存储库名称(字符串,必填) - sub_issue_id:要添加的子问题的ID。ID与问题编号不同(编号,必填)
- assign_copilot_to_oissue -分配副本以发布
- issueNumber:问题编号(编号,必填) - owner:存储库所有者(字符串,必填) - repo:存储库名称(字符串,必填)
- 创建_发行 -打开新问题
- assignees:要分配给此问题的用户名(string\[\],可选) - body:发布正文内容(字符串,可选) - labels:应用于此问题的标签(string\[\],可选) - milestone:里程碑编号(编号,可选) - owner:存储库所有者(字符串,必填) - repo:存储库名称(字符串,必填) - title:发行标题(字符串,必填) - type:此问题的类型(字符串,可选)
- 获取问题 -获取问题详细信息
- issue_number:问题编号(数字,必填) - owner:存储库的所有者(字符串,必填) - repo:存储库的名称(字符串,必填)
- 获取问题注释 -获取问题评论
- issue_number:问题编号(编号,必填) - owner:存储库所有者(字符串,必填) - page:分页页码(最少1页)(数字,可选) - perPage:分页每页结果(最少1个,最多100个)(数量,可选) - repo:存储库名称(字符串,必填)
- list_issue_types -列出可用的问题类型
- owner:存储库的组织所有者(字符串,必填)
- list_issues -列出问题
- after:分页光标。使用上一页PageInfo中的endCursor用于GraphQL API。(字符串,可选) - direction:订单方向。如果提供,还需要提供“orderBy”。(字符串,可选) - labels:按标签筛选(string\[\],可选) - orderBy:按字段排序问题。如果提供,还需要提供“方向”。(字符串,可选) - owner:存储库所有者(字符串,必填) - perPage:分页每页结果(最少1个,最多100个)(数量,可选) - repo:存储库名称(字符串,必填) - since:按日期筛选(ISO 8601时间戳)(字符串,可选) - state:按状态筛选,默认情况下,未提供时将返回打开和关闭的问题(字符串,可选)
- list_sub_issues -列出子问题
- issue_number:问题编号(编号,必填) - owner:存储库所有者(字符串,必填) - page:分页页码(默认值:1)(数字,可选) - per_page:每页结果数(最多100,默认值:30)(数字,可选) - repo:存储库名称(字符串,必填)
- 删除子问题 -删除子问题
- issue_number:父问题的编号(编号,必填) - owner:存储库所有者(字符串,必填) - repo:存储库名称(字符串,必填) - sub_issue_id:要删除的子问题的ID。ID与问题编号不同(编号,必填)
- 重新确定优先级_子问题 -重新确定子问题的优先级
- after_id:要优先处理的子问题的ID(应指定after_ID或before_ID)(数字,可选) - before_id:要优先处理的子问题的ID(应指定after_ID或before_ID)(数字,可选) - issue_number:父问题的编号(编号,必填) - owner:存储库所有者(字符串,必填) - repo:存储库名称(字符串,必填) - sub_issue_id:重新确定优先次序的子问题的ID。ID与问题编号不同(编号,必填)
- 搜索问题 -搜索问题
- order:排序顺序(字符串,可选) - owner:可选存储库所有者。如果提供了repo,则只列出此存储库的问题。(字符串,可选) - page:分页页码(最少1页)(数字,可选) - perPage:分页每页结果(最少1个,最多100个)(数量,可选) - query:使用GitHub的搜索查询问题搜索语法(字符串,必填) - repo:可选存储库名称。如果与所有者一起提供,则只列出此存储库的问题。(字符串,可选) - sort:按类别匹配数对字段进行排序,默认为最佳匹配(字符串,可选)
- update_issue -编辑问题
- assignees:新受让人(string\[\],可选) - body:新描述(字符串,可选) - issue_number:要更新的问题编号(编号,必填) - labels:新标签(string\[\],可选) - milestone:新里程碑编号(编号,可选) - owner:存储库所有者(字符串,必填) - repo:存储库名称(字符串,必填) - state:新状态(字符串,可选) - title:新标题(字符串,可选) - type:新问题类型(字符串,可选)
Notifications
- 解雇通知 -解雇通知
- state:通知的新状态(已读/已完成)(字符串,可选) - threadID:通知线程的ID(字符串,必填)
- 获取通知_详细信息 -获取通知详细信息
- notificationID:通知的ID(字符串,必填)
- list_通知 -列出通知
- before:仅显示在给定时间之前更新的通知(ISO 8601格式)(字符串,可选) - filter:将通知筛选到,除非指定,否则使用默认值。读取通知是用户已经确认的通知。参与通知是指用户直接参与的通知,例如他们评论或创建的问题或拉取请求。(字符串,可选) - owner:可选存储库所有者。如果提供了repo,则只列出此存储库的通知。(字符串,可选) - page:分页页码(最少1页)(数字,可选) - perPage:分页每页结果(最少1个,最多100个)(数量,可选) - repo:可选存储库名称。如果与所有者一起提供,则只列出此存储库的通知。(字符串,可选) - since:仅显示给定时间后更新的通知(ISO 8601格式)(字符串,可选)
- 管理通知订阅 -管理通知订阅
- action:要执行的操作:忽略、监视或删除通知订阅。(字符串,必填) - notificationID:通知线程的ID。(字符串,必填)
- 管理_职位_通知_订阅 -管理存储库通知订阅
- action:要执行的操作:忽略、监视或删除存储库通知订阅。(字符串,必填) - owner:存储库的帐户所有者。(字符串,必填) - repo:存储库的名称。(字符串,必填)
- mark_all_通知_阅读 -将所有通知标记为已读
- lastReadAt:描述检查通知的最后一点(可选)。默认值:Now(字符串,可选) - owner:可选存储库所有者。如果提供了repo,则只有此存储库的通知被标记为已读。(字符串,可选) - repo:可选存储库名称。如果与所有者一起提供,则只有此存储库的通知标记为已读。(字符串,可选)
Organizations
- search_orgs -搜索组织
- order:排序顺序(字符串,可选) - page:分页页码(最少1页)(数字,可选) - perPage:分页每页结果(最少1个,最多100个)(数量,可选) - query:组织搜索查询。示例:“microsoft”、“location:california”、“created:>=2025-01-01”。搜索范围会自动限定为类型:org。(字符串,必填) - sort:按类别对字段进行排序(字符串,可选)
Pull Requests
- add_comment_to_pending_view -在请求者的最新待处理拉取请求审核中添加审核评论
- body:审查意见的文本(字符串,必填) - line:注释应用于的拉取请求差异中blob的行。对于多行注释,范围的最后一行(数字,可选) - owner:存储库所有者(字符串,必填) - path:需要注释的文件的相对路径(字符串,必填) - pullNumber:拉取请求号(number,必填) - repo:存储库名称(字符串,必填) - side:要注释的diff侧。LEFT表示以前的状态,RIGHT表示新的状态(字符串,可选) - startLine:对于多行注释,注释适用范围的第一行(数字,可选) - startSide:对于多行注释,注释所应用的diff的起始侧。LEFT表示之前的状态,RIGHT表示新的状态(字符串,可选) - subjectType:评论的目标级别(字符串,必填)
- create_and_submit_pull_request_review -创建并提交无评论的拉取请求审核
- body:审阅评论文本(字符串,必填) - commitID:提交审查的SHA(字符串,可选) - event:审查要执行的操作(字符串,必填) - owner:存储库所有者(字符串,必填) - pullNumber:拉取请求号(number,必填) - repo:存储库名称(字符串,必填)
- create_pending_pull_request_review -创建待处理的拉取请求审核
- commitID:提交审查的SHA(字符串,可选) - owner:存储库所有者(字符串,必填) - pullNumber:拉取请求号(number,必填) - repo:存储库名称(字符串,必填)
- create_pull_request -打开新的拉取请求
- base:要合并的分支(字符串,必填) - body:PR描述(字符串,可选) - draft:创建为PR草稿(布尔值,可选) - head:包含更改的分支(字符串,必填) - maintainer_can_modify:允许维护者编辑(布尔值,可选) - owner:存储库所有者(字符串,必填) - repo:存储库名称(字符串,必填) - title:PR标题(字符串,必填)
- delete_pending_pull_request_review -删除请求者最新的待处理拉取请求审核
- owner:存储库所有者(字符串,必填) - pullNumber:拉取请求号(number,必填) - repo:存储库名称(字符串,必填)
- get_pull_request -获取拉取请求详细信息
- owner:存储库所有者(字符串,必填) - pullNumber:拉取请求号(number,必填) - repo:存储库名称(字符串,必填)
- get_pull_request_comments -获取pull请求注释
- owner:存储库所有者(字符串,必填) - pullNumber:拉取请求号(number,必填) - repo:存储库名称(字符串,必填)
- get_pull_request_diff -获取拉取请求差异
- owner:存储库所有者(字符串,必填) - pullNumber:拉取请求号(number,必填) - repo:存储库名称(字符串,必填)
- get_pull_request_files -获取拉取请求文件
- owner:存储库所有者(字符串,必填) - page:分页页码(最少1页)(数字,可选) - perPage:分页每页结果(最少1个,最多100个)(数量,可选) - pullNumber:拉取请求号(number,必填) - repo:存储库名称(字符串,必填)
- get_pull_request_reviews -获取pull请求评论
- owner:存储库所有者(字符串,必填) - pullNumber:拉取请求号(number,必填) - repo:存储库名称(字符串,必填)
- get_pull_request_status -获取拉取请求状态检查
- owner:存储库所有者(字符串,必填) - pullNumber:拉取请求号(number,必填) - repo:存储库名称(字符串,必填)
- list_pull_requests -列出拉取请求
- base:按基分支筛选(字符串,可选) - direction:排序方向(字符串,可选) - head:按主用户/组织和分支机构过滤(字符串,可选) - owner:存储库所有者(字符串,必填) - page:分页页码(最少1页)(数字,可选) - perPage:分页每页结果(最少1个,最多100个)(数量,可选) - repo:存储库名称(字符串,必填) - sort:排序方式(字符串,可选) - state:按状态筛选(字符串,可选)
- 合并请求 -合并拉取请求
- commit_message:合并提交的额外细节(字符串,可选) - commit_title:合并提交的标题(字符串,可选) - merge_method:合并方法(字符串,可选) - owner:存储库所有者(字符串,必填) - pullNumber:拉取请求号(number,必填) - repo:存储库名称(字符串,必填)
- request_copilot_review -请求副驾驶审核
- owner:存储库所有者(字符串,必填) - pullNumber:拉取请求号(number,必填) - repo:存储库名称(字符串,必填)
- search_pull_requests -搜索拉取请求
- order:排序顺序(字符串,可选) - owner:可选存储库所有者。如果提供了repo,则只列出此存储库的pull请求。(字符串,可选) - page:分页页码(最少1页)(数字,可选) - perPage:分页每页结果(最少1个,最多100个)(数量,可选) - query:使用GitHub pull请求搜索语法搜索查询(字符串,必填) - repo:可选存储库名称。如果提供了所有者,则只列出此存储库的拉取请求。(字符串,可选) - sort:按类别匹配数对字段进行排序,默认为最佳匹配(字符串,可选)
- submit_pending_pull_request_review -提交请求者最新的待处理拉取请求审核
- body:评论文本(字符串,可选) - event:要执行的事件(字符串,必填) - owner:存储库所有者(字符串,必填) - pullNumber:拉取请求号(number,必填) - repo:存储库名称(字符串,必填)
- update_pull_request -编辑拉取请求
- base:新的基础分支名称(字符串,可选) - body:新描述(字符串,可选) - draft:将pull请求标记为草稿(true)或准备审核(false)(布尔值,可选) - maintainer_can_modify:允许维护者编辑(布尔值,可选) - owner:存储库所有者(字符串,必填) - pullNumber:拉取请求编号进行更新(编号,必填) - repo:存储库名称(字符串,必填) - reviewers:请求评论的GitHub用户名(string\[\],可选) - state:新状态(字符串,可选) - title:新标题(字符串,可选)
- update_pull_request_branch -更新拉取请求分支
- expectedHeadSha:拉取请求的HEAD引用的预期SHA(字符串,可选) - owner:存储库所有者(字符串,必填) - pullNumber:拉取请求号(number,必填) - repo:存储库名称(字符串,必填)
Repositories
- create_branch -创建分支
- branch:新分支的名称(字符串,必填) - from_branch:源分支(默认为repo-default)(字符串,可选) - owner:存储库所有者(字符串,必填) - repo:存储库名称(字符串,必填)
- create_or_update_file -创建或更新文件
- branch:创建/更新文件的分支(字符串,必填) - content:文件内容(字符串,必填) - message:提交消息(字符串,必填) - owner:存储库所有者(用户名或组织)(字符串,必填) - path:创建/更新文件的路径(字符串,必填) - repo:存储库名称(字符串,必填) - sha:如果更新现有文件,则为必填项。被替换文件的blob SHA。(字符串,可选)
- 创建存储库 -创建存储库
- autoInit:使用README进行初始化(布尔值,可选) - description:存储库描述(字符串,可选) - name:存储库名称(字符串,必填) - private:repo是否应该是私有的(布尔值,可选)
- 删除文件 -删除文件
- branch:从中删除文件的分支(字符串,必填) - message:提交消息(字符串,必填) - owner:存储库所有者(用户名或组织)(字符串,必填) - path:要删除的文件的路径(字符串,必填) - repo:存储库名称(字符串,必填)
- fork存储 -Fork存储库
- organization:要分叉的组织(字符串,可选) - owner:存储库所有者(字符串,必填) - repo:存储库名称(字符串,必填)
- get_提交 -获取提交详细信息
- owner:存储库所有者(字符串,必填) - page:分页页码(最少1页)(数字,可选) - perPage:分页每页结果(最少1个,最多100个)(数量,可选) - repo:存储库名称(字符串,必填) - sha:提交SHA、分支名称或标记名称(字符串,必填)
- 获取_文件_内容 -获取文件或目录内容
- owner:存储库所有者(用户名或组织)(字符串,必填) - path:文件/目录的路径(目录必须以斜线“/”结尾)(字符串,可选) - ref:接受可选的git引用,例如 refs/tags/{tag}, refs/heads/{branch} 或 refs/pull/{pr_number}/head (字符串,可选) - repo:存储库名称(字符串,必填) - sha:接受可选的提交SHA。如果指定,将使用它来代替ref(string,可选)
- get_latest_release -获取最新版本
- owner:存储库所有者(字符串,必填) - repo:存储库名称(字符串,必填)
- get_tag -获取标签详细信息
- owner:存储库所有者(字符串,必填) - repo:存储库名称(字符串,必填) - tag:标签名称(字符串,必填)
- list_brances -列出分支
- owner:存储库所有者(字符串,必填) - page:分页页码(最少1页)(数字,可选) - perPage:分页每页结果(最少1个,最多100个)(数量,可选) - repo:存储库名称(字符串,必填)
- list_commits -列表提交
- author:用于过滤提交的作者用户名或电子邮件地址(字符串,可选) - owner:存储库所有者(字符串,必填) - page:分页页码(最少1页)(数字,可选) - perPage:分页每页结果(最少1个,最多100个)(数量,可选) - repo:存储库名称(字符串,必填) - sha:提交SHA、分支或标签名称以列出提交。如果没有提供,则使用存储库的默认分支。如果提供了提交SHA,将列出该SHA之前的提交。(字符串,可选)
- list_releases -列表发布
- owner:存储库所有者(字符串,必填) - page:分页页码(最少1页)(数字,可选) - perPage:分页每页结果(最少1个,最多100个)(数量,可选) - repo:存储库名称(字符串,必填)
- list_tags -列表标签
- owner:存储库所有者(字符串,必填) - page:分页页码(最少1页)(数字,可选) - perPage:分页每页结果(最少1个,最多100个)(数量,可选) - repo:存储库名称(字符串,必填)
- 推送文件 -将文件推送到存储库
- branch:要推送的分支(字符串,必填) - files:要推送的文件对象数组,每个对象都有路径(字符串)和内容(字符串)(object\[\],必填) - message:提交消息(字符串,必填) - owner:存储库所有者(字符串,必填) - repo:存储库名称(字符串,必填)
- 搜索代码 -搜索代码
- order:结果的排序顺序(字符串,可选) - page:分页页码(最少1页)(数字,可选) - perPage:分页每页结果(最少1个,最多100个)(数量,可选) - query:使用GitHub强大的代码搜索语法搜索查询。示例:“内容:技能语言:Java组织:github”,“不是:存档语言:Python或语言:go”,“仓库:github/github mcp服务器”。支持精确匹配、语言过滤器、路径过滤器等。(字符串,必填) - sort:排序字段(仅“索引”)(字符串,可选)
- search_repositories -搜索存储库
- page:分页页码(最少1页)(数字,可选) - perPage:分页每页结果(最少1个,最多100个)(数量,可选) - query:存储库搜索查询。示例:“机器学习:name-stars:>1000语言:python”,“主题:反应”,“用户:脸书”。支持高级搜索语法以进行精确筛选。(字符串,必填)
Secret Protection
- get_secret_scanning_alert -获取秘密扫描警报
- alertNumber:警报的编号。(数字,必填) - owner:存储库的所有者。(字符串,必填) - repo:存储库的名称。(字符串,必填)
- list_secret_scaning_alerts -列出秘密扫描警报
- owner:存储库的所有者。(字符串,必填) - repo:存储库的名称。(字符串,必填) - resolution:按分辨率筛选(字符串,可选) - secret_type:以逗号分隔的要返回的秘密类型列表。返回所有默认的秘密模式。要返回泛型模式,请在参数中传递令牌名称。(字符串,可选) - state:按状态筛选(字符串,可选)
Users
- 搜索用户 -搜索用户
- order:排序顺序(字符串,可选) - page:分页页码(最少1页)(数字,可选) - perPage:分页每页结果(最少1个,最多100个)(数量,可选) - query:用户搜索查询。示例:“约翰·史密斯”,“地点:西雅图”,“关注者:>100”。搜索自动限定为type:user。(字符串,必填) - sort:按关注者或存储库的数量或用户加入GitHub的时间对用户进行排序。(字符串,可选)
远程Github MCP服务器中的其他工具
Copilot coding agent
- create_pull_request_with_copilot -使用GitHub Copilot编码代理执行任务
- owner:存储库所有者。您可以猜测所有者,但在继续之前请与用户确认。(字符串,必填) - repo:存储库名称。您可以猜测存储库名称,但在继续之前请与用户确认。(字符串,必填) - problem_statement:要执行的任务的详细描述(例如,“实现执行X的功能”、“修复错误Y”等)(字符串,必填) - title:将创建的拉取请求的标题(字符串,必填) - base_ref:代理将从其开始工作的Git引用(例如分支)。如果未指定,则默认为存储库的默认分支(字符串,可选)
指定工具集
要指定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 如果两者都提供,则优先于命令行参数。
在Docker中使用工具集
使用Docker时,可以将工具集作为环境变量传递:
docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_TOKEN= \
-e GITHUB_TOOLSETS="repos,issues,pull_requests,actions,code_security,experiments" \
ghcr.io/github/github-mcp-server“全部”工具集
特殊工具集 all 可以提供以启用所有可用的工具集,而不管任何其他配置如何:
./github-mcp-server --toolsets all或者使用环境变量:
GITHUB_TOOLSETS="all" ./github-mcp-server动态工具发现
备注:此功能目前处于测试阶段,可能无法在所有环境中使用。请测试一下,如果您遇到任何问题,请告诉我们。
您可以启用动态工具集发现,而不是从启用所有工具开始。动态工具集允许MCP主机根据用户提示列出并启用工具集。这应该有助于避免模型被大量可用工具混淆的情况。
使用动态工具发现
使用二进制时,您可以传递 --dynamic-toolsets 旗帜。
./github-mcp-server --dynamic-toolsets使用Docker时,可以将工具集作为环境变量传递:
docker run -i --rm \
-e GITHUB_PERSONAL_ACCESS_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= \
-e GITHUB_READ_ONLY=1 \
ghcr.io/github/github-mcp-serverGitHub企业服务器和企业云与数据驻留(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://"
}
}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您还可以使用ENV变量来覆盖描述。环境 变量名与JSON文件中的键相同,前缀为 GITHUB_MCP_ 全部大写。
例如,要覆盖 TOOL_ADD_ISSUE_COMMENT_DESCRIPTION 工具,你可以 设置以下环境变量:
export GITHUB_MCP_TOOL_ADD_ISSUE_COMMENT_DESCRIPTION="an alternative description"图书馆使用情况
该模块导出的Go API当前应被视为不稳定,并可能发生中断更改。未来,我们可能会提供稳定;如果存在有价值的用例,请提交一个问题。
许可证
该项目根据麻省理工学院开源许可证条款获得许可。请参考 麻省理工学院 完整的条款。
