Github Mcp ServerGitHub 官方 MCP 服务器

3.3w5k
浏览57下载0
资料更新2026-09-21来源观测2026-09-21语言双语

介绍

快速判断

GitHub's official MCP Server

适合谁
开发者、团队
使用门槛
低,需配置环境
支持平台
Docker、Node.js
部署方式
自托管
Github Mcp Server

Github Mcp Server 是一个 GitHub 开源项目。GitHub 官方的 MCP Server

远程 GitHub MCP Server

远程 GitHub MCP Server 由 GitHub 托管,是最容易上手的运行方式。如果你的 MCP 主机不支持远程 MCP 服务器,不用担心!你可以使用本地版本的 GitHub MCP Server。

前提条件

  • 支持远程服务器的兼容 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 或更高)

{
  "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 主机中安装

  • 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 安装指南
  • OpenCode – OpenCode 终端代理安装指南
  • Windsurf – Windsurf IDE 安装指南
  • Zed – Zed 编辑器安装指南

注意:每个 MCP 主机应用程序都需要配置 GitHub App 或 OAuth App 以支持通过 OAuth 进行远程访问。任何支持远程 MCP 服务器的主机应用程序都应支持使用 PAT 认证的远程 GitHub 服务器。配置详情和支持程度因主机而异。请务必参阅主机应用程序的文档以获取更多信息。

配置

工具集配置

本地 GitHub MCP Server

前提条件

  • 要在容器中运行服务器,您需要先安装 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 需要)。

更喜欢令牌?您仍可通过设置 GITHUBPERSONALACCESSTOKEN 来使用 GitHub 个人访问令牌进行身份验证(它优先于 OAuth)。MCP 服务器可以使用许多 GitHub API,因此请启用您愿意授予 AI 工具的权限(要了解有关访问令牌的更多信息,请查阅文档)。

环境变量(推荐)

要确保您的 GitHub PAT 安全并在不同的 MCP 主机之间可重用:

  • 将您的 PAT 存储在环境变量中
   export GITHUB_PAT=your_token_here
   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)需要在配置文件中硬编码令牌。

令牌安全最佳实践

安装

在 VS Code 上的 GitHub Copilot 中安装

要快速安装,请使用上方的一键安装按钮之一。完成该流程后,切换 Agent 模式(位于 Copilot Chat 文本输入框旁),服务器将启动。

更多关于在 VS Code 的 Agent 模式文档中使用 MCP 服务器工具的信息。

在其他 IDE(JetBrains、Visual Studio、Eclipse 等)中安装 GitHub Copilot

将以下 JSON 块之一添加到您 IDE 的 MCP 设置中。

使用 OAuth 登录(无需创建或存储令牌)。在 github.com 上,官方镜像已包含应用凭证,因此您无需自行提供:首次使用时它会运行基于浏览器的登录,并将生成的令牌仅保存在内存中。在 Docker 中,需要将固定回调端口发布到 loopback,以便容器的登录回调可访问:

{
  "mcp": {
    "servers": {
      "github": {
        "command": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "-p",
          "127.0.0.1:8085:8085",
          "-e",
          "GITHUB_OAUTH_CALLBACK_PORT",
          "ghcr.io/github/github-mcp-server"
        ],
        "env": {
          "GITHUB_OAUTH_CALLBACK_PORT": "8085"
        }
      }
    }
  }
}

请参阅本地服务器 OAuth 登录,了解原生二进制流程(无需固定端口)、headless/设备代码回退、GitHub Enterprise Server / ghe.com,以及使用自己的 OAuth 或 GitHub App。

关于非交互式 stdio 部署,请参阅 GitHub App 身份验证。

或使用个人访问令牌进行身份验证。改为设置 GITHUBPERSONALACCESSTOKEN(它优先于 OAuth):

{
  "mcp": {
    "inputs": [
      {
        "type": "promptString",
        "id": "github_token",
        "description": "GitHub Personal Access Token",
        "password": true
      }
    ],
    "servers": {
      "github": {
        "command": "docker",
        "args": [
          "run",
          "-i",
          "--rm",
          "-e",
          "GITHUB_PERSONAL_ACCESS_TOKEN",
          "ghcr.io/github/github-mcp-server"
        ],
        "env": {
          "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}"
        }
      }
    }
  }
}

