GitHub MCP

官方

用于MCP兼容AI客户端的官方GitHub MCP服务器,支持仓库搜索、议题、拉取请求、代码上下文及GitHub工作流。

你可以用 GitHub MCP 做什么?

  • 仓库探索 — 让您的助手浏览代码、搜索文件,并分析您能访问的任何仓库中的提交。
  • 议题与拉取请求管理 — 让AI创建、更新和分类议题及拉取请求,包括审查代码更改。
  • CI/CD 监控 — 获取 GitHub Actions 工作流运行的洞察,分析构建失败,并管理发布。
  • 安全分析 — 检查代码扫描结果,并审查 Dependabot 针对漏洞的警报。
  • 团队协作 — 访问讨论、管理通知,并分析您项目中团队的活动。

托管 MCP 服务器

npx add-mcp 'https://api.githubcopilot.com/mcp/'

可安装到 Claude Code、Codex、Cursor 等客户端

文档

Go Report Card

GitHub MCP 服务器

GitHub MCP 服务器将 AI 工具直接连接到 GitHub 平台。这使 AI 代理、助手和聊天机器人能够读取仓库和代码文件、管理 Issue 和 PR、分析代码以及自动化工作流。所有这些都可以通过自然语言交互完成。

使用场景

  • 仓库管理:浏览和查询代码、搜索文件、分析提交,并了解您有权访问的任何仓库的项目结构。
  • Issue 与 PR 自动化:创建、更新和管理 Issue 与拉取请求。让 AI 帮助分类缺陷、审查代码更改并维护项目看板。
  • CI/CD 与工作流智能:监控 GitHub Actions 工作流运行、分析构建失败、管理发布,并深入了解您的开发流水线。
  • 代码分析:检查安全发现、审查 Dependabot 警报、理解代码模式,并全面洞察您的代码库。
  • 团队协作:访问讨论、管理通知、分析团队活动,并为您的团队简化流程。

专为希望将 AI 工具连接到 GitHub 上下文和功能的开发者而构建,从简单的自然语言查询到复杂的多步骤代理工作流。

使用 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 服务器

Install in VS Code Install in VS Code Insiders Install in Visual Studio

远程 GitHub MCP 服务器由 GitHub 托管,是快速启动和运行的最简单方法。如果您的 MCP 主机不支持远程 MCP 服务器,不用担心!您可以使用本地版 GitHub MCP 服务器代替。

前提条件

  1. 支持远程服务器功能的兼容 MCP 主机(VS Code 1.101+、Claude Desktop、Cursor、Windsurf 等)
  2. 任何适用的已启用策略

在 VS Code 中安装

如需快速安装,请使用上方的一键安装按钮。完成该流程后,切换代理模式(位于 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 主机中安装

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

配置

工具集配置

有关远程服务器配置、工具集、标头和高级用法的完整详细信息,请参阅远程服务器文档。该文件提供了在 VS Code 和其他 MCP 主机中连接、自定义和安装远程 GitHub MCP 服务器的全面说明和示例。

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

预览模式

尽早体验新功能! 远程服务器提供预览版本,可提前访问新功能和实验性工具。

使用 URL 路径使用标头
{
  "servers": {
    "github": {
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp/insiders"
    }
  }
}
{
  "servers": {
    "github": {
      "type": "http",
      "url": "https://api.githubcopilot.com/mcp/",
      "headers": {
        "X-MCP-Insiders": "true"
      }
    }
  }
}

有关更多详细信息和示例,请参阅远程服务器文档,有关可用功能的完整列表,请参阅预览功能。

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 服务器

Install with Docker in VS Code Install with Docker in VS Code Insiders Install with Docker in Visual Studio

前提条件

  1. 要在容器中运行服务器,您需要安装 Docker。

  2. Docker 安装完成后,您还需要确保 Docker 正在运行。Docker 镜像可在 ghcr.io/github/github-mcp-server 获取。该镜像是公开的;如果在拉取时遇到错误,可能是您的令牌已过期,需要 docker logout ghcr.io。

  3. 身份验证。 在 github.com 上,您无需预先创建任何内容 — 上方的单击按钮会在首次使用时通过 OAuth 登录(基于浏览器的流程;令牌仅保存在内存中)。Docker 按钮会发布一个固定的回调端口(127.0.0.1:8085),以便容器的登录回调可达。有关其工作原理、无头/设备代码回退以及自带 OAuth 或 GitHub App(GitHub Enterprise Server 和 ghe.com 必需),请参阅 本地服务器 OAuth 登录。

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

安全处理 PAT

环境变量(推荐)

为了在不同 MCP 主机之间安全且可复用您的 GitHub PAT:

  1. 将您的 PAT 存储在环境变量中

    export GITHUB_PAT=your_token_here
    

    或创建 .env 文件:

    GITHUB_PAT=your_token_here
    
  2. 保护您的 .env 文件

    # Add to .gitignore to prevent accidental commits
    echo ".env" >> .gitignore
    
  3. 在配置中引用令牌

    # CLI usage
    claude mcp add github -e GITHUB_PERSONAL_ACCESS_TOKEN=$GITHUB_PAT -- docker run -i --rm -e GITHUB_PERSONAL_ACCESS_TOKEN ghcr.io/github/github-mcp-server
    
    # In config files (where supported)
    "env": {
      "GITHUB_PERSONAL_ACCESS_TOKEN": "$GITHUB_PAT"
    }
    

注意: 环境变量支持因主机应用程序和 IDE 而异。某些应用程序(如 Windsurf)需要在配置文件中硬编码令牌。

令牌安全最佳实践

  • 最小权限范围:仅授予必要的权限

    • repo - 仓库操作
    • read:packages - Docker 镜像访问
    • read:org - 组织团队访问
  • 分离令牌:为不同的项目/环境使用不同的 PAT

  • 定期轮换:定期更新令牌

  • 切勿提交:保持令牌不进入版本控制

  • 文件权限:限制包含令牌的配置文件的访问权限

    chmod 600 ~/.your-app/config.json
    

GitHub Enterprise Server 和具有数据驻留功能的 Enterprise Cloud(ghe.com)

标志 --gh-host 和环境变量 GITHUB_HOST 可用于设置 GitHub Enterprise Server 或具有数据驻留功能的 GitHub Enterprise Cloud 的主机名。

  • 对于 GitHub Enterprise Server,请在主机名前加上 https:// URI 方案。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 中安装

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

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

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

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

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

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

有关原生二进制流程(无需固定端口)、无头/设备代码回退、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}"
        }
      }
    }
  }
}

可选地,您可以在工作区中添加一个类似的示例(即不包含 mcp 键)到名为 .vscode/mcp.json 的文件中。这将允许您与接受相同格式的其他主机应用程序共享配置。

不包含 MCP 键的示例 JSON 块
{
  "inputs": [
    {
      "type": "promptString",
      "id": "github_token",
      "description": "GitHub Personal Access Token",
      "password": true
    }
  ],
  "servers": {
    "github": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}"
      }
    }
  }
}

在其他 MCP 主机中安装

对于其他 MCP 主机应用程序,请参阅我们的安装指南:

有关所有安装选项的完整概述,请参阅我们的 安装指南索引。

注意: 任何支持本地 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 发布工作流保留标签版本(包括预发布版本),并允许分支、拉取请求和夜间构建使用链接的源代码修订版。-dirty 标记仅在修订版和修改状态均来自嵌入的 VCS 元数据时应用,绝不会应用于有效且明确提供的 main.commit。这是一个 VCS 构建标识符,而不是发布号。

使用 go build -o github-mcp-server ./cmd/github-mcp-server 从 Git 检出构建完整包以嵌入其 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 服务器支持通过 --toolsets 标志启用或禁用特定的功能组。这允许您控制哪些 GitHub API 功能可供您的 AI 工具使用。仅启用您需要的工具集可以帮助 LLM 进行工具选择并减少上下文大小。

工具集不仅限于工具。相关的 MCP 资源和提示(如果适用)也会被包含在内。

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

寻找示例? 请参阅 服务器配置指南 以获取常见配置,如最小设置、只读模式以及将工具与工具集结合使用。

指定工具集

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

  1. 使用命令行参数:

    github-mcp-server --toolsets repos,issues,pull_requests,actions,code_security
    
  2. 使用环境变量:

    GITHUB_TOOLSETS="repos,issues,pull_requests,actions,code_security" ./github-mcp-server
    

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

指定单个工具

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

  1. 使用命令行参数:

    github-mcp-server --tools get_file_contents,issue_read,create_pull_request
    
  2. 使用环境变量:

    GITHUB_TOOLS="get_file_contents,issue_read,create_pull_request" ./github-mcp-server
    
  3. 与工具集结合使用(加法):

    github-mcp-server --toolsets repos,issues --tools get_gist
    

    这将注册来自 repos 和 issues 工具集的所有工具,以及 get_gist。

重要说明:

  • 工具和工具集可以一起使用
  • 只读模式优先:如果设置了 --read-only,即使通过 --tools 明确请求,写入工具也会被跳过
  • 工具名称必须完全匹配(例如,get_file_contents,而不是 getFileContents)。无效的工具名称将导致服务器在启动时失败并显示错误消息
  • 当工具被重命名时,旧名称将作为别名保留以保持向后兼容性。有关详细信息,请参阅 工具重命名。

使用 Docker 使用工具集

使用 Docker 时,您可以将工具集作为环境变量传递:

docker run -i --rm \
  -e GITHUB_PERSONAL_ACCESS_TOKEN=<your-token> \
  -e GITHUB_TOOLSETS="repos,issues,pull_requests,actions,code_security" \
  ghcr.io/github/github-mcp-server

使用 Docker 使用工具

使用 Docker 时,您可以将特定工具作为环境变量传递。您还可以将工具与工具集结合使用:

# Tools only
docker run -i --rm \
  -e GITHUB_PERSONAL_ACCESS_TOKEN=<your-token> \
  -e GITHUB_TOOLS="get_file_contents,issue_read,create_pull_request" \
  ghcr.io/github/github-mcp-server

# Tools combined with toolsets (additive)
docker run -i --rm \
  -e GITHUB_PERSONAL_ACCESS_TOKEN=<your-token> \
  -e GITHUB_TOOLSETS="repos,issues" \
  -e GITHUB_TOOLS="get_gist" \
  ghcr.io/github/github-mcp-server

特殊工具集

“all”工具集

可以提供特殊工具集 all 以启用所有可用的工具集,无论其他配置如何:

./github-mcp-server --toolsets all

或使用环境变量:

GITHUB_TOOLSETS="all" ./github-mcp-server

“default”工具集

默认工具集 default 是在未指定工具集时传递给服务器的配置。

默认配置为:

  • context
  • repos
  • issues
  • pull_requests
  • users

要保持默认配置并添加额外的工具集:

GITHUB_TOOLSETS="default,stargazers" ./github-mcp-server

内幕模式

本地 GitHub MCP 服务器提供内幕版本,可提前访问新功能和实验性工具。

  1. 使用命令行参数:

    ./github-mcp-server --insiders
    
  2. 使用环境变量:

    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

可用工具集

以下工具集可用:

工具集描述
personcontext强烈推荐:提供有关当前用户和您正在操作的 GitHub 上下文的工具
workflowactionsGitHub Actions 工作流和 CI/CD 操作
code-squarecode_qualityGitHub 代码质量相关工具
codescancode_security代码安全相关工具,例如 GitHub 代码扫描
copilotcopilotCopilot 相关工具
copilotcopilot_issue_intents选择加入的 Copilot 问题分配工具,携带意图元数据(理由、置信度、建议)
dependabotdependabotDependabot 工具
comment-discussiondiscussionsGitHub Discussions 相关工具
logo-gistgistsGitHub Gist 相关工具
git-branchgitGitHub Git API 相关工具,用于低级 Git 操作
lawgovernance仓库治理工具,用于在仓库、组织和企业级别管理规则集和自定义属性
issue-openedissuesGitHub Issues 相关工具
taglabelsGitHub Labels 相关工具
bellnotificationsGitHub Notifications 相关工具
organizationorgsGitHub Organization 相关工具
projectprojectsGitHub Projects 相关工具
git-pull-requestpull_requestsGitHub Pull Request 相关工具
reporeposGitHub Repository 相关工具
shield-locksecret_protection秘密保护相关工具,例如 GitHub 秘密扫描
shieldsecurity_advisories安全公告相关工具
starstargazersGitHub Stargazers 相关工具
peopleusersGitHub User 相关工具

远程 GitHub MCP 服务器中的其他工具集

工具集描述
copilotCopilot 相关工具(例如 Copilot 编码代理)
copilot_spacesCopilot Spaces 相关工具
github_support_docs_search搜索文档以回答 GitHub 产品和支持问题

工具

当协商的 MCP 协议版本是受支持的版本 2026-07-28 或更新版本时,仓库工具会公开输出模式和类型化的 structuredContent。较旧的客户端、协议版本未知的客户端以及省略版本的客户端将收到没有输出模式或结构化输出的现有内容。未知版本不会仅仅因为排序在 2026-07-28 之后而被视为受支持。

对于 get_file_contents,目录结果(包括字段投影)是结构化数组。文件下载和仅元数据响应使用 content 数组,包含类型化的文本、嵌入资源或资源链接块,保留状态消息、文本、base64 块、空文件和下载链接。仅文本的仓库变更(如加星标和删除)也会返回结构化的 message;分叉响应区分仓库引用和进行中的消息。仓库删除在返回完成结果之前仍需要其现有的确认流程。 结构化仓库结果使用紧凑的DTO而非原始REST对象。发布查找与发布列表共享紧凑的发布形态;Git引用保留ref、对象类型和SHA;带注释的标签保留标签/消息/打标签者/目标信息;删除提交保留SHA、消息、作者、树SHA、父SHA以及可用时的人类可读html_url。目录条目保留文件元数据和有用的HTML/下载链接,但省略API和超媒体路由URL,即使这些字段在投影中被请求。旧版和未知协议版本逐字节保留原始文本;现代纯文本JSON响应序列化与structuredContent相同的紧凑DTO。非文本资源块和工具错误保留其现有内容行为。结构化投影使用与旧版格式化程序相同的净化和过滤源。

对于get_repository_tree、list_gists、get_gist、create_gist和update_gist,gist结果保留文件名、内容、大小、语言/类型信息、时间戳、可见性和紧凑的所有者资料,同时省略API/节点和Git传输URL。树条目省略其可推导的API URL。创建/更新gist结果包含gist ID和HTML URL。现代JSON文本和结构化内容序列化相同的紧凑结果。较旧或未知协议版本保留逐字节的旧版文本,没有输出模式或结构化内容。

问题元数据(list_issue_types、list_issue_fields)、评论(add_issue_comment、update_issue_comment)、依赖(issue_dependency_read、issue_dependency_write)和重复检测(find_duplicate)工具为协商的支持协议版本2026-07-28或更新版本提供类型化的outputSchema和structuredContent。较旧或未知协议版本保留相同的文本响应,不包含这些字段。工具错误不返回结构化内容。依赖和重复检测工具保留其现有功能门控。

对于协商的支持协议版本2026-07-28或更新版本,整合的Actions工具(actions_list、actions_get、actions_run_trigger)返回带有method判别符和方法特定类型字段的结构化对象;JSON文本包含相同的紧凑投影。工作流、作业和工件投影省略API/超媒体URL,同时保留浏览器链接和有用的标识符、状态、时间戳和使用时长。运行使用列表按确定性名称顺序列出计费的运行器环境。较旧和未知协议的文本响应保持不变;get_job_logs保留其类型化内容、URL或失败作业收集变体。

workflow Actions
  • actions_get - 获取GitHub Actions资源(工作流、工作流运行、作业和工件)的详细信息

    • OAuth挑战范围:repo
    • method:要执行的方法(字符串,必填)
    • owner:仓库所有者(字符串,必填)
    • repo:仓库名称(字符串,必填)
    • resource_id:资源的唯一标识符。这将根据提供的“方法”而变化,因此请确保提供正确的ID:
      • 为“get_workflow”方法提供工作流ID或工作流文件名(例如ci.yaml)。
      • 为“get_workflow_run”、“get_workflow_run_usage”和“get_workflow_run_logs_url”方法提供工作流运行ID。
      • 为“download_workflow_run_artifact”方法提供工件ID。
      • 为“get_workflow_job”方法提供作业ID。 (字符串,必填)
  • actions_list - 列出仓库中的GitHub Actions工作流

    • OAuth挑战范围:repo
    • method:要执行的操作(字符串,必填)
    • owner:仓库所有者(字符串,必填)
    • page:分页页码(默认:1)(数字,可选)
    • perPage:分页每页结果数(默认:30,最大:100)(数字,可选)
    • repo:仓库名称(字符串,必填)
    • resource_id:资源的唯一标识符。这将根据提供的“方法”而变化,因此请确保提供正确的ID:
      • 不要为“list_workflows”方法提供任何资源ID。
      • 为“list_workflow_runs”方法提供工作流ID或工作流文件名(例如ci.yaml),或省略以列出仓库中的所有工作流运行。
      • 为“list_workflow_jobs”和“list_workflow_run_artifacts”方法提供工作流运行ID。 (字符串,可选)
    • workflow_jobs_filter:工作流作业的过滤器。仅在方法为“list_workflow_jobs”时使用(对象,可选)
    • workflow_runs_filter:工作流运行的过滤器。仅在方法为“list_workflow_runs”时使用(对象,可选)
  • 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”方法必填。(字符串,可选)
  • get_job_logs - 获取GitHub Actions工作流作业日志

    • OAuth挑战范围:repo
    • failed_only:为true时,获取run_id指定的工作流运行中所有失败作业的日志。需要提供run_id。(布尔值,可选)
    • job_id:工作流作业的唯一标识符。获取单个作业日志时必填。(数字,可选)
    • owner:仓库所有者(字符串,必填)
    • repo:仓库名称(字符串,必填)
    • return_content:返回实际日志内容而不是URL(布尔值,可选)
    • run_id:工作流运行的唯一标识符。当failed_only为true以获取运行中所有失败作业的日志时必填。(数字,可选)
    • tail_lines:从日志末尾返回的行数(数字,可选)
code-square 代码质量
  • get_code_quality_finding - 获取代码质量发现
    • OAuth挑战范围:repo
    • findingNumber:发现的编号。(数字,必填)
    • owner:仓库的所有者。(字符串,必填)
    • repo:仓库的名称。(字符串,必填)
codescan 代码安全
  • get_code_scanning_alert - 获取代码扫描警报

    • OAuth挑战范围:security_events
    • alertNumber:警报的编号。(数字,必填)
    • owner:仓库的所有者。(字符串,必填)
    • repo:仓库的名称。(字符串,必填)
  • list_code_scanning_alerts - 列出代码扫描警报

    • OAuth挑战范围:security_events
    • owner:仓库的所有者。(字符串,必填)
    • page:分页页码(最小1)(数字,可选)
    • perPage:分页每页结果数(最小1,最大100)(数字,可选)
    • ref:要列出结果的Git引用。(字符串,可选)
    • repo:仓库的名称。(字符串,必填)
    • severity:按严重性过滤代码扫描警报(字符串,可选)
    • state:按状态过滤代码扫描警报。默认为打开(字符串,可选)
    • tool_name:用于代码扫描的工具名称。(字符串,可选)
