GitHub AI 连接服务器

GitHub MCP Server 是一个连接AI工具与GitHub平台的服务器,支持自然语言交互,用于代码管理、问题跟踪、工作流自动化等开发任务。

  • by elmerwilfredomamaniflores6-dev
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 elmerwilfredomamaniflores6-dev/github-mcp-server

使用说明

GitHub MCP服务器

GitHub MCP服务器将AI工具直接连接到GitHub平台。这使AI代理、助手和聊天机器人能够读取存储库和代码文件,管理问题和PR,分析代码,并自动化工作流程。通过自然语言的互动。

用例

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

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


远程GitHub MCP服务器

远程GitHub MCP服务器由GitHub托管,提供了最简单的启动和运行方法。如果您的MCP主机不支持远程MCP服务器,请不要担心!您可以使用 GitHub MCP服务器的本地版本 相反。

先决条件

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

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

注: 每个MCP主机应用程序都需要配置一个GitHub应用程序或OAuth应用程序,以支持通过OAuth进行远程访问。任何支持远程MCP服务器的主机应用程序都应该支持具有PAT身份验证的远程GitHub服务器。配置细节和支持级别因主机而异。请确保参考主机应用程序的文档以获取更多信息。

配置

工具集配置

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

当没有指定工具集时, 默认工具集 使用。

GitHub 企业版

GitHub企业云与数据驻留(ghe.com)

GitHub Enterprise Cloud也可以使用远程服务器。

示例 https://octocorp.ghe.com 使用GitHub PAT令牌:

{
    ...
    "proxima-github": {
      "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代码进行身份验证

GitHub企业服务器

GitHub Enterprise Server不支持远程服务器托管。请参考 GitHub企业服务器和企业云与数据驻留(ghe.com) 从本地服务器配置。


本地GitHub MCP服务器

先决条件

  1. 要在容器中运行服务器,您需要 码头工人 安装。
  2. 安装Docker后,您还需要确保Docker正在运行。形象是公开的;如果你在pull时出错,你可能有一个过期的令牌,需要 docker logout ghcr.io.
  3. 最后,你需要 创建GitHub个人访问令牌. MCP服务器可以使用许多GitHub API,因此请启用您认为授予AI工具的权限(要了解有关访问令牌的更多信息,请查看 文档).
Handling PATs Securely

环境变量(推荐)

为了确保您的GitHub PAT在不同MCP主机上的安全性和可重用性:

  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 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企业服务器和企业云与数据驻留(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://<your GHES or ghe.com domain name>"
    }
}

安装

在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主机应用程序,请参阅我们的安装指南:

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

注: 任何支持本地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>"
        }
      }
    }
  }
}

工具配置

GitHub MCP Server支持通过以下方式启用或禁用特定功能组 --toolsets 旗帜。这允许您控制哪些GitHub API功能可用于您的人工智能工具。仅启用所需的工具集可以帮助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.

  4. 与动态工具集结合 (添加剂):

    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,experiments" \
  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 可以提供以启用所有可用的工具集,而不管任何其他配置如何:

./github-mcp-server --toolsets all

或者使用环境变量:

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

“默认”工具集

默认工具集 default 如果没有指定工具集,则是传递给服务器的配置。

默认配置为:

  • 上下文
  • 回购协议
  • 问题
  • pull_requests
  • 用户

要保留默认配置并添加其他工具集,请执行以下操作:

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

可用工具集

以下工具可用:

工具集 说明
context 强烈推荐:提供当前用户上下文和您正在操作的GitHub上下文的工具
actions GitHub操作工作流和CI/CD操作
code_security 代码安全相关工具,如GitHub代码扫描
dependabot Dependabot工具
discussions GitHub讨论相关工具
experiments 尚不稳定的实验特征
gists GitHub Gist相关工具
git 用于低级Git操作的GitHub Git API相关工具
issues GitHub问题相关工具
labels GitHub标签相关工具
notifications GitHub通知相关工具
orgs GitHub组织相关工具
projects GitHub项目相关工具
pull_requests GitHub Pull Request相关工具
repos GitHub仓库相关工具
secret_protection 与秘密保护相关的工具,如GitHub秘密扫描
security_advisories 安全咨询相关工具
stargazers GitHub Stargazers相关工具
users GitHub用户相关工具

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

工具集 说明
copilot 副驾驶相关工具(例如副驾驶编码代理)
copilot_spaces 副驾驶空间相关工具
github_support_docs_search 搜索文档以回答GitHub产品和支持问题

工具