(可选)您可以将类似的示例(即不含 mcp 键)添加到工作区中的 .vscode/mcp.json 文件中。这样您就可以与其他接受相同格式的主机应用程序共享该配置。

不含 MCP 键的示例 JSON 块

{
  "inputs": [
    {
      "type": "promptString",
      "id": "github_token",
      "description": "GitHub Personal Access Token",
      "password": true
    }
  ],
  "servers": {
    "github": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}"
      }
    }
  }
}

工具配置

GitHub MCP Server 支持通过 –toolsets 标志启用或禁用特定功能组。这允许你控制哪些 GitHub API 功能对你的 AI 工具可用。只启用你需要的工具集可以帮助 LLM 进行工具选择并减少上下文大小。

工具集不仅限于工具。相关的 MCP Resources 和 Prompts 也会在适用时包含。

未指定工具集时,将使用默认工具集。

正在寻找示例?请参阅服务器配置指南,了解常见配置方案,如最小化配置、只读模式以及工具与工具集的组合使用。

指定工具集

要为 LLM 指定可用的工具集,可以通过两种方式传递允许列表:

  • 使用命令行参数:
   github-mcp-server --toolsets repos,issues,pull_requests,actions,code_security
  • 使用环境变量:
   GITHUB_TOOLSETS="repos,issues,pull_requests,actions,code_security" ./github-mcp-server

如果同时提供了两者,环境变量 GITHUBTOOLSETS 优先于命令行参数。

指定单独工具

你也可以使用 –tools 标志配置特定工具。工具可以独立使用,也可以与工具集组合以实现细粒度控制。

  • 使用命令行参数:

工具

  • actionsget – 获取 GitHub Actions 资源的详细信息(工作流、工作流运行、作业和产物)
  • OAuth Challenge 作用域:repo
  • method:要执行的方法(字符串,必需)
  • owner:仓库所有者(字符串,必需)
  • repo:仓库名称(字符串,必需)
  • resourceid:资源的唯一标识符。根据提供的 "method" 会有所不同,因此请确保提供正确的 ID:
  • 为 'getworkflow' 方法提供工作流 ID 或工作流文件名(如 ci.yaml)。
  • 为 'getworkflowrun'、'getworkflowrunusage' 和 'getworkflowrunlogsurl' 方法提供工作流运行 ID。
  • actionslist – 列出仓库中的 GitHub Actions 工作流
  • OAuth Challenge 作用域:repo
  • method: 要执行的操作(字符串,必填)
  • owner: 仓库所有者(字符串,必填)
  • page: 分页页码(默认值:1)(数字,可选)
  • perPage: 每页结果数(默认值:30,最大值:100)(数字,可选)
  • repo: 仓库名称(字符串,必填)
  • resourceid: 资源的唯一标识符。根据提供的"method"不同会有所变化,请确保提供正确的 ID:
  • workflowjobsfilter: 工作流作业的筛选条件。仅在 method 为 'listworkflowjobs' 时使用(对象,可选)
  • workflowrunsfilter: 工作流运行的筛选条件。仅在 method 为 'listworkflowruns' 时使用(对象,可选)
  • actionsruntrigger – 触发 GitHub Actions 工作流操作
  • OAuth Challenge 范围:repo
  • inputs: 工作流接受的输入参数。仅在 method 为 'runworkflow' 时使用(对象,可选)
  • method: 要执行的方法(字符串,必填)
  • owner:仓库所有者(字符串,必填)
  • ref:工作流的 git 引用。引用可以是分支或标签名称。'runworkflow' 方法必填。(字符串,可选)
  • repo:仓库名称(字符串,必填)
  • runid:工作流运行的 ID。除 'runworkflow' 外所有方法必填。(数字,可选)
  • getjoblogs – 获取 GitHub Actions 工作流任务日志
  • OAuth Challenge 作用域:repo
  • failedonly:设为 true 时,获取由 runid 指定的运行中所有失败任务的日志。需要提供 runid。(布尔值,可选)
  • jobid:工作流任务的唯一标识符。获取单个任务日志时必填。(数字,可选)
  • owner:仓库所有者(字符串,必填)
  • repo:仓库名称(字符串,必填)
  • returncontent:返回实际日志内容而非 URL(布尔值,可选)
  • runid:工作流运行的唯一标识符。failedonly 为 true 时必填,用于获取该运行中所有失败任务的日志。(数字,可选)
  • getcodequalityfinding – 获取代码质量发现结果
  • OAuth Challenge 作用域: repo
  • findingNumber: 发现的编号。 (number, required)
  • owner: 仓库所有者。 (string, required)
  • repo: 仓库名称。 (string, required)
  • getcodescanningalert – 获取代码扫描告警
  • OAuth Challenge 作用域: securityevents
  • alertNumber: 告警的编号。 (number, required)
  • owner: 仓库所有者。 (string, required)
  • repo: 仓库名称。 (string, required)
  • listcodescanningalerts – 列出代码扫描告警
  • OAuth Challenge 作用域: securityevents
  • owner: 仓库的所有者。(string, required)
  • page: 分页的页码(最小值 1)(number, optional)
  • perPage: 分页每页结果数(最小值 1,最大值 100)(number, optional)
  • ref: 要列出的结果的 Git 引用。(string, optional)
  • repo: 仓库名称。(string, required)
  • severity: 按严重性筛选代码扫描警报(string, optional)
  • getme – 获取我的用户资料
  • 无需参数
  • getteammembers – 获取团队成员
  • OAuth Challenge Scopes: read:org
  • org: 包含该团队的组织的登录名(所有者)。(string, required)
  • teamslug: 团队 slug (string, required)
  • getteams – 获取团队列表
  • OAuth Challenge 作用域: read:org
  • user: 要获取团队的用户名。如果未提供,则使用已认证的用户。(字符串,可选)
  • assigncopilottoissue – 为 Issue 分配 Copilot
  • OAuth Challenge 作用域: repo
  • baseref: 代理将从中开始工作的 Git 引用(例如分支)。如果未指定,默认为仓库的默认分支。(字符串,可选)
  • custominstructions: 用于指导代理的可选自定义指令,超出 Issue 正文范围。使用此字段可提供 Issue 描述中未包含的额外上下文、约束或指导。(字符串,可选)
  • issuenumber: Issue 编号(数字,必填)
  • owner: 仓库所有者(字符串,必填)
  • repo: 仓库名称(字符串,必填)
  • requestcopilotreview – 请求 Copilot 审核
  • OAuth Challenge 作用域: repo
  • owner:仓库所有者(字符串,必填)
  • pullNumber:拉取请求编号(数字,必填)
  • repo:仓库名称(字符串,必填)
  • assigncopilottoissuewithintent – 为 issue 分配 Copilot 并附带意图
  • OAuth Challenge 作用域:repo
  • baseref:Git 引用(例如分支),智能体将从此处开始工作。如果未指定,默认为仓库的默认分支。当 issuggestion 为 true 时忽略此参数(字符串,可选)
  • confidence:您对这个选择的置信程度。”HIGH” 表示明确的信号或用户的明确请求,”MEDIUM” 表示有一定歧义的合理推断,”LOW” 表示信号有限下的最佳猜测(字符串,必填)
  • custominstructions:可选的自定义指令,用于在 issue 正文之外指导智能体。当 issuggestion 为 true 时忽略此参数(字符串,可选)
  • issuggestion:如果为 true,则记录一个待处理的 Copilot 分配意图,而不是启动智能体。后续审批将提供启动上下文;此时 baseref 和 custominstructions 将被忽略(布尔值,必填)
  • issuenumber:Issue 编号(数字,必填)
  • owner:仓库所有者(字符串,必填)

只读模式

要使用只读模式运行服务器,可以使用 –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 仓库 README 解析生成,适合先快速了解项目定位、安装方式、核心能力与使用边界。

文章标签
github

github

GitHub 作者
2文章0粉丝57浏览

资源档案

场景分类编程开发资源类型MCP 服务入口 / 平台+1平台信息语言 / 环境:Node.jsDocker来源:GitHub价格开源免费加分属性可自托管 / 支持 API开放议题333 Issues默认分支main最新版本v1.12.2主要语言en地区可用性全球可用LicenseMIT专题归属LobeHub MCP 服务