person 上下文
  • get_me - 获取我的用户资料

    • MCP应用界面:ui://github-mcp-server/get-me
    • 无需参数
  • get_team_members - 获取团队成员

    • OAuth挑战范围:read:org
    • org:包含团队的组织登录名(所有者)。(字符串,必填)
    • team_slug:团队slug(字符串,必填)
  • get_teams - 获取团队

    • OAuth挑战范围:read:org
    • user:要获取团队的用户名。如果未提供,则使用已认证用户。(字符串,可选)
  • ui_get - 获取UI数据

    • OAuth挑战范围:repo、read:org
    • method:要获取的数据类型(字符串,必填)
    • owner:仓库所有者(所有方法必填)(字符串,必填)
    • repo:仓库名称(标签、分配者、里程碑、分支、问题字段、审查者必填)(字符串,可选)
copilot Copilot
  • assign_copilot_to_issue - 将Copilot分配给问题

    • OAuth挑战范围:repo
    • base_ref:代理开始工作的Git引用(例如分支)。如果未指定,默认为仓库的默认分支(字符串,可选)
    • custom_instructions:可选的自定义指令,用于指导代理超越问题正文。使用此选项提供问题描述中未捕获的额外上下文、约束或指导(字符串,可选)
    • issue_number:问题编号(数字,必填)
    • owner:仓库所有者(字符串,必填)
    • repo:仓库名称(字符串,必填)
  • request_copilot_review - 请求Copilot审查

    • OAuth挑战范围:repo
    • owner:仓库所有者(字符串,必填)
    • pullNumber:拉取请求编号(数字,必填)
    • repo:仓库名称(字符串,必填)
copilot Copilot问题意图 - **assign_copilot_to_issue_with_intent** - 将 Copilot 分配给具有意图的问题 - **OAuth 挑战范围**:`repo` - `base_ref`:Git 引用(例如,分支),代理将从中开始工作。如果未指定,则默认为仓库的默认分支。当 is_suggestion 为 true 时忽略(字符串,可选) - `confidence`:您对此选择的信心程度。'HIGH' 表示明确的信号或明确的用户请求,'MEDIUM' 表示有合理推断但存在一些歧义,'LOW' 表示在信号有限的情况下进行最佳猜测。(字符串,必填) - `custom_instructions`:可选的定制指令,用于在问题正文之外指导代理。当 is_suggestion 为 true 时忽略(字符串,可选) - `is_suggestion`:如果为 true,则记录待处理的 Copilot 分配意图,而不是启动代理。稍后批准将提供启动上下文;在这种情况下,base_ref 和 custom_instructions 将被忽略。(布尔值,必填) - `issue_number`:问题编号(数字,必填) - `owner`:仓库所有者(字符串,必填) - `rationale`:用一句简洁的话解释问题中具体是什么导致选择 Copilot。说明具体的信号(例如,“范围明确且具有清晰验收标准的任务”)。(字符串,必填) - `repo`:仓库名称(字符串,必填)
dependabot Dependabot
  • get_dependabot_alert - 获取 Dependabot 警报

    • OAuth 挑战范围:security_events
    • alertNumber:警报的编号。(数字,必填)
    • owner:仓库的所有者。(字符串,必填)
    • repo:仓库的名称。(字符串,必填)
  • list_dependabot_alerts - 列出 Dependabot 警报

    • OAuth 挑战范围:security_events
    • after:用于分页的游标。使用上一个响应中的游标。(字符串,可选)
    • owner:仓库的所有者。(字符串,必填)
    • perPage:每页结果数,用于分页(最小 1,最大 100)(数字,可选)
    • repo:仓库的名称。(字符串,必填)
    • severity:按严重性筛选 Dependabot 警报(字符串,可选)
    • state:按状态筛选 Dependabot 警报。默认为 open(字符串,可选)
comment-discussion Discussions
  • discussion_comment_write - 管理讨论评论

    • OAuth 挑战范围:repo
    • body:评论内容('add'、'reply' 和 'update' 方法必填)(字符串,可选)
    • commentNodeID:讨论评论的节点 ID('reply'、'update'、'delete'、'mark_answer' 和 'unmark_answer' 方法必填)。对于 'reply',这是要回复的顶级评论;GitHub Discussions 仅支持一层嵌套。(字符串,可选)
    • discussionNumber:讨论编号('add' 和 'reply' 方法必填)(数字,可选)
    • method:要对讨论评论执行的写入操作。 选项包括:
      • 'add' - 向讨论添加新的顶级评论。
      • 'reply' - 回复顶级讨论评论(GitHub Discussions 仅支持一层嵌套)。
      • 'update' - 更新现有的讨论评论。
      • 'delete' - 删除讨论评论。
      • 'mark_answer' - 将讨论评论标记为答案(仅限问答)。
      • 'unmark_answer' - 取消将讨论评论标记为答案(仅限问答)。 (字符串,必填)
    • owner:仓库所有者('add' 和 'reply' 方法必填)(字符串,可选)
    • repo:仓库名称('add' 和 'reply' 方法必填)(字符串,可选)
  • get_discussion - 获取讨论

    • OAuth 挑战范围:repo
    • discussionNumber:讨论编号(数字,必填)
    • owner:仓库所有者(字符串,必填)
    • repo:仓库名称(字符串,必填)
  • get_discussion_comments - 获取讨论评论

    • OAuth 挑战范围:repo
    • after:用于分页的游标。使用上一个响应中的游标。(字符串,可选)
    • discussionNumber:讨论编号(数字,必填)
    • includeReplies:当为 true 时,每个顶级评论将包含嵌套在其中的回复(每个评论最多 100 条回复,这是 GitHub API 的最大值)。默认为 false。(布尔值,可选)
    • owner:仓库所有者(字符串,必填)
    • perPage:每页结果数,用于分页(最小 1,最大 100)(数字,可选)
    • repo:仓库名称(字符串,必填)
  • list_discussion_categories - 列出讨论类别

    • OAuth 挑战范围:repo
    • owner:仓库所有者(字符串,必填)
    • repo:仓库名称。如果未提供,将在组织级别查询讨论类别。(字符串,可选)
  • list_discussions - 列出讨论

    • OAuth 挑战范围:repo
    • after:用于分页的游标。使用上一个响应中的游标。(字符串,可选)
    • category:按讨论类别 ID 的可选筛选。如果提供,则仅列出具有此类别的讨论。(字符串,可选)
    • direction:排序方向。(字符串,可选)
    • orderBy:按字段对讨论进行排序。如果提供,则还需要提供 'direction'。(字符串,可选)
    • owner:仓库所有者(字符串,必填)
    • perPage:每页结果数,用于分页(最小 1,最大 100)(数字,可选)
    • repo:仓库名称。如果未提供,将在组织级别查询讨论。(字符串,可选)
logo-gist Gists
  • create_gist - 创建 Gist

    • OAuth 挑战范围:gist
    • content:用于简单单文件 gist 创建的内容(字符串,必填)
    • description:gist 的描述(字符串,可选)
    • filename:用于简单单文件 gist 创建的文件名(字符串,必填)
    • public:gist 是否为公开(布尔值,可选)
  • get_gist - 获取 Gist 内容

    • gist_id:gist 的 ID(字符串,必填)
  • list_gists - 列出 Gists

    • page:用于分页的页码(最小 1)(数字,可选)
    • perPage:每页结果数,用于分页(最小 1,最大 100)(数字,可选)
    • since:仅列出在此时间之后更新的 gist(ISO 8601 时间戳)(字符串,可选)
    • username:GitHub 用户名(省略以获取已认证用户的 gist)(字符串,可选)
  • update_gist - 更新 Gist

    • OAuth 挑战范围:gist
    • content:文件的内容(字符串,必填)
    • description:gist 的更新描述(字符串,可选)
    • filename:要更新或创建的文件名(字符串,必填)
    • gist_id:要更新的 gist 的 ID(字符串,必填)
git-branch Git
  • get_repository_tree - 获取仓库树
    • OAuth 挑战范围:repo
    • owner:仓库所有者(用户名或组织)(字符串,必填)
    • path_filter:可选的路径前缀,用于筛选树结果(例如,'src/' 仅显示 src 目录中的文件)(字符串,可选)
    • recursive:将此参数设置为 true 将返回树引用的对象或子树。默认为 false(布尔值,可选)
    • repo:仓库名称(字符串,必填)
    • tree_sha:树的 SHA1 值或引用(分支或标签)名称。默认为仓库的默认分支(字符串,可选)