Actions
  • cancel_workflow_run -取消工作流运行(范围: repo)

    • owner:存储库所有者(字符串,必填)
    • repo:存储库名称(字符串,必填)
    • run_id:工作流运行的唯一标识符(数字,必填)
  • delete_workflow_run_logs -删除工作流日志(范围: repo)

    • owner:存储库所有者(字符串,必填)
    • repo:存储库名称(字符串,必填)
    • run_id:工作流运行的唯一标识符(数字,必填)
  • download_workflow_run_artifact -下载工作流工件(范围: repo)

    • artifact_id:工件的唯一标识符(编号,必填)
    • owner:存储库所有者(字符串,必填)
    • repo:存储库名称(字符串,必填)
  • get_job_logs -获取作业日志(范围: repo)

    • failed_only:如果为true,则获取run_id中所有失败作业的日志(布尔值,可选)
    • job_id:工作流作业的唯一标识符(单个作业日志需要)(编号,可选)
    • owner:存储库所有者(字符串,必填)
    • repo:存储库名称(字符串,必填)
    • return_content:返回实际日志内容而不是URL(布尔值,可选)
    • run_id:工作流运行ID(仅使用failed_only时需要)(数字,可选)
    • tail_lines:从日志末尾返回的行数(数字,可选)
  • get_workflow_run -运行工作流(范围: repo)

    • owner:存储库所有者(字符串,必填)
    • repo:存储库名称(字符串,必填)
    • run_id:工作流运行的唯一标识符(数字,必填)
  • get_workflow_run_logs -获取工作流运行日志(范围: repo)

    • owner:存储库所有者(字符串,必填)
    • repo:存储库名称(字符串,必填)
    • run_id:工作流运行的唯一标识符(数字,必填)
  • get_workflow_run_usage -获取工作流使用情况(范围: repo)

    • owner:存储库所有者(字符串,必填)
    • repo:存储库名称(字符串,必填)
    • run_id:工作流运行的唯一标识符(数字,必填)
  • list_workflow_jobs -列出工作流作业(范围: repo)

    • filter:按作业的completed_at时间戳筛选作业(字符串,可选)
    • owner:存储库所有者(字符串,必填)
    • page:分页页码(最少1页)(数字,可选)
    • perPage:分页每页结果(最少1个,最多100个)(数量,可选)
    • repo:存储库名称(字符串,必填)
    • run_id:工作流运行的唯一标识符(数字,必填)
  • list_workflow_run_artifacts -列出工作流工件(范围: repo)

    • owner:存储库所有者(字符串,必填)
    • page:分页页码(最少1页)(数字,可选)
    • perPage:分页每页结果(最少1个,最多100个)(数量,可选)
    • repo:存储库名称(字符串,必填)
    • run_id:工作流运行的唯一标识符(数字,必填)
  • list_workflow_run -列出工作流运行(范围: repo)

    • actor:返回某人的工作流运行。使用创建工作流运行的用户的登录名。(字符串,可选)
    • branch:返回与分支关联的工作流运行。使用分支的名称。(字符串,可选)
    • event:返回特定事件类型的工作流运行(字符串,可选)
    • owner:存储库所有者(字符串,必填)
    • page:分页页码(最少1页)(数字,可选)
    • perPage:分页每页结果(最少1个,最多100个)(数量,可选)
    • repo:存储库名称(字符串,必填)
    • status:返回带有检查运行状态的工作流运行(字符串,可选)
    • workflow_id:工作流ID或工作流文件名(字符串,必填)
  • list_workflows -列出工作流(范围: repo)

    • owner:存储库所有者(字符串,必填)
    • page:分页页码(最少1页)(数字,可选)
    • perPage:分页每页结果(最少1个,最多100个)(数量,可选)
    • repo:存储库名称(字符串,必填)
  • 重新运行失败的作业 -重新运行失败的作业(范围: repo)

    • owner:存储库所有者(字符串,必填)
    • repo:存储库名称(字符串,必填)
    • run_id:工作流运行的唯一标识符(数字,必填)
  • 重新运行工作流运行 -重新运行工作流运行(范围: repo)

    • owner:存储库所有者(字符串,必填)
    • repo:存储库名称(字符串,必填)
    • run_id:工作流运行的唯一标识符(数字,必填)
  • 运行工作流 -运行工作流(范围: repo)

    • inputs:工作流接受的输入(对象,可选)
    • owner:存储库所有者(字符串,必填)
    • ref:工作流的git参考。引用可以是分支或标记名称。(字符串,必填)
    • repo:存储库名称(字符串,必填)
    • workflow_id:工作流ID(数字)或工作流文件名(例如main.yml、ci.yaml)(字符串,必填)
Code Security
  • get_code_scanning_alert -获取代码扫描警报(范围: security_events)

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

    • owner:存储库的所有者。(字符串,必填)
    • ref:要列出的结果的Git引用。(字符串,可选)
    • repo:存储库的名称。(字符串,必填)
    • severity:按严重性筛选代码扫描警报(字符串,可选)
    • state:按州筛选代码扫描警报。默认打开(字符串,可选)
    • tool_name:用于代码扫描的工具的名称。(字符串,可选)
Context
  • get_me -获取我的用户资料

    • 无需参数
  • get_team_members -获取团队成员(范围: read:org)

    • org:包含团队的组织登录名(所有者)。(字符串,必填)
    • team_slug:团队蛞蝓(字符串,必填)
  • get_teams -组建团队(范围: read:org)

    • user:用于获取团队的用户名。如果没有提供,则使用经过身份验证的用户。(字符串,可选)
Dependabot
  • get_dependabot_alert -获取可靠性警报(范围: security_events)

    • alertNumber:警报的编号。(数字,必填)
    • owner:存储库的所有者。(字符串,必填)
    • repo:存储库的名称。(字符串,必填)
  • list_dependabot_alerts -列出可靠性警报(范围: security_events)

    • owner:存储库的所有者。(字符串,必填)
    • repo:存储库的名称。(字符串,必填)
    • severity:按严重性过滤可靠性警报(字符串,可选)
    • state:按州过滤可靠性警报。默认打开(字符串,可选)
Discussions
  • get_discussion -获取讨论(范围: repo)

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

    • after:分页光标。使用上一页PageInfo中的endCursor用于GraphQL API。(字符串,可选)
    • discussionNumber:讨论编号(数字,必填)
    • owner:存储库所有者(字符串,必填)
    • perPage:分页每页结果(最少1个,最多100个)(数量,可选)
    • repo:存储库名称(字符串,必填)
  • 列表_讨论_类别 -列出讨论类别(范围: repo)

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

    • after:分页光标。使用上一页PageInfo中的endCursor用于GraphQL API。(字符串,可选)
    • category:可选的按讨论类别ID筛选。如果提供,则仅列出具有此类别的讨论。(字符串,可选)
    • direction:订单方向。(字符串,可选)
    • orderBy:按字段排序讨论。如果提供,还需要提供“方向”。(字符串,可选)
    • owner:存储库所有者(字符串,必填)
    • perPage:分页每页结果(最少1个,最多100个)(数量,可选)
    • repo:存储库名称。如果没有提供,将在组织层面进行讨论。(字符串,可选)
Gists
  • 创建列表 -创建Gist(范围: gist)

    • content:用于创建简单单文件要点的内容(字符串,必填)
    • description:要点描述(字符串,可选)
    • filename:用于创建简单单文件要点的文件名(字符串,必填)
    • public:要点是否公开(布尔值,可选)
  • 获取列表 -获取Gist内容

    • gist_id:要点的ID(字符串,必填)
  • 列表列表 -列出Gists

    • page:分页页码(最少1页)(数字,可选)
    • perPage:分页每页结果(最少1个,最多100个)(数量,可选)
    • since:仅在此时间之后更新注册表(ISO 8601时间戳)(字符串,可选)
    • username:GitHub用户名(对于经过身份验证的用户的注册表省略)(字符串,可选)
  • update_gist -更新Gist(范围: gist)

    • content:文件内容(字符串,必填)
    • description:更新了要点描述(字符串,可选)
    • filename:要更新或创建的文件名(字符串,必填)
    • gist_id:要更新的要点的ID(字符串,必填)
Git
  • get_pository_tree -获取存储库树(范围: repo)
    • owner:存储库所有者(用户名或组织)(字符串,必填)
    • path_filter:用于过滤树结果的可选路径前缀(例如,“src/”仅显示src目录中的文件)(string,可选)
    • recursive:将此参数设置为true将返回树引用的对象或子树。默认值为false(布尔值,可选)
    • repo:存储库名称(字符串,必填)
    • tree_sha:树的SHA1值或ref(分支或标记)名称。默认为存储库的默认分支(字符串,可选)