law Governance
  • create_repository_ruleset - 创建仓库规则集

    • OAuth 挑战范围:repo、admin:org、admin:enterprise
    • bypass_actors:可以绕过此规则集中规则的操作者(对象数组,可选)
    • conditions:此规则集适用的条件,例如 {"ref_name": {"include": ["refs/heads/main"], "exclude": []}}(对象,可选)
    • enforcement:规则集的执行级别。'evaluate' 允许管理员在强制执行前测试规则(字符串,必填)
    • enterprise:企业标识。当级别为 'enterprise' 时必填。(字符串,可选)
    • level:规则集配置的级别:
      • 'repository':单个仓库上的规则集(需要 'owner' 和 'repo')。
      • 'organization':覆盖组织中仓库的规则集(需要 'org')。
      • 'enterprise':覆盖企业中仓库的规则集(需要 'enterprise')。(字符串,必填)
    • name:规则集的名称(字符串,必填)
    • org:组织名称。当级别为 'organization' 时必填。(字符串,可选)
    • owner:仓库所有者。当级别为 'repository' 时必填。(字符串,可选)
    • repo:仓库名称。当级别为 'repository' 时必填。(字符串,可选)
    • rules:规则集内的规则数组。每条规则都是一个对象,包含 'type'(例如,'creation'、'deletion'、'non_fast_forward'、'required_signatures'、'pull_request'、'required_status_checks'),对于需要配置的规则,还包含 'parameters' 对象(对象数组,必填)
    • target:规则集的目标。默认为 'branch'。'repository' 仅对 'organization' 和 'enterprise' 级别的规则集有效。(字符串,可选)
  • custom_properties_read - 读取自定义属性

    • OAuth 挑战范围:repo、read:org、read:enterprise
    • enterprise:企业标识。当级别为 'enterprise' 时必填。(字符串,可选)
    • level:自定义属性管理的级别:
      • 'repository':分配给仓库的自定义属性值(需要 'owner' 和 'repo')。
      • 'organization':组织的自定义属性定义(模式)(需要 'org')。
      • 'enterprise':企业的自定义属性定义(模式)(需要 'enterprise')。(字符串,必填)
    • org:组织名称。当级别为 'organization' 时必填。(字符串,可选)
    • owner:仓库所有者。当级别为 'repository' 时必填。(字符串,可选)
    • repo:仓库名称。当级别为 'repository' 时必填。(字符串,可选)
  • custom_properties_write - 设置自定义属性

    • OAuth 挑战范围:repo、admin:org、admin:enterprise
    • enterprise:企业 slug。当级别为“enterprise”时必填。(字符串,可选)
    • level:管理自定义属性的级别:
      • “repository”:分配给仓库的自定义属性值(需要“owner”和“repo”)。
      • “organization”:组织的自定义属性定义(模式)(需要“org”)。
      • “enterprise”:企业的自定义属性定义(模式)(需要“enterprise”)。(字符串,必填)
    • org:组织名称。当级别为“organization”时必填。(字符串,可选)
    • owner:仓库所有者。当级别为“repository”时必填。(字符串,可选)
    • properties:要创建或更新的自定义属性。在仓库级别,每个项目分配一个值(“property_name”和“value”);在组织和企业级别,每个项目定义模式(“property_name”和“value_type”,以及可选的定义字段)。(对象数组,必填)
    • repo:仓库名称。当级别为“repository”时必填。(字符串,可选)
  • repository_ruleset_read - 读取仓库规则集

    • OAuth 挑战范围:repo、read:org、read:enterprise
    • actor_name:用于过滤规则套件的 GitHub 用户账户句柄。由“list_rule_suites”方法使用。(字符串,可选)
    • branch:分支名称。“get_rules_for_branch”方法必填。(字符串,可选)
    • enterprise:企业 slug。当级别为“enterprise”时必填。(字符串,可选)
    • evaluate_status:按规则集评估模式过滤规则套件。由“list_rule_suites”方法使用。(字符串,可选)
    • includes_parents:包括在更高级别配置且同样适用的规则集。默认为 true。由仓库级别的“get”和“list”方法使用。(布尔值,可选)
    • level:配置规则集的级别:
      • “repository”:单个仓库上的规则集(需要“owner”和“repo”)。
      • “organization”:覆盖组织中仓库的规则集(需要“org”)。
      • “enterprise”:覆盖整个企业仓库的规则集(需要“enterprise”)。(字符串,必填)
    • method:要执行的操作:
      • “get”:按 ID 获取特定规则集(需要“ruleset_id”)。支持所有级别。
      • “list”:列出所有规则集。支持所有级别。
      • “get_rules_for_branch”:获取适用于分支的所有规则(需要“branch”)。仅限仓库级别。
      • “list_rule_suites”:列出规则套件,即对推送的规则评估。仅限仓库和组织级别。
      • “get_rule_suite”:按 ID 获取特定规则套件(需要“rule_suite_id”)。仅限仓库和组织级别。(字符串,必填)
    • org:组织名称。当级别为“organization”时必填。(字符串,可选)
    • owner:仓库所有者。当级别为“repository”时必填。(字符串,可选)
    • page:分页页码(最小 1)(数字,可选)
    • perPage:分页每页结果数(最小 1,最大 100)(数字,可选)
    • ref:用于过滤规则套件的引用名称(分支、标签等)。由“list_rule_suites”方法使用。(字符串,可选)
    • repo:仓库名称。当级别为“repository”时必填。(字符串,可选)
    • repository_name:用于过滤规则套件的仓库名称。由组织级别的“list_rule_suites”方法使用。(字符串,可选)
    • rule_suite_id:规则套件 ID。“get_rule_suite”方法必填。(数字,可选)
    • rule_suite_result:要过滤的规则套件结果。由“list_rule_suites”方法使用。(字符串,可选)
    • ruleset_id:规则集 ID。“get”方法必填。(数字,可选)
    • time_period:按时间段过滤规则套件。由“list_rule_suites”方法使用。(字符串,可选)
issue-opened 问题
  • add_issue_comment - 向问题或拉取请求添加评论

    • OAuth 挑战范围:repo
    • body:评论内容。除非提供了 reaction,否则必填。(字符串,可选)
    • comment_id:要对其做出反应的问题或拉取请求评论的数字 ID。用于对评论做出反应;省略则对问题或拉取请求本身做出反应。不能与 body 结合使用。(整数,可选)
    • issue_number:要评论或做出反应的问题或拉取请求编号。(数字,必填)
    • owner:仓库所有者(字符串,必填)
    • reaction:要添加的表情反应。除非提供了 body,否则必填。(字符串,可选)
    • repo:仓库名称(字符串,必填)
  • get_label - 从仓库获取特定标签

    • OAuth 挑战范围:repo
    • name:标签名称。(字符串,必填)
    • owner:仓库所有者(用户名或组织名称)(字符串,必填)
    • repo:仓库名称(字符串,必填)
  • issue_read - 获取问题详情

    • OAuth 挑战范围:repo
    • issue_number:问题编号(数字,必填)
    • method:对单个问题执行的读取操作。 选项包括:
      1. get - 获取问题详情。还返回尽力而为的层级标志(has_parent、has_children);parent 和 sub_issues_summary 是可选的关联摘要,closed_by_pull_requests 总结了配置为关闭该问题的拉取请求,作为 total_count 以及最多 5 个 references。
      2. get_comments - 获取问题评论。
      3. get_sub_issues - 获取问题的子问题(子项)。
      4. get_parent - 获取父问题(如果此问题是另一个问题的子问题)。
      5. get_labels - 获取分配给问题的标签。 (字符串,必填)
    • owner:仓库所有者(字符串,必填)
    • page:分页页码(最小 1)(数字,可选)
    • perPage:分页每页结果数(最小 1,最大 100)(数字,可选)
    • repo:仓库名称(字符串,必填)
  • issue_write - 创建或更新问题/拉取请求

    • OAuth 挑战范围:repo
    • MCP 应用界面:ui://github-mcp-server/issue-write
    • assignees:分配给此问题的用户名(字符串数组,可选)
    • body:问题正文内容(字符串,可选)
    • duplicate_of:此问题重复的问题编号。当 state_reason 为“duplicate”时必填。(数字,可选)
    • issue_fields:要设置或清除的问题字段值。每个项目需要“field_name”以及“value”、“field_option_name”或“delete: true”中的恰好一个。(对象数组,可选)
    • issue_number:要更新的问题编号(数字,可选)
    • labels:应用于此问题的标签(字符串数组,可选)
    • method:对单个问题执行的写入操作。 选项包括:
      • “create” - 创建新问题。
      • “update” - 更新现有问题。 (字符串,必填)
    • milestone:里程碑编号(数字,可选)
    • owner:仓库所有者(字符串,必填)
    • parent_issue_number:父问题的问题编号。仅在 method 为“create”时使用,且不能与 issue_fields 结合使用。新问题将在同一操作中创建并附加到此父问题。(数字,可选)
    • parent_owner:父问题的仓库所有者。必须与 parent_repo 一起提供。两者都省略则使用 owner 和 repo。仅在 method 为“create”且提供了 parent_issue_number 时使用。(字符串,可选)
    • parent_repo:父问题的仓库名称。必须与 parent_owner 一起提供。两者都省略则使用 owner 和 repo。仅在 method 为“create”且提供了 parent_issue_number 时使用。(字符串,可选)
    • repo:仓库名称(字符串,必填)
    • state:新状态(字符串,可选)
    • state_reason:状态更改的原因。除非状态发生更改,否则忽略。(字符串,可选)
    • title:问题标题(字符串,可选)
    • type:此问题的类型。对于更新,传递 null 以移除当前类型。仅当此仓库启用了问题类型时使用。使用 list_issue_types 获取此仓库或其所有者组织的有效类型值。如果仓库不支持问题类型,请省略此参数。(字符串或 null,可选)
  • list_issue_fields - 列出问题字段

    • OAuth 挑战范围:repo、read:org
    • owner:仓库或组织的账户所有者。名称不区分大小写。(字符串,必填)
    • repo:仓库名称。提供时,返回此特定仓库的字段(从其组织继承)。省略时,直接返回组织级字段。(字符串,可选)
  • list_issue_types - 列出可用的问题类型

    • OAuth 挑战范围:repo、read:org
    • owner:仓库或组织的账户所有者。(字符串,必填)
    • repo:仓库名称。提供时,返回此特定仓库的问题类型。省略时,直接返回组织级问题类型。(字符串,可选)
  • list_issues - 列出问题

    • OAuth 挑战范围:repo
    • after:分页游标。使用上一个响应中的游标。(字符串,可选)
    • direction:排序方向。如果提供,则还需要提供“orderBy”。(字符串,可选)
    • field_filters:按自定义问题字段值过滤。每个条目包含一个 field_name 和一个 value;服务器查找该字段并将值强制转换为其类型(单选选项名称、文本、数字或 YYYY-MM-DD 日期)。(对象数组,可选)
    • fields:为每个问题返回的字段子集。如果省略,则返回所有字段。当您只需要特定字段时,使用此选项可减小响应大小;特别是省略“body”和“field_values”会删除每个结果中最大的数据。(字符串数组,可选)
    • labels:按标签过滤(字符串数组,可选)
    • orderBy:按字段对问题排序。如果提供,则还需要提供“direction”。(字符串,可选)
    • owner:仓库所有者(字符串,必填)
    • perPage:分页每页结果数(最小 1,最大 100)(数字,可选)
    • repo:仓库名称(字符串,必填)
    • since:按日期过滤(ISO 8601 时间戳)(字符串,可选)
    • state:按状态过滤,未提供时默认返回打开和关闭的问题(字符串,可选)
  • search_issues - 搜索问题

    • OAuth 挑战范围:repo
    • fields:每个问题结果要返回的字段子集。如果省略,则返回所有字段。当您只需要特定字段时,使用此选项可减小响应大小;特别是省略“body”、“reactions”和“labels”会减少每个结果中最大的数据。(字符串数组,可选)
    • order:排序顺序(字符串,可选)
    • owner:可选的仓库所有者。如果与仓库名称一起提供,则仅列出此仓库的问题。(字符串,可选)
    • page:分页页码(最小 1)(数字,可选)
    • perPage:每页结果数(最小 1,最大 100)(数字,可选)
    • query:搜索查询,使用自然语言。当用户给出替代措辞时,将其作为普通词语包含,而不是用 OR 连接。(字符串,必填)
    • repo:可选的仓库名称。如果与所有者一起提供,则仅列出此仓库的问题。(字符串,可选)
    • sort:按类别匹配数排序的字段,默认为最佳匹配(字符串,可选)
  • sub_issue_write - 更改子问题

    • OAuth 挑战范围:repo
    • after_id:要优先排序在其后的子问题的 ID(应指定 after_id 或 before_id 之一)(数字,可选)
    • before_id:要优先排序在其前的子问题的 ID(应指定 after_id 或 before_id 之一)(数字,可选)
    • issue_number:父问题的编号(数字,必填)
    • method:对单个子问题执行的操作 选项有:
      • 'add' - 在 GitHub 仓库中向父问题添加子问题。
      • 'remove' - 从 GitHub 仓库中的父问题移除子问题。
      • 'reprioritize' - 更改 GitHub 仓库中父问题内子问题的顺序。使用 'after_id' 或 'before_id' 指定新位置。 写入问题层级。要将子问题移动到新的父问题,请使用 add 配合 replace_parent=true;没有可写的父字段。 (字符串,必填)
    • owner:仓库所有者(字符串,必填)
    • replace_parent:为 true 时,替换子问题当前的父问题。仅与 'add' 方法一起使用。(布尔值,可选)
    • repo:仓库名称(字符串,必填)
    • sub_issue_id:要添加的子问题的 ID。ID 与问题编号不同(数字,必填)
  • update_issue_comment - 更新问题评论

    • OAuth 挑战范围:repo
    • body:新的评论内容(字符串,必填)
    • comment_id:要更新的问题或拉取请求对话评论的数字 ID。不要使用拉取请求审查评论 ID。(整数,必填)
    • owner:仓库所有者(字符串,必填)
    • repo:仓库名称(字符串,必填)
tag 标签
  • get_label - 从仓库获取特定标签

    • OAuth 挑战范围:repo
    • name:标签名称。(字符串,必填)
    • owner:仓库所有者(用户名或组织名称)(字符串,必填)
    • repo:仓库名称(字符串,必填)
  • label_write - 仓库标签的写入操作

    • OAuth 挑战范围:repo
    • color:标签颜色,为不带 '#' 前缀的 6 字符十六进制代码(例如 'f29513')。'create' 操作必填,'update' 操作可选。(字符串,可选)
    • description:标签描述文本。'create' 和 'update' 操作可选。(字符串,可选)
    • method:要执行的操作:'create'、'update' 或 'delete'(字符串,必填)
    • name:标签名称 - 所有操作必填(字符串,必填)
    • new_name:标签的新名称(仅用于 'update' 方法重命名)(字符串,可选)
    • owner:仓库所有者(用户名或组织名称)(字符串,必填)
    • repo:仓库名称(字符串,必填)
  • list_label - 列出仓库中的标签

    • OAuth 挑战范围:repo
    • after:分页游标。使用上一个响应中的游标。(字符串,可选)
    • owner:仓库所有者(用户名或组织名称)- 所有操作必填(字符串,必填)
    • perPage:每页结果数(最小 1,最大 100)(数字,可选)
    • repo:仓库名称 - 所有操作必填(字符串,必填)
bell 通知
  • dismiss_notification - 关闭通知

    • OAuth 挑战范围:notifications
    • state:通知的新状态(read/done)(字符串,必填)
    • threadID:通知线程的 ID(字符串,必填)
  • get_notification_details - 获取通知详情

    • OAuth 挑战范围:notifications
    • notificationID:通知的 ID(字符串,必填)
  • list_notifications - 列出通知

    • OAuth 挑战范围:notifications
    • before:仅显示在给定时间之前更新的通知(ISO 8601 格式)(字符串,可选)
    • filter:过滤通知,除非指定,否则使用默认值。已读通知是用户已经确认的通知。参与通知是用户直接参与的通知,例如用户评论过或创建的问题或拉取请求。(字符串,可选)
    • owner:可选的仓库所有者。如果与仓库名称一起提供,则仅列出此仓库的通知。(字符串,可选)
    • page:分页页码(最小 1)(数字,可选)
    • perPage:每页结果数(最小 1,最大 100)(数字,可选)
    • repo:可选的仓库名称。如果与所有者一起提供,则仅列出此仓库的通知。(字符串,可选)
    • since:仅显示在给定时间之后更新的通知(ISO 8601 格式)(字符串,可选)
  • manage_notification_subscription - 管理通知订阅

    • OAuth 挑战范围:notifications
    • action:要执行的操作:忽略、关注或删除通知订阅。(字符串,必填)
    • notificationID:通知线程的 ID。(字符串,必填)
  • manage_repository_notification_subscription - 管理仓库通知订阅

    • OAuth 挑战范围:notifications
    • action:要执行的操作:忽略、关注或删除仓库通知订阅。(字符串,必填)
    • owner:仓库的账户所有者。(字符串,必填)
    • repo:仓库的名称。(字符串,必填)
  • mark_all_notifications_read - 将所有通知标记为已读

    • OAuth 挑战范围:notifications
    • lastReadAt:描述检查通知的最后时间点(可选)。默认:现在(字符串,可选)
    • owner:可选的仓库所有者。如果与仓库名称一起提供,则仅将此仓库的通知标记为已读。(字符串,可选)
    • repo:可选的仓库名称。如果与所有者一起提供,则仅将此仓库的通知标记为已读。(字符串,可选)
organization 组织
  • search_orgs - 搜索组织
    • OAuth 挑战范围:read:org
    • order:排序顺序(字符串,可选)
    • page:分页页码(最小 1)(数字,可选)
    • perPage:每页结果数(最小 1,最大 100)(数字,可选)
    • query:组织搜索查询。示例:'microsoft'、'location:california'、'created:>=2025-01-01'。搜索自动限定为 type:org。(字符串,必填)
    • sort:按类别排序的字段(字符串,可选)