Issues
  • add_issue_comment -向问题添加评论(范围: repo)

    • body:评论内容(字符串,必填)
    • issue_number:要评论的问题编号(编号,必填)
    • owner:存储库所有者(字符串,必填)
    • repo:存储库名称(字符串,必填)
  • assign_copilot_to_oissue -分配副本以发布(范围: repo)

    • issueNumber:问题编号(编号,必填)
    • owner:存储库所有者(字符串,必填)
    • repo:存储库名称(字符串,必填)
  • get_label -从存储库中获取特定标签。(范围: repo)

    • name:标签名称。(字符串,必填)
    • owner:存储库所有者(用户名或组织名称)(字符串,必填)
    • repo:存储库名称(字符串,必填)
  • issue_read -获取问题详细信息(范围: repo)

    • issue_number:问题编号(数字,必填)
    • method:对单个问题执行的读取操作。 选项包括:
      1. get-获取特定问题的详细信息。
      2. get_comments-获取问题注释。
      3. get_sub_issues-获取问题的子问题。
      4. get_labels-获取分配给问题的标签。 (字符串,必填)
    • owner:存储库的所有者(字符串,必填)
    • page:分页页码(最少1页)(数字,可选)
    • perPage:分页每页结果(最少1个,最多100个)(数量,可选)
    • repo:存储库的名称(字符串,必填)
  • issue_write -创建或更新问题。(范围: repo)

    • assignees:要分配给此问题的用户名(string[],可选)
    • body:发布正文内容(字符串,可选)
    • duplicate_of:此问题重复的问题编号。仅在state_reason为“重复”时使用。(数字,可选)
    • issue_number:要更新的问题编号(编号,可选)
    • labels:应用于此问题的标签(string[],可选)
    • method:对单个问题执行写入操作。 选项包括:
      • “创建”-创建新问题。
      • 'update'-更新现有问题。 (字符串,必填)
    • milestone:里程碑编号(编号,可选)
    • owner:存储库所有者(字符串,必填)
    • repo:存储库名称(字符串,必填)
    • state:新状态(字符串,可选)
    • state_reason:状态更改的原因。除非状态改变,否则忽略。(字符串,可选)
    • title:问题标题(字符串,可选)
    • type:此问题的类型。仅在存储库配置了问题类型时使用。使用list_issue_types工具获取组织的有效类型值。如果存储库不支持问题类型,请省略此参数。(字符串,可选)
  • list_issue_types -列出可用的问题类型(范围: read:org)

    • owner:存储库的组织所有者(字符串,必填)
  • list_issues -列出问题(范围: repo)

    • after:分页光标。使用上一页PageInfo中的endCursor用于GraphQL API。(字符串,可选)
    • direction:订单方向。如果提供,还需要提供“orderBy”。(字符串,可选)
    • labels:按标签筛选(string[],可选)
    • orderBy:按字段排序问题。如果提供,还需要提供“方向”。(字符串,可选)
    • owner:存储库所有者(字符串,必填)
    • perPage:分页每页结果(最少1个,最多100个)(数量,可选)
    • repo:存储库名称(字符串,必填)
    • since:按日期筛选(ISO 8601时间戳)(字符串,可选)
    • state:按状态筛选,默认情况下,未提供时将返回打开和关闭的问题(字符串,可选)
  • 搜索问题 -搜索问题(范围: repo)

    • order:排序顺序(字符串,可选)
    • owner:可选存储库所有者。如果提供了repo,则只列出此存储库的问题。(字符串,可选)
    • page:分页页码(最少1页)(数字,可选)
    • perPage:分页每页结果(最少1个,最多100个)(数量,可选)
    • query:使用GitHub的搜索查询问题搜索语法(字符串,必填)
    • repo:可选存储库名称。如果与所有者一起提供,则只列出此存储库的问题。(字符串,可选)
    • sort:按类别匹配数对字段进行排序,默认为最佳匹配(字符串,可选)
  • 子问题写入 -更改子问题(范围: repo)

    • after_id:要优先处理的子问题的ID(应指定after_ID或before_ID)(数字,可选)
    • before_id:要优先处理的子问题的ID(应指定after_ID或before_ID)(数字,可选)
    • issue_number:父问题的编号(编号,必填)
    • method:对单个子问题执行的操作 选项包括:
      • “add”-将子问题添加到GitHub存储库中的父问题中。
      • “remove”-从GitHub存储库中的父问题中删除子问题。
      • “重新确定优先级”-更改GitHub存储库中父问题内子问题的顺序。使用“after_id”或“before_id”指定新位置。 (字符串,必填)
    • owner:存储库所有者(字符串,必填)
    • replace_parent:如果为true,则替换子问题的当前父问题。仅与“add”方法一起使用。(布尔值,可选)
    • repo:存储库名称(字符串,必填)
    • sub_issue_id:要添加的子问题的ID。ID与问题编号不同(编号,必填)
Labels
  • get_label -从存储库中获取特定标签。(范围: repo)

    • name:标签名称。(字符串,必填)
    • owner:存储库所有者(用户名或组织名称)(字符串,必填)
    • repo:存储库名称(字符串,必填)
  • label_write -在存储库标签上写入操作。(范围: repo)

    • color:将颜色标记为6个字符的十六进制代码,不带“#”前缀(例如“f29513”)。“create”是必需的,“update”是可选的。(字符串,可选)
    • description:标签描述文本。可选“创建”和“更新”。(字符串,可选)
    • method:要执行的操作:“创建”、“更新”或“删除”(字符串,必填)
    • name:标签名称-所有操作都需要(字符串,必填)
    • new_name:标签的新名称(仅与“update”方法一起使用以重命名)(字符串,可选)
    • owner:存储库所有者(用户名或组织名称)(字符串,必填)
    • repo:存储库名称(字符串,必填)
  • list_label -列出存储库中的标签(范围: repo)

    • owner:存储库所有者(用户名或组织名称)-所有操作都需要(字符串,必填)
    • repo:存储库名称-所有操作都需要(字符串,必填)
Notifications
  • 解雇通知 -取消通知(范围: notifications)

    • state:通知的新状态(已读/已完成)(字符串,必填)
    • threadID:通知线程的ID(字符串,必填)
  • 获取通知_详细信息 -获取通知详细信息(范围: notifications)

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

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

    • action:要执行的操作:忽略、监视或删除通知订阅。(字符串,必填)
    • notificationID:通知线程的ID。(字符串,必填)
  • 管理_职位_通知_订阅 -管理存储库通知订阅(范围: notifications)

    • action:要执行的操作:忽略、监视或删除存储库通知订阅。(字符串,必填)
    • owner:存储库的帐户所有者。(字符串,必填)
    • repo:存储库的名称。(字符串,必填)
  • mark_all_通知_阅读 -将所有通知标记为已读(范围: notifications)

    • lastReadAt:描述检查通知的最后一点(可选)。默认值:Now(字符串,可选)
    • owner:可选存储库所有者。如果提供了repo,则只有此存储库的通知被标记为已读。(字符串,可选)
    • repo:可选存储库名称。如果与所有者一起提供,则只有此存储库的通知标记为已读。(字符串,可选)