project 项目
  • projects_get - 获取 GitHub Projects 资源的详情

    • OAuth 挑战范围:read:project
    • field_id:字段的 ID。'get_project_field' 方法必填。(数字,可选)
    • field_names:获取项目项时要在响应中包含的特定字段名称列表(例如 ["Status", "Priority"])。在服务器端解析为字段 ID — 当您只知道人类可读名称时,请传递此参数而不是 'fields'。与 'fields' 互斥 — 只提供其中一个,不要同时提供。仅用于 'get_project_item' 方法。(字符串数组,可选)
    • fields:获取项目项时要在响应中包含的特定字段 ID 列表(例如 ["102589", "985201", "169875"])。如果既未提供 'fields' 也未提供 'field_names',则仅包含标题字段。与 'field_names' 互斥 — 只提供其中一个,不要同时提供。仅用于 'get_project_item' 方法。(字符串数组,可选)
    • item_id:项目的 ID。'get_project_item' 方法必填。(数字,可选)
    • method:要执行的方法(字符串,必填)
    • owner:所有者(用户或组织登录名)。名称不区分大小写。(字符串,可选)
    • owner_type:所有者类型(用户或组织)。如果未提供,将自动检测。(字符串,可选)
    • project_number:项目的编号。(数字,可选)
    • status_update_id:项目状态更新的节点 ID。'get_project_status_update' 方法必填。(字符串,可选)
    • view_id:项目视图的节点 ID。'get_project_view' 方法必填。(字符串,可选)
  • projects_list - 列出 GitHub Projects 资源

    • OAuth 挑战范围:read:project
    • after:来自上一页 pageInfo.nextCursor 的向前分页游标。(字符串,可选)
    • before:来自上一页 pageInfo.prevCursor 的向后分页游标(罕见)。(字符串,可选)
    • field_names:列出项目项时要包含的字段名称(例如 ["Status", "Priority"])。在服务端解析为字段 ID——当您只知道人类可读名称时,请传递此参数而不是 'fields'。无法解析的名称会返回结构化错误。与 'fields' 互斥——只提供其中一个,不要同时提供。仅用于 'list_project_items' 方法。(字符串数组,可选)
    • fields:列出项目项时要包含的字段 ID(例如 ["102589", "985201"])。关键:始终提供以获取字段值。没有此参数(也没有 'field_names')时,仅返回标题。与 'field_names' 互斥——只提供其中一个,不要同时提供。仅用于 'list_project_items' 方法。(字符串数组,可选)
    • method:要执行的操作(字符串,必填)
    • owner:所有者(用户或组织登录名)。名称不区分大小写。(字符串,必填)
    • owner_type:所有者类型(用户或组织)。如果未提供,将自动尝试两者。(字符串,可选)
    • perPage:每页结果数(最多 50)(数字,可选)
    • project_number:项目编号。'list_project_fields'、'list_project_items'、'list_project_views' 和 'list_project_status_updates' 方法必填。(数字,可选)
    • query:筛选/查询字符串。对于 list_projects:按标题文本和状态筛选(例如 "roadmap is:open")。对于 list_project_items:使用 GitHub 的项目筛选语法进行高级筛选。(字符串,可选)
  • projects_write - 管理 GitHub Projects

    • OAuth 挑战范围:project
    • body:状态更新的正文(markdown)。用于 'create_project_status_update' 方法。(字符串,可选)
    • field_name:迭代字段的名称(例如 'Sprint')。'create_iteration_field' 方法必填。(字符串,可选)
    • filter:已保存的视图筛选器;更新时省略以保留,或传递 null 以清除。(字符串 | null,可选)
    • issue_number:问题编号。当 item_type 为 'issue' 时,'add_project_item' 必填。'update_project_item' 也接受此参数以按问题编号解析项目项(与 item_owner 和 item_repo 结合使用)。(数字,可选)
    • item_id:项目项 ID。'delete_project_item' 必填。对于 'update_project_item',提供 item_id,或(item_owner + item_repo + issue_number)以按问题解析项目项。(数字,可选)
    • item_owner:包含问题或拉取请求的仓库的所有者(用户或组织)。'add_project_item' 方法必填。'update_project_item' 按问题编号解析项目项时也接受此参数。(字符串,可选)
    • item_repo:包含问题或拉取请求的仓库名称。'add_project_item' 方法必填。'update_project_item' 按问题编号解析项目项时也接受此参数。(字符串,可选)
    • item_type:项目项的类型,issue 或 pull_request。'add_project_item' 方法必填。(字符串,可选)
    • items:要使用顶级 'updated_field' 更新的项目项。'update_project_items' 必填;优先使用它而不是在循环中调用 'update_project_item'。每个条目必须精确匹配一种引用变体:'node_id'、数字 'item_id' 或 'item_owner' + 'item_repo' + 'issue_number'。限制:每次调用最多 50 个项目项。(对象数组,可选)
    • iteration_duration:字段迭代的持续时间(天)(例如 7 表示每周,14 表示每两周)。'create_iteration_field' 方法必填。(数字,可选)
    • iterations:'create_iteration_field' 方法的自定义迭代。仅当您需要不同持续时间、间隔或特定标题的迭代时才设置此参数。否则请省略:GitHub 会自动创建三个从 'start_date' 开始、持续 'iteration_duration' 天的迭代,这在大多数情况下是正确的选择。(对象数组,可选)
    • layout:视图布局;创建视图时必填。(字符串,可选)
    • method:要执行的方法(字符串,必填)
    • name:视图名称;创建视图时必填。(字符串,可选)
    • owner:项目所有者(用户或组织登录名)。名称不区分大小写。(字符串,必填)
    • owner_type:所有者类型(用户或组织)。'create_project' 方法必填。如果其他方法未提供,将自动检测。(字符串,可选)
    • project_number:项目编号。除 'create_project' 外的所有方法必填。(数字,可选)
    • pull_request_number:拉取请求编号(当 item_type 为 'pull_request' 时用于 'add_project_item' 方法)。提供 issue_number 或 pull_request_number 之一。(数字,可选)
    • start_date:开始日期,格式为 YYYY-MM-DD。用于 'create_project_status_update' 和 'create_iteration_field' 方法。(字符串,可选)
    • status:项目状态。用于 'create_project_status_update' 方法。(字符串,可选)
    • target_date:状态更新的目标日期,格式为 YYYY-MM-DD。用于 'create_project_status_update' 方法。(字符串,可选)
    • title:项目标题。'create_project' 方法必填。(字符串,可选)
    • updated_field:要应用的字段/值,使用 {"id": 123, "value": ...} 或 {"name": "Status", "value": ...};null 清除字段。'update_project_item' 和 'update_project_items' 必填,其中一个顶级字段/值应用于批次中的每个项目项。对于 'update_project_item' 的 SINGLE_SELECT 字段,名称形式接受选项名称;ID 形式期望选项 ID。(对象,可选)
    • view_id:用于更新或删除的项目视图节点 ID;必须属于 owner/project_number。(字符串,可选)
    • visible_field_names:创建时显示或更新时替换的有序项目字段名称;更新时省略以保留,或传递 [] 以重置。与 visible_fields 互斥。Roadmap 仅接受 []。(字符串数组,可选)
    • visible_fields:创建时显示或更新时替换的有序项目字段数据库 ID;更新时省略以保留,或传递 [] 以重置。与 visible_field_names 互斥。Roadmap 仅接受 []。(字符串数组,可选)
git-pull-request 拉取请求
  • add_comment_to_pending_review - 向请求者最新的待处理拉取请求审查添加审查评论

    • OAuth 挑战范围:repo
    • body:审查评论的文本(字符串,必填)
    • line:评论所适用的拉取请求差异中的 blob 行。对于多行评论,为范围的最后一行(数字,可选)
    • owner:仓库所有者(字符串,必填)
    • path:需要评论的文件的相对路径(字符串,必填)
    • pullNumber:拉取请求编号(数字,必填)
    • repo:仓库名称(字符串,必填)
    • side:要评论的差异侧。LEFT 表示先前状态,RIGHT 表示新状态(字符串,可选)
    • startLine:对于多行评论,评论所适用的范围的第一行(数字,可选)
    • startSide:对于多行评论,评论所适用的差异的起始侧。LEFT 表示先前状态,RIGHT 表示新状态(字符串,可选)
    • subjectType:评论所针对的级别(字符串,必填)
  • add_reply_to_pull_request_comment - 添加对拉取请求评论的回复

    • OAuth 挑战范围:repo
    • body:回复的文本。除非提供了 reaction,否则必填。(字符串,可选)
    • commentId:要回复或反应的拉取请求审查评论的数字 ID。使用 #discussion_r... 锚点中的数字,而不是 GraphQL 线程节点 ID(PRRT_...)。(数字,必填)
    • owner:仓库所有者(字符串,必填)
    • pullNumber:拉取请求编号。提供 body 时必填。(数字,可选)
    • reaction:要添加的表情符号反应。除非提供了 body,否则必填。(字符串,可选)
    • repo:仓库名称(字符串,必填)
  • create_pull_request - 打开新的拉取请求

    • OAuth 挑战范围:repo
    • MCP 应用界面:ui://github-mcp-server/pr-write
    • base:要合并到的分支(字符串,必填)
    • body:PR 描述(字符串,可选)
    • draft:创建为草稿 PR(布尔值,可选)
    • head:包含更改的分支(字符串,必填)
    • maintainer_can_modify:允许维护者编辑(布尔值,可选)
    • owner:仓库所有者(字符串,必填)
    • repo:仓库名称(字符串,必填)
    • reviewers:要请求审查的 GitHub 用户名或 ORG/team-slug 团队审查者(字符串数组,可选)
    • title:PR 标题(字符串,必填)
  • list_pull_requests - 列出拉取请求

    • OAuth 挑战范围:repo
    • base:按基础分支筛选(字符串,可选)
    • direction:排序方向(字符串,可选)
    • fields:为每个拉取请求返回的字段子集。如果省略,则返回所有字段。当您只需要特定字段时使用此参数以减少响应大小;特别是省略 'body' 会删除每个结果中最大的数据。(字符串数组,可选)
    • head:按头部用户/组织和分支筛选(字符串,可选)
    • owner:仓库所有者(字符串,必填)
    • page:分页页码(最小 1)(数字,可选)
    • perPage:分页每页结果数(最小 1,最大 100)(数字,可选)
    • repo:仓库名称(字符串,必填)
    • sort:排序依据(字符串,可选)
    • state:按状态筛选(字符串,可选)
  • merge_pull_request - 合并拉取请求

    • OAuth 挑战范围:repo
    • commit_message:合并提交的额外详细信息(字符串,可选)
    • commit_title:合并提交的标题(字符串,可选)
    • expectedHeadSha:拉取请求 HEAD 引用的预期 SHA(字符串,可选)
    • merge_method:合并方法(字符串,可选)
    • owner:仓库所有者(字符串,必填)
    • pullNumber:拉取请求编号(数字,必填)
    • repo:仓库名称(字符串,必填)
  • pull_request_read - 获取单个拉取请求的详细信息

    • OAuth 挑战范围:repo
    • after:分页游标,仅由 get_review_comments 方法使用。传递上一页 PageInfo 中的 endCursor 以获取下一页。(字符串,可选)
    • method:指定需要从 GitHub 检索哪些拉取请求数据的操作。 可能选项:
      1. get - 获取特定拉取请求的详细信息。
      2. get_diff - 获取拉取请求的差异。
      3. get_status - 获取拉取请求中头部提交的组合提交状态。
      4. get_files - 获取拉取请求中更改的文件列表。使用分页参数控制返回结果数量。
      5. get_commits - 获取拉取请求上的提交列表。使用分页参数控制返回结果数量。
      6. get_review_comments - 获取拉取请求上的审查线程。每个线程包含在拉取请求审查期间对同一代码位置所做的逻辑分组的审查评论。返回线程元数据和评论,包含可空的当前和原始行范围坐标(line、start_line、original_line、original_start_line)。当前坐标在不可用时省略,例如过时评论。使用基于游标的分页(perPage、after)控制结果。
      7. get_reviews - 获取拉取请求上的审查。当被要求获取审查评论时,使用 get_review_comments 方法。使用分页参数控制返回结果数量。
      8. get_comments - 获取拉取请求上的评论。如果用户不特别要求审查评论,请使用此选项。使用分页参数控制返回结果数量。
      9. get_check_runs - 获取拉取请求头部提交的检查运行。检查运行是在 PR 上运行的各个 CI/CD 作业和检查。 (字符串,必填)
    • owner:仓库所有者(字符串,必填)
    • page:分页页码(最小 1)(数字,可选)
    • perPage:分页每页结果数(最小 1,最大 100)(数字,可选)
    • pullNumber:拉取请求编号(数字,必填)
    • repo:仓库名称(字符串,必填)
  • pull_request_review_write - 对拉取请求审查执行写入操作(创建、提交、删除)

    • OAuth 挑战范围:repo
    • body:审查评论文本(字符串,可选)
    • commitID:要审查的提交的 SHA(字符串,可选)
    • event:要执行的审查操作。(字符串,可选)
    • method:要对拉取请求审查执行的写入操作。(字符串,必填)
    • owner:仓库所有者(字符串,必填)
    • pullNumber:拉取请求编号(数字,必填)
    • repo:仓库名称(字符串,必填)
    • threadId:审查线程的节点 ID(例如,PRRT_kwDOxxx)。resolve_thread 和 unresolve_thread 方法需要。通过 pull_request_read 使用 get_review_comments 方法获取线程 ID。(字符串,可选)
  • search_pull_requests - 搜索拉取请求

    • OAuth 挑战范围:repo
    • fields:每个拉取请求结果要返回的字段子集。如果省略,则返回所有字段。当您只需要特定字段时,使用此选项可减小响应大小;特别是省略 'body'、'reactions' 和 'labels' 会丢弃每个结果中最大的数据。(字符串[],可选)
    • order:排序顺序(字符串,可选)
    • owner:可选的仓库所有者。如果与仓库一起提供,则仅列出此仓库的拉取请求。(字符串,可选)
    • page:分页页码(最小 1)(数字,可选)
    • perPage:分页每页结果数(最小 1,最大 100)(数字,可选)
    • query:使用 GitHub 拉取请求搜索语法的搜索查询(字符串,必填)
    • repo:可选的仓库名称。如果与所有者一起提供,则仅列出此仓库的拉取请求。(字符串,可选)
    • sort:按类别匹配数排序的字段,默认为最佳匹配(字符串,可选)
  • update_pull_request - 编辑拉取请求

    • OAuth 挑战范围:repo
    • MCP 应用界面:ui://github-mcp-server/pr-edit
    • base:新的基础分支名称(字符串,可选)
    • body:新描述(字符串,可选)
    • draft:将拉取请求标记为草稿(true)或准备审查(false)(布尔值,可选)
    • maintainer_can_modify:允许维护者编辑(布尔值,可选)
    • owner:仓库所有者(字符串,必填)
    • pullNumber:要更新的拉取请求编号(数字,必填)
    • repo:仓库名称(字符串,必填)
    • reviewers:请求审查的 GitHub 用户名或 ORG/团队别名团队审查者(字符串[],可选)
    • state:新状态(字符串,可选)
    • title:新标题(字符串,可选)
  • update_pull_request_branch - 更新拉取请求分支

    • OAuth 挑战范围:repo
    • expectedHeadSha:拉取请求 HEAD 引用的预期 SHA(字符串,可选)
    • owner:仓库所有者(字符串,必填)
    • pullNumber:拉取请求编号(数字,必填)
    • repo:仓库名称(字符串,必填)