Organizations
  • search_orgs -搜索组织(范围: repo)
    • order:排序顺序(字符串,可选)
    • page:分页页码(最少1页)(数字,可选)
    • perPage:分页每页结果(最少1个,最多100个)(数量,可选)
    • query:组织搜索查询。示例:“microsoft”、“location:california”、“created:>=2025-01-01”。搜索范围会自动限定为类型:org。(字符串,必填)
    • sort:按类别对字段进行排序(字符串,可选)
Projects
  • add_project_item -添加项目项(范围: project)

    • item_id:要添加到项目中的问题或拉取请求的数字ID。(数字,必填)
    • item_type:项目的类型,issue或pull_request。(字符串,必填)
    • owner:如果owner_type==user,则是GitHub用户帐户的句柄。如果owner_type==org,则是组织的名称。名称不区分大小写。(字符串,必填)
    • owner_type:所有者类型(字符串,必填)
    • project_number:项目编号。(数字,必填)
  • 删除项目 -删除项目项(范围: project)

    • item_id:要从项目中删除的内部项目项ID(不是问题或拉取请求ID)。(数字,必填)
    • owner:如果owner_type==user,则是GitHub用户帐户的句柄。如果owner_type==org,则是组织的名称。名称不区分大小写。(字符串,必填)
    • owner_type:所有者类型(字符串,必填)
    • project_number:项目编号。(数字,必填)
  • get_工程 -获取项目(范围: read:project)

    • owner:如果owner_type==user,则是GitHub用户帐户的句柄。如果owner_type==org,则是组织的名称。名称不区分大小写。(字符串,必填)
    • owner_type:所有者类型(字符串,必填)
    • project_number:项目编号(数字,必填)
  • get_project_field -获取项目字段(范围: read:project)

    • field_id:字段的id。(数字,必填)
    • owner:如果owner_type==user,则是GitHub用户帐户的句柄。如果owner_type==org,则是组织的名称。名称不区分大小写。(字符串,必填)
    • owner_type:所有者类型(字符串,必填)
    • project_number:项目编号。(数字,必填)
  • 获取项目 -获取项目项(范围: read:project)

    • fields:响应中包含的字段ID的具体列表(例如[“102589”、“985201”、“169875”])。如果未提供,则仅包括标题字段。(string[],可选)
    • item_id:项目的ID。(数字,必填)
    • owner:如果owner_type==user,则是GitHub用户帐户的句柄。如果owner_type==org,则是组织的名称。名称不区分大小写。(字符串,必填)
    • owner_type:所有者类型(字符串,必填)
    • project_number:项目编号。(数字,必填)
  • list_project_fields -列出项目字段(范围: read:project)

    • after:将分页光标从上一页转到Info.nextCursor。(字符串,可选)
    • before:从上一页向后分页光标Info.prevCursor(罕见)。(字符串,可选)
    • owner:如果owner_type==user,则是GitHub用户帐户的句柄。如果owner_type==org,则是组织的名称。名称不区分大小写。(字符串,必填)
    • owner_type:所有者类型(字符串,必填)
    • per_page:每页结果(最多50个)(数量,可选)
    • project_number:项目编号。(数字,必填)
  • list_project_items -列出项目项(范围: read:project)

    • after:将分页光标从上一页转到Info.nextCursor。(字符串,可选)
    • before:从上一页向后分页光标Info.prevCursor(罕见)。(字符串,可选)
    • fields:要包含的字段ID(例如[“102589”、“985201”])。关键:始终提供以获取字段值。如果没有这个,只有头衔会回来。(string[],可选)
    • owner:如果owner_type==user,则是GitHub用户帐户的句柄。如果owner_type==org,则是组织的名称。名称不区分大小写。(字符串,必填)
    • owner_type:所有者类型(字符串,必填)
    • per_page:每页结果(最多50个)(数量,可选)
    • project_number:项目编号。(数字,必填)
    • query:使用GitHub的项目过滤语法对项目项进行高级过滤的查询字符串。(字符串,可选)
  • list_项目 -列出项目(范围: read:project)

    • after:将分页光标从上一页转到Info.nextCursor。(字符串,可选)
    • before:从上一页向后分页光标Info.prevCursor(罕见)。(字符串,可选)
    • owner:如果owner_type==user,则是GitHub用户帐户的句柄。如果owner_type==org,则是组织的名称。名称不区分大小写。(字符串,必填)
    • owner_type:所有者类型(字符串,必填)
    • per_page:每页结果(最多50个)(数量,可选)
    • query:按标题文本和打开/关闭状态过滤项目;允许的限定符:is:open,is:closed;示例:“路线图是:开放”,“是:开放特征规划”。(字符串,可选)
  • update_project_item -更新项目项(范围: project)

    • item_id:项目项的唯一标识符。这不是问题或拉取请求ID。(数字,必填)
    • owner:如果owner_type==user,则是GitHub用户帐户的句柄。如果owner_type==org,则是组织的名称。名称不区分大小写。(字符串,必填)
    • owner_type:所有者类型(字符串,必填)
    • project_number:项目编号。(数字,必填)
    • updated_field:对象,由要更新的项目字段的ID和字段的新值组成。要清除该字段,请将值设置为null。示例:{“id”:123456,“value”:“New value”}(对象,必填)
Pull Requests
  • add_comment_to_pending_view -在请求者的最新待处理拉取请求审核中添加审核评论(范围: repo)

    • body:审查意见的文本(字符串,必填)
    • line:注释应用于的拉取请求差异中blob的行。对于多行注释,范围的最后一行(数字,可选)
    • owner:存储库所有者(字符串,必填)
    • path:需要注释的文件的相对路径(字符串,必填)
    • pullNumber:拉取请求号(number,必填)
    • repo:存储库名称(字符串,必填)
    • side:要注释的diff侧。LEFT表示以前的状态,RIGHT表示新的状态(字符串,可选)
    • startLine:对于多行注释,注释适用范围的第一行(数字,可选)
    • startSide:对于多行注释,注释所应用的diff的起始侧。LEFT表示之前的状态,RIGHT表示新的状态(字符串,可选)
    • subjectType:评论的目标级别(字符串,必填)
  • create_pull_request -打开新的拉取请求(范围: repo)

    • base:要合并的分支(字符串,必填)
    • body:PR描述(字符串,可选)
    • draft:创建为PR草稿(布尔值,可选)
    • head:包含更改的分支(字符串,必填)
    • maintainer_can_modify:允许维护者编辑(布尔值,可选)
    • owner:存储库所有者(字符串,必填)
    • repo:存储库名称(字符串,必填)
    • title:PR标题(字符串,必填)
  • list_pull_requests -列出拉取请求(范围: repo)

    • base:按基分支筛选(字符串,可选)
    • direction:排序方向(字符串,可选)
    • head:按主用户/组织和分支机构过滤(字符串,可选)
    • owner:存储库所有者(字符串,必填)
    • page:分页页码(最少1页)(数字,可选)
    • perPage:分页每页结果(最少1个,最多100个)(数量,可选)
    • repo:存储库名称(字符串,必填)
    • sort:排序方式(字符串,可选)
    • state:按状态筛选(字符串,可选)
  • 合并请求 -合并拉取请求(范围: repo)

    • commit_message:合并提交的额外细节(字符串,可选)
    • commit_title:合并提交的标题(字符串,可选)
    • merge_method:合并方法(字符串,可选)
    • owner:存储库所有者(字符串,必填)
    • pullNumber:拉取请求号(number,必填)
    • repo:存储库名称(字符串,必填)
  • pull_request_read -获取单个拉取请求的详细信息(范围: repo)

    • method:指定需要从GitHub检索哪些拉取请求数据的操作。 可能的选项:
      1. get-获取特定拉取请求的详细信息。
      2. get_diff-获取拉取请求的差异。
      3. get_status-获取pull请求中head提交的状态。这反映了构建和检查的状态。
      4. get_files-获取拉取请求中更改的文件列表。与分页参数一起使用,以控制返回的结果数量。
      5. get_view_comments-获取拉取请求的评论。它们是在拉取请求审查期间对统一差异的一部分所做的评论。与分页参数一起使用,以控制返回的结果数量。
      6. get_reviews-获取拉取请求的评论。当被要求提供评论时,使用get_view_comments方法。
      7. get_comments-获取pull请求的注释。如果用户不特别想要评论,请使用此选项。与分页参数一起使用,以控制返回的结果数量。 (字符串,必填)
    • owner:存储库所有者(字符串,必填)
    • page:分页页码(最少1页)(数字,可选)
    • perPage:分页每页结果(最少1个,最多100个)(数量,可选)
    • pullNumber:拉取请求号(number,必填)
    • repo:存储库名称(字符串,必填)
  • pull_request_review_write -对pull请求评论进行写操作(创建、提交、删除)。(范围: repo)

    • body:查看评论文本(字符串,可选)
    • commitID:提交审查的SHA(字符串,可选)
    • event:查看要执行的操作。(字符串,可选)
    • method:对拉取请求审核执行的写入操作。(字符串,必填)
    • owner:存储库所有者(字符串,必填)
    • pullNumber:拉取请求号(number,必填)
    • repo:存储库名称(字符串,必填)
  • request_copilot_review -请求副驾驶审查(范围: repo)

    • owner:存储库所有者(字符串,必填)
    • pullNumber:拉取请求号(number,必填)
    • repo:存储库名称(字符串,必填)
  • search_pull_requests -搜索拉取请求(范围: repo)

    • order:排序顺序(字符串,可选)
    • owner:可选存储库所有者。如果提供了repo,则只列出此存储库的pull请求。(字符串,可选)
    • page:分页页码(最少1页)(数字,可选)
    • perPage:分页每页结果(最少1个,最多100个)(数量,可选)
    • query:使用GitHub pull请求搜索语法搜索查询(字符串,必填)
    • repo:可选存储库名称。如果提供了所有者,则只列出此存储库的拉取请求。(字符串,可选)
    • sort:按类别匹配数对字段进行排序,默认为最佳匹配(字符串,可选)
  • update_pull_request -编辑拉取请求(范围: repo)

    • base:新的基础分支名称(字符串,可选)
    • body:新描述(字符串,可选)
    • draft:将pull请求标记为草稿(true)或准备审核(false)(布尔值,可选)
    • maintainer_can_modify:允许维护者编辑(布尔值,可选)
    • owner:存储库所有者(字符串,必填)
    • pullNumber:拉取请求编号进行更新(编号,必填)
    • repo:存储库名称(字符串,必填)
    • reviewers:请求评论的GitHub用户名(string[],可选)
    • state:新状态(字符串,可选)
    • title:新标题(字符串,可选)
  • update_pull_request_branch -更新拉取请求分支(作用域: repo)

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

    • branch:新分支的名称(字符串,必填)
    • from_branch:源分支(默认为repo-default)(字符串,可选)
    • owner:存储库所有者(字符串,必填)
    • repo:存储库名称(字符串,必填)
  • create_or_update_file -创建或更新文件(作用域: repo)

    • branch:创建/更新文件的分支(字符串,必填)
    • content:文件内容(字符串,必填)
    • message:提交消息(字符串,必填)
    • owner:存储库所有者(用户名或组织)(字符串,必填)
    • path:创建/更新文件的路径(字符串,必填)
    • repo:存储库名称(字符串,必填)
    • sha:如果更新现有文件,则为必填项。被替换文件的blob SHA。(字符串,可选)
  • 创建存储库 -创建存储库(范围: repo)

    • autoInit:使用README进行初始化(布尔值,可选)
    • description:存储库描述(字符串,可选)
    • name:存储库名称(字符串,必填)
    • organization:要在其中创建存储库的组织(省略在您的个人帐户中创建)(字符串,可选)
    • private:repo是否应该是私有的(布尔值,可选)
  • 删除文件 -删除文件(作用域: repo)

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

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

    • include_diff:是否在响应中包含文件差异和统计信息。默认值为true。(布尔值,可选)
    • owner:存储库所有者(字符串,必填)
    • page:分页页码(最少1页)(数字,可选)
    • perPage:分页每页结果(最少1个,最多100个)(数量,可选)
    • repo:存储库名称(字符串,必填)
    • sha:提交SHA、分支名称或标记名称(字符串,必填)
  • 获取_文件_内容 -获取文件或目录内容(作用域: repo)

    • owner:存储库所有者(用户名或组织)(字符串,必填)
    • path:文件/目录的路径(目录必须以斜线“/”结尾)(字符串,可选)
    • ref:接受可选的git引用,例如 refs/tags/{tag}, refs/heads/{branch} 或 refs/pull/{pr_number}/head (字符串,可选)
    • repo:存储库名称(字符串,必填)
    • sha:接受可选的提交SHA。如果指定,将使用它来代替ref(string,可选)
  • get_latest_release -获取最新版本(范围: repo)

    • owner:存储库所有者(字符串,必填)
    • repo:存储库名称(字符串,必填)
  • get_release_by_tag -按标签名称获取发布(范围: repo)

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

    • owner:存储库所有者(字符串,必填)
    • repo:存储库名称(字符串,必填)
    • tag:标签名称(字符串,必填)
  • list_brances -列出分支(范围: repo)

    • owner:存储库所有者(字符串,必填)
    • page:分页页码(最少1页)(数字,可选)
    • perPage:分页每页结果(最少1个,最多100个)(数量,可选)
    • repo:存储库名称(字符串,必填)
  • list_commits -列表提交(范围: repo)

    • author:用于过滤提交的作者用户名或电子邮件地址(字符串,可选)
    • owner:存储库所有者(字符串,必填)
    • page:分页页码(最少1页)(数字,可选)
    • perPage:分页每页结果(最少1个,最多100个)(数量,可选)
    • repo:存储库名称(字符串,必填)
    • sha:提交SHA、分支或标签名称以列出提交。如果没有提供,则使用存储库的默认分支。如果提供了提交SHA,将列出该SHA之前的提交。(字符串,可选)
  • list_releases -列表发布(范围: repo)

    • owner:存储库所有者(字符串,必填)
    • page:分页页码(最少1页)(数字,可选)
    • perPage:分页每页结果(最少1个,最多100个)(数量,可选)
    • repo:存储库名称(字符串,必填)
  • list_tags -列表标签(范围: repo)

    • owner:存储库所有者(字符串,必填)
    • page:分页页码(最少1页)(数字,可选)
    • perPage:分页每页结果(最少1个,最多100个)(数量,可选)
    • repo:存储库名称(字符串,必填)
  • 推送文件 -将文件推送到存储库(范围: repo)

    • branch:要推送的分支(字符串,必填)
    • files:要推送的文件对象数组,每个对象都有路径(字符串)和内容(字符串)(object[],必填)
    • message:提交消息(字符串,必填)
    • owner:存储库所有者(字符串,必填)
    • repo:存储库名称(字符串,必填)
  • 搜索代码 -搜索代码(范围: repo)

    • order:结果的排序顺序(字符串,可选)
    • page:分页页码(最少1页)(数字,可选)
    • perPage:分页每页结果(最少1个,最多100个)(数量,可选)
    • query:使用GitHub强大的代码搜索语法搜索查询。示例:“内容:技能语言:Java组织:github”,“不是:存档语言:Python或语言:go”,“仓库:github/github mcp服务器”。支持精确匹配、语言过滤器、路径过滤器等。(字符串,必填)
    • sort:排序字段(仅“索引”)(字符串,可选)
  • search_repositories -搜索存储库(范围: repo)

    • minimal_output:返回最小存储库信息(默认值:true)。如果为false,则返回完整的GitHub API存储库对象。(布尔值,可选)
    • order:排序顺序(字符串,可选)
    • page:分页页码(最少1页)(数字,可选)
    • perPage:分页每页结果(最少1个,最多100个)(数量,可选)
    • query:存储库搜索查询。示例:“机器学习:name-stars:>1000语言:python”,“主题:反应”,“用户:脸书”。支持高级搜索语法以进行精确筛选。(字符串,必填)
    • sort:按字段对存储库进行排序,默认为最佳匹配(字符串,可选)