repo 仓库
  • create_branch - 创建分支

    • OAuth 挑战范围:repo
    • branch:新分支的名称(字符串,必填)
    • from_branch:源分支(默认为仓库默认分支)(字符串,可选)
    • owner:仓库所有者(字符串,必填)
    • repo:仓库名称(字符串,必填)
  • create_or_update_file - 创建或更新文件

    • OAuth 挑战范围:repo、workflow
    • allow_symlink_write:设置为 true 以更新符号链接本身;内容必须是其新目标路径。(布尔值,可选)
    • branch:要创建/更新文件的分支(字符串,必填)
    • content:文件内容,应完全按照写入后的样子。不要进行 base64 编码;此服务器在调用 REST API 之前会进行编码。(字符串,必填)
    • message:提交消息(字符串,必填)
    • owner:仓库所有者(用户名或组织)(字符串,必填)
    • path:要创建/更新文件的路径(字符串,必填)
    • repo:仓库名称(字符串,必填)
    • sha:要替换的文件的 blob SHA。如果文件已存在,则为必填。使用相同的所有者、仓库和路径,并将 ref 设置为此工具的分支值,通过 get_file_contents 获取。(字符串,可选)
  • create_repository - 创建仓库

    • OAuth 挑战范围:repo
    • autoInit:使用 README 初始化(布尔值,可选)
    • description:仓库描述(字符串,可选)
    • name:仓库名称(字符串,必填)
    • organization:要在其中创建仓库的组织(省略则在您的个人账户中创建)(字符串,可选)
    • private:仓库是否应为私有。省略时默认为 true(私有)。(布尔值,可选)
  • delete_file - 删除文件

    • OAuth 挑战范围:repo、workflow
    • branch:要从中删除文件的分支(字符串,必填)
    • message:提交消息(字符串,必填)
    • owner:仓库所有者(用户名或组织)(字符串,必填)
    • path:要删除的文件的路径(字符串,必填)
    • repo:仓库名称(字符串,必填)
  • delete_repository - 删除仓库

    • OAuth 挑战范围:delete_repo、repo
    • owner:仓库所有者(用户名或组织)(字符串,必填)
    • repo:仓库名称(字符串,必填)
  • fork_repository - 分叉仓库

    • OAuth 挑战范围:repo
    • organization:要分叉到的组织(字符串,可选)
    • owner:仓库所有者(字符串,必填)
    • repo:仓库名称(字符串,必填)
  • get_commit - 获取提交详细信息

    • OAuth 挑战范围:repo
    • detail:更改文件的详细信息级别。"none" 完全省略统计信息和文件。"stats"(默认)包括每个文件的元数据:文件名、状态和代码行数(添加、删除、更改),不包含补丁内容。"full_patch" 额外包括每个文件的统一差异内容,可能非常大。(字符串,可选)
    • owner:仓库所有者(字符串,必填)
    • page:分页页码(最小 1)(数字,可选)
    • perPage:分页每页结果数(最小 1,最大 100)(数字,可选)
    • repo:仓库名称(字符串,必填)
    • sha:提交 SHA、分支名称或标签名称(字符串,必填)
  • get_file_contents - 获取文件或目录内容

    • OAuth 挑战范围:repo
    • fields:当路径是目录时,每个条目要返回的字段子集。如果省略,则返回所有字段。当路径是单个文件时忽略。列出目录时,如果您只需要特定字段(例如仅 'name' 和 'type'),使用此选项可减小响应大小。(字符串[],可选)
    • owner:仓库所有者(用户名或组织)(字符串,必填)
    • path:文件/目录路径(字符串,可选)
    • ref:接受可选的 git 引用,如 refs/tags/{tag}、refs/heads/{branch} 或 refs/pull/{pr_number}/head(字符串,可选)
    • repo:仓库名称(字符串,必填)
    • sha:接受可选的提交 SHA。如果指定,将使用它而不是 ref(字符串,可选)
  • get_latest_release - 获取最新版本

    • OAuth 挑战范围:repo
    • owner:仓库所有者(字符串,必填)
    • repo:仓库名称(字符串,必填)
  • get_release_by_tag - 按标签名称获取版本

    • OAuth 挑战范围:repo
    • owner:仓库所有者(字符串,必填)
    • repo:仓库名称(字符串,必填)
    • tag:标签名称(例如,'v1.0.0')(字符串,必填)
  • get_tag - 获取标签详细信息

    • OAuth 挑战范围:repo
    • owner:仓库所有者(字符串,必填)
    • repo:仓库名称(字符串,必填)
    • tag:标签名称(字符串,必填)
  • list_branches - 列出分支

    • OAuth 挑战范围:repo
    • owner:仓库所有者(字符串,必填)
    • page:分页页码(最小 1)(数字,可选)
    • perPage:分页每页结果数(最小 1,最大 100)(数字,可选)
    • repo:仓库名称(字符串,必填)
  • list_commits - 列出提交

    • OAuth 挑战范围: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)(字符串,可选)
  • list_releases - 列出发布

    • OAuth 挑战范围:repo
    • fields:要为每个发布返回的字段子集。如果省略,则返回所有字段。当您只需要特定字段时,可使用此选项来减小响应大小;特别是省略“body”会删除每个发布中最大的数据。(字符串数组,可选)
    • owner:仓库所有者(字符串,必填)
    • page:分页页码(最小 1)(数字,可选)
    • perPage:分页每页结果数(最小 1,最大 100)(数字,可选)
    • repo:仓库名称(字符串,必填)
  • list_repository_collaborators - 列出仓库协作者

    • OAuth 挑战范围:repo
    • affiliation:按关联关系筛选。可以是以下之一:“outside”(外部协作者)、“direct”(所有具有权限的人员,无论组织成员身份如何)、“all”(所有协作者)。默认值:“all”(字符串,可选)
    • owner:仓库所有者(字符串,必填)
    • page:分页页码(默认 1,最小 1)(数字,可选)
    • perPage:分页每页结果数(默认 30,最小 1,最大 100)(数字,可选)
    • repo:仓库名称(字符串,必填)
  • list_tags - 列出标签

    • OAuth 挑战范围:repo
    • owner:仓库所有者(字符串,必填)
    • page:分页页码(最小 1)(数字,可选)
    • perPage:分页每页结果数(最小 1,最大 100)(数字,可选)
    • repo:仓库名称(字符串,必填)
  • push_files - 推送文件到仓库

    • OAuth 挑战范围:repo、workflow
    • branch:要推送到的分支(字符串,必填)
    • files:要推送的文件对象数组,每个对象包含路径(字符串)和内容(字符串)(对象数组,必填)
    • message:提交消息(字符串,必填)
    • owner:仓库所有者(字符串,必填)
    • repo:仓库名称(字符串,必填)
  • search_code - 搜索代码

    • OAuth 挑战范围:repo
    • fields:要为每个代码搜索结果返回的字段子集。如果省略,则返回所有字段。当您只需要特定字段时,可使用此选项来减小响应大小;特别是省略“repository”和“text_matches”会删除每个结果中最大的数据。(字符串数组,可选)
    • order:结果的排序顺序(字符串,可选)
    • page:分页页码(最小 1)(数字,可选)
    • perPage:分页每页结果数(最小 1,最大 100)(数字,可选)
    • query:搜索查询(GitHub 代码搜索 REST)。术语之间隐式使用 AND;支持 OR、NOT 和 "quoted phrase" 进行精确匹配。限定符:repo:owner/repo、org:、user:、language:、path:dir(前缀匹配)、filename:exact.ext、extension:、in:file、in:path、size:、is:archived、is:fork。最大 256 个字符。示例:WithContext language:go org:github;"package main" repo:o/r;func extension:go path:cmd repo:o/r;NOT TODO language:go repo:o/r。(字符串,必填)
    • sort:排序字段(仅“indexed”)(字符串,可选)
  • search_commits - 搜索提交

    • OAuth 挑战范围:repo
    • order:排序顺序(字符串,可选)
    • page:分页页码(最小 1)(数字,可选)
    • perPage:分页每页结果数(最小 1,最大 100)(数字,可选)
    • query:提交搜索查询(GitHub 提交搜索 REST)。仅搜索默认分支上的提交消息。使用 repo:owner/repo、org: 或 user: 限定搜索范围(没有范围限定符的查询会匹配整个 GitHub,通常不是您想要的)。其他限定符:author:、committer:、author-name:、committer-name:、author-email:、committer-email:、author-date:、committer-date:(支持 >、<、>=、<= 和 YYYY-MM-DD..YYYY-MM-DD 范围)、merge:true|false、hash:、tree:、parent:、is:public。示例:repo:owner/repo fix panic;org:github author:defunkt committer-date:>=2024-01-01;"refactor cache" repo:o/r;hash:abc1234 repo:o/r。(字符串,必填)
    • sort:按作者或提交者日期排序(默认为最佳匹配)(字符串,可选)
  • search_repositories - 搜索仓库

    • OAuth 挑战范围:repo
    • minimal_output:返回最简仓库信息(默认:true)。当为 false 时,现代客户端会收到额外的精选仓库详细信息,而非完整的 GitHub API 对象。旧版客户端保留完整的 GitHub API 仓库对象。(布尔值,可选)
    • order:排序顺序(字符串,可选)
    • page:分页页码(最小 1)(数字,可选)
    • perPage:分页每页结果数(最小 1,最大 100)(数字,可选)
    • query:仓库搜索查询。示例:“machine learning in:name stars:>1000 language:python”、“topic:react”、“user:facebook”。支持高级搜索语法以进行精确筛选。(字符串,必填)
    • sort:按字段对仓库进行排序,默认为最佳匹配(字符串,可选)