Secret Protection
  • get_secret_scanning_alert -获取秘密扫描警报(范围: security_events)

    • alertNumber:警报的编号。(数字,必填)
    • owner:存储库的所有者。(字符串,必填)
    • repo:存储库的名称。(字符串,必填)
  • list_secret_scaning_alerts -列出秘密扫描警报(范围: security_events)

    • owner:存储库的所有者。(字符串,必填)
    • repo:存储库的名称。(字符串,必填)
    • resolution:按分辨率筛选(字符串,可选)
    • secret_type:以逗号分隔的要返回的秘密类型列表。返回所有默认的秘密模式。要返回泛型模式,请在参数中传递令牌名称。(字符串,可选)
    • state:按状态筛选(字符串,可选)
Security Advisories
  • 全球安全咨询 -获取全球安全咨询(范围: security_events)

    • ghsaId:GitHub安全咨询ID(格式:GHSA xxxx-xxxx-xxxx)。(字符串,必填)
  • 列表_全球安全_建议 -列出全球安全建议(范围: security_events)

    • affects:按受影响的包或版本过滤公告(例如“package1,package2@1.0.0“)。(字符串,可选)
    • cveId:按CVE ID筛选。(字符串,可选)
    • cwes:按常见弱点枚举ID筛选(例如[“79”、“284”、“22”])。(string[],可选)
    • 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 -列出组织存储库安全建议(范围: security_events)

    • direction:排序方向。(字符串,可选)
    • org:组织登录。(字符串,必填)
    • sort:排序字段。(字符串,可选)
    • state:按咨询状态筛选。(字符串,可选)
  • list_repository_security_advisories -列出存储库安全建议(范围: security_events)

    • direction:排序方向。(字符串,可选)
    • owner:存储库的所有者。(字符串,必填)
    • repo:存储库的名称。(字符串,必填)
    • sort:排序字段。(字符串,可选)
    • state:按咨询状态筛选。(字符串,可选)