shield-lock 密钥保护
  • get_secret_scanning_alert - 获取密钥扫描警报

    • OAuth 挑战范围:security_events
    • alertNumber:警报编号。(数字,必填)
    • owner:仓库的所有者。(字符串,必填)
    • repo:仓库的名称。(字符串,必填)
  • list_secret_scanning_alerts - 列出密钥扫描警报

    • OAuth 挑战范围:security_events
    • owner:仓库的所有者。(字符串,必填)
    • page:分页页码(最小 1)(数字,可选)
    • perPage:分页每页结果数(最小 1,最大 100)(数字,可选)
    • repo:仓库的名称。(字符串,必填)
    • resolution:按解决状态筛选(字符串,可选)
    • secret_type:要返回的密钥类型的逗号分隔列表。返回所有默认密钥模式。要返回通用模式,请在参数中传递令牌名称。(字符串,可选)
    • state:按状态筛选(字符串,可选)
shield 安全公告
  • get_global_security_advisory - 获取全局安全公告

    • OAuth 挑战范围:security_events
    • ghsaId:GitHub 安全公告 ID(格式:GHSA-xxxx-xxxx-xxxx)。(字符串,必填)
  • list_global_security_advisories - 列出全局安全公告

    • OAuth 挑战范围: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 日期或范围)。(字符串,可选)
  • list_org_repository_security_advisories - 列出组织仓库安全公告

    • OAuth 挑战范围:security_events
    • direction:排序方向。(字符串,可选)
    • org:组织登录名。(字符串,必填)
    • sort:排序字段。(字符串,可选)
    • state:按公告状态筛选。(字符串,可选)
  • list_repository_security_advisories - 列出仓库安全公告

    • OAuth 挑战范围:security_events
    • direction:排序方向。(字符串,可选)
    • owner:仓库的所有者。(字符串,必填)
    • repo:仓库的名称。(字符串,必填)
    • sort:排序字段。(字符串,可选)
    • state:按公告状态筛选。(字符串,可选)
star 星标用户
  • list_starred_repositories - 列出已加星标的仓库

    • OAuth 挑战范围:repo
    • direction:结果排序的方向。(字符串,可选)
    • page:分页页码(最小 1)(数字,可选)
    • perPage:分页每页结果数(最小 1,最大 100)(数字,可选)
    • sort:结果的排序方式。可以是“created”(仓库被加星标的时间)或“updated”(仓库最后被推送的时间)。(字符串,可选)
    • username:要列出已加星标仓库的用户名。默认为已认证用户。(字符串,可选)
  • star_repository - 为仓库加星标

    • OAuth 挑战范围:repo
    • owner:仓库所有者(字符串,必填)
    • repo:仓库名称(字符串,必填)
  • unstar_repository - 取消仓库星标

    • OAuth 挑战范围:repo
    • owner:仓库所有者(字符串,必填)
    • repo:仓库名称(字符串,必填)
people 用户 - **search_users** - 搜索用户 - **OAuth 挑战范围**:`repo` - `order`:排序方式(字符串,可选) - `page`:分页页码(最小 1)(数字,可选) - `perPage`:每页结果数(最小 1,最大 100)(数字,可选) - `query`:用户搜索查询。示例:'john smith'、'location:seattle'、'followers:>100'。搜索会自动限定为 type:user。(字符串,必填) - `sort`:按关注者数量、仓库数量或加入 GitHub 的时间对用户进行排序。(字符串,可选)

远程 GitHub MCP 服务器中的其他工具

Copilot
  • create_pull_request_with_copilot - 使用 GitHub Copilot 编码代理执行任务
    • owner:仓库所有者。您可以猜测所有者,但在继续之前请与用户确认。(字符串,必填)
    • repo:仓库名称。您可以猜测仓库名称,但在继续之前请与用户确认。(字符串,必填)
    • problem_statement:要执行的任务的详细描述(例如,“实现一个执行 X 的功能”、“修复错误 Y”等)(字符串,必填)
    • title:将要创建的拉取请求的标题(字符串,必填)
    • base_ref:代理开始工作的 Git 引用(例如,分支)。如果未指定,则默认为仓库的默认分支(字符串,可选)
Copilot Spaces
  • 身份验证说明

    • 细粒度 PAT 不会被经典 PAT 范围过滤隐藏,因此即使令牌无法使用这些工具,它们仍可能显示。
    • 对于组织拥有的 spaces,细粒度 PAT 必须安装在所属组织上,并包含 organization_copilot_spaces: read。
    • 如果组织拥有的 space 包含基于仓库的资源,则令牌还必须有权访问每个引用的仓库,否则该 space 可能被视为未找到。
  • get_copilot_space - 获取 Copilot Space

    • owner:space 的所有者。(字符串,必填)
    • name:space 的名称。(字符串,必填)
  • 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:get
  • pull_request_read:get
  • pull_request_read:get_diff
  • pull_request_read:get_files
  • pull_request_read:get_commits

以下工具将过滤掉缺乏推送权限的用户的内容:

  • issue_read:get_comments
  • issue_read:get_sub_issues
  • pull_request_read:get_comments
  • pull_request_read:get_review_comments
  • pull_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_NAMEGITHUB_MCP_SERVER_NAMEgithub-mcp-server
SERVER_TITLEGITHUB_MCP_SERVER_TITLEGitHub MCP Server

例如,要为 GitHub Enterprise Server 配置服务器实例:

{
  "SERVER_NAME": "ghes-mcp-server",
  "SERVER_TITLE": "GHES MCP Server"
}

或者使用环境变量:

export GITHUB_MCP_SERVER_NAME="ghes-mcp-server"
export GITHUB_MCP_SERVER_TITLE="GHES MCP Server"

库使用

此模块导出的 Go API 目前应被视为不稳定的,并可能发生破坏性更改。将来,我们可能会提供稳定性;如果有此需求有价值的用例,请提交问题。

贡献

欢迎贡献。在打开拉取请求之前,请阅读贡献指南以了解设置、测试、代码检查和文档生成的说明。

支持

有关使用 GitHub MCP 服务器的帮助,请参阅支持指南。如果您发现错误或想要请求功能,请在打开新问题之前搜索现有问题。

安全

请不要通过公开问题报告安全漏洞。请遵循安全政策中的说明负责任地报告漏洞。

许可证

本项目根据 MIT 开源许可证的条款进行许可。请参阅 MIT 了解完整条款。