Stargazers
  • list_starred_存储库 -列出带星号的存储库

    • direction:结果排序的方向。(字符串,可选)
    • page:分页页码(最少1页)(数字,可选)
    • perPage:分页每页结果(最少1个,最多100个)(数量,可选)
    • sort:如何对结果进行排序。可以是“创建”(当存储库被标记时)或“更新”(当上次推送到存储库时)。(字符串,可选)
    • username:列出星号存储库的用户名。默认为经过身份验证的用户。(字符串,可选)
  • 恒星储存 -星形存储库(范围: public_repo)

    • owner:存储库所有者(字符串,必填)
    • repo:存储库名称(字符串,必填)
  • unstar_repository -非星存储库(范围: public_repo)

    • owner:存储库所有者(字符串,必填)
    • repo:存储库名称(字符串,必填)
Users
  • 搜索用户 -搜索用户(范围: repo)
    • order:排序顺序(字符串,可选)
    • page:分页页码(最少1页)(数字,可选)
    • perPage:分页每页结果(最少1个,最多100个)(数量,可选)
    • query:用户搜索查询。示例:“约翰·史密斯”,“地点:西雅图”,“关注者:>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
  • get_copilot_space -获取副驾驶空间

    • owner:空间的所有者。(字符串,必填)
    • name:空间的名称。(字符串,必填)
  • list_copilot_spaces -列出副驾驶空间

GitHub Support Docs Search
  • github支持.docs搜索 -检索与回答GitHub产品和支持问题相关的文档。支持主题包括:GitHub操作工作流、身份验证、GitHub支持查询、拉取请求实践、存储库维护、GitHub页面、GitHub包、GitHub讨论、副本空间
    • 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:get
  • pull_request_read:get

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

  • 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

您还可以使用ENV变量来覆盖描述。环境 变量名与JSON文件中的键相同,前缀为 GITHUB_MCP_ 全部大写。

例如,要覆盖 TOOL_ADD_ISSUE_COMMENT_DESCRIPTION 工具,你可以 设置以下环境变量:

export GITHUB_MCP_TOOL_ADD_ISSUE_COMMENT_DESCRIPTION="an alternative description"

图书馆使用情况

该模块导出的Go API当前应被视为不稳定,并可能发生中断更改。未来,我们可能会提供稳定;如果存在有价值的用例,请提交一个问题。

许可证

该项目根据麻省理工学院开源许可证条款获得许可。请参考 麻省理工学院 完整的条款。