返回市场
麦肯齐GitHub MCP服务器

麦肯齐GitHub MCP服务器

作者:deniscruzrodrigues2 星标更新:2025-07-10

项目介绍

GitHub MCP 服务器

GitHub MCP 服务器是一个 模型上下文协议(MCP) 服务器,它提供了与 GitHub API 的无缝集成,使开发者和工具能够实现高级自动化和交互功能。

在 VS Code 中使用 Docker 安装 在 VS Code Insiders 中使用 Docker 安装

使用场景

  • 自动化 GitHub 工作流和流程。
  • 提取并分析 GitHub 存储库中的数据。
  • 构建与 GitHub 生态系统交互的 AI 驱动工具和应用程序。

先决条件

  1. 若要在容器中运行服务器,您需要安装 Docker
  2. 创建一个 GitHub 个人访问令牌。MCP 服务器可以使用许多 GitHub API,因此请启用您认为适合授予您的 AI 工具的权限(要了解有关访问令牌的更多信息,请参阅 文档)。

安装

在 VS Code 中使用

快速安装,请使用此 README 顶部的一键安装按钮。

手动安装,请将以下 JSON 块添加到 VS Code 的用户设置(JSON)文件中。可以通过按 Ctrl + Shift + P 并输入 Preferences: Open User Settings (JSON) 来完成此操作。

可选地,您可以将其添加到工作区中的名为 .vscode/mcp.json 的文件中。这将允许您与其他人员共享配置。

注意:.vscode/mcp.json 文件中不需要 mcp 键。

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

更多关于在 VS Code 的代理模式下使用 MCP 服务器工具的信息,请参阅 文档

在 Claude Desktop 中使用

{
  "mcpServers": {
    "github": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
      }
    }
  }
}

从源代码构建

如果您没有 Docker,可以使用 gocmd/github-mcp-server 目录中构建二进制文件,并使用 github-mcp-server stdio 命令,同时将 GITHUB_PERSONAL_ACCESS_TOKEN 环境变量设置为您自己的令牌。

GitHub 企业服务器

标志 --gh-host 和环境变量 GH_HOST 可用于设置 GitHub 企业服务器主机名。

国际化 / 覆盖描述

可以通过创建与二进制文件同目录下的 github-mcp-server-config.json 文件来覆盖工具的描述。

该文件应包含一个 JSON 对象,其中工具名称作为键,新的描述作为值。例如:

{
  "TOOL_ADD_ISSUE_COMMENT_DESCRIPTION": "另一种描述",
  "TOOL_CREATE_BRANCH_DESCRIPTION": "在 GitHub 存储库中创建新分支"
}

您可以通过运行带有 --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="另一种描述"

工具

用户

  • get_me - 获取已认证用户的详细信息
    • 不需要参数

问题

  • get_issue - 获取存储库内问题的内容

    • owner: 存储库所有者(字符串,必需)
    • repo: 存储库名称(字符串,必需)
    • issue_number: 问题编号(数字,必需)
  • get_issue_comments - 获取 GitHub 问题的评论

    • owner: 存储库所有者(字符串,必需)
    • repo: 存储库名称(字符串,必需)
    • issue_number: 问题编号(数字,必需)
  • create_issue - 在 GitHub 存储库中创建新问题

    • owner: 存储库所有者(字符串,必需)
    • repo: 存储库名称(字符串,必需)
    • title: 问题标题(字符串,必需)
    • body: 问题正文内容(字符串,可选)
    • assignees: 分配给此问题的用户名(字符串数组,可选)
    • labels: 应用于此问题的标签(字符串数组,可选)
  • add_issue_comment - 向问题添加评论

    • owner: 存储库所有者(字符串,必需)
    • repo: 存储库名称(字符串,必需)
    • issue_number: 问题编号(数字,必需)
    • body: 评论文本(字符串,必需)
  • list_issues - 列出并过滤存储库的问题

    • owner: 存储库所有者(字符串,必需)
    • repo: 存储库名称(字符串,必需)
    • state: 按状态过滤('open', 'closed', 'all')(字符串,可选)
  • labels: 按标签过滤(字符串数组,可选)

  • sort: 排序字段('created', 'updated', 'comments')(字符串,可选)

  • direction: 排序方向('asc', 'desc')(字符串,可选)

  • since: 按日期过滤(ISO 8601 时间戳)(字符串,可选)

  • page: 页码(数字,可选)

  • perPage: 每页结果数(数字,可选)

  • update_issue - 更新 GitHub 存储库中的现有问题

    • owner: 存储库所有者(字符串,必需)
    • repo: 存储库名称(字符串,必需)
    • issue_number: 要更新的问题编号(数字,必需)
    • title: 新标题(字符串,可选)
    • body: 新描述(字符串,可选)
    • state: 新状态('open' 或 'closed')(字符串,可选)
    • labels: 新标签(字符串数组,可选)
    • assignees: 新分配人(字符串数组,可选)
    • milestone: 新里程碑编号(数字,可选)
  • search_issues - 搜索问题和拉取请求

    • query: 搜索查询(字符串,必需)
    • sort: 排序字段(字符串,可选)
    • order: 排序顺序(字符串,可选)
    • page: 页码(数字,可选)
    • perPage: 每页结果数(数字,可选)

拉取请求

  • get_pull_request - 获取特定拉取请求的详细信息

    • owner: 存储库所有者(字符串,必需)
    • repo: 存储库名称(字符串,必需)
    • pullNumber: 拉取请求编号(数字,必需)
  • list_pull_requests - 列出并过滤存储库的拉取请求

    • owner: 存储库所有者(字符串,必需)
    • repo: 存储库名称(字符串,必需)
    • state: 拉取请求状态(字符串,可选)
    • sort: 排序字段(字符串,可选)
    • direction: 排序方向(字符串,可选)
    • perPage: 每页结果数(数字,可选)
    • page: 页码(数字,可选)
  • merge_pull_request - 合并拉取请求

    • owner: 存储库所有者(字符串,必需)
    • repo: 存储库名称(字符串,必需)
    • pullNumber: 拉取请求编号(数字,必需)
    • commit_title: 合并提交的标题(字符串,可选)
    • commit_message: 合并提交的消息(字符串,可选)
    • merge_method: 合并方法(字符串,可选)
  • get_pull_request_files - 获取拉取请求中更改的文件列表

    • owner: 存储库所有者(字符串,必需)
    • repo: 存储库名称(字符串,必需)
    • pullNumber: 拉取请求编号(数字,必需)
  • get_pull_request_status - 获取拉取请求的所有状态检查的综合状态

    • owner: 存储库所有者(字符串,必需)
    • repo: 存储库名称(字符串,必需)
    • pullNumber: 拉取请求编号(数字,必需)
  • update_pull_request_branch - 使用基础分支的最新更改更新拉取请求分支

    • owner: 存储库所有者(字符串,必需)
    • repo: 存储库名称(字符串,必需)
    • pullNumber: 拉取请求编号(数字,必需)
    • expectedHeadSha: 拉取请求 HEAD 引用的预期 SHA(字符串,可选)
  • get_pull_request_comments - 获取拉取请求的审查评论

    • owner: 存储库所有者(字符串,必需)
    • repo: 存储库名称(字符串,必需)
    • pullNumber: 拉取请求编号(数字,必需)
  • get_pull_request_reviews - 获取拉取请求的审查

    • owner: 存储库所有者(字符串,必需)
    • repo: 存储库名称(字符串,必需)
    • pullNumber: 拉取请求编号(数字,必需)
  • create_pull_request_review - 在拉取请求审查上创建审查

    • owner: 存储库所有者(字符串,必需)
    • repo: 存储库名称(字符串,必需)
    • pullNumber: 拉取请求编号(数字,必需)
    • body: 审查评论文本(字符串,可选)
    • event: 审查动作('APPROVE', 'REQUEST_CHANGES', 'COMMENT')(字符串,必需)
    • commitId: 要审查的提交的 SHA(字符串,可选)
    • comments: 放置在拉取请求更改上的行特定评论对象数组(数组,可选)
      • 对于内联评论:提供 path, position(或 line)和 body
      • 对于多行评论:提供 path, start_line, line, 可选 side/start_sidebody
  • create_pull_request - 创建新的拉取请求

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

存储库

  • create_or_update_file - 在存储库中创建或更新单个文件

    • owner: 存储库所有者(字符串,必需)
    • repo: 存储库名称(字符串,必需)
    • path: 文件路径(字符串,必需)
    • message: 提交消息(字符串,必需)
    • content: 文件内容(字符串,必需)
    • branch: 分支名称(字符串,可选)
    • sha: 如果是更新,则为文件 SHA(字符串,可选)
  • push_files - 在单次提交中推送多个文件

    • owner: 存储库所有者(字符串,必需)
    • repo: 存储库名称(字符串,必需)
    • branch: 要推送的分支(字符串,必需)
    • files: 要推送的文件,每个文件都有路径和内容(数组,必需)
    • message: 提交消息(字符串,必需)
  • search_repositories - 搜索 GitHub 存储库

    • query: 搜索查询(字符串,必需)
    • sort: 排序字段(字符串,可选)
    • order: 排序顺序(字符串,可选)
    • page: 页码(数字,可选)
    • perPage: 每页结果数(数字,可选)
  • create_repository - 创建新的 GitHub 存储库

    • name: 存储库名称(字符串,必需)
    • description: 存储库描述(字符串,可选)
    • private: 是否为私有存储库(布尔值,可选)
    • autoInit: 是否自动初始化带有 README(布尔值,可选)
  • get_file_contents - 获取文件或目录的内容

    • owner: 存储库所有者(字符串,必需)
    • repo: 存储库名称(字符串,必需)
    • path: 文件路径(字符串,必需)
    • ref: Git 引用(字符串,可选)
  • fork_repository - 分叉存储库

    • owner: 存储库所有者(字符串,必需)
    • repo: 存储库名称(字符串,必需)
    • organization: 目标组织名称(字符串,可选)
  • create_branch - 创建新分支

    • owner: 存储库所有者(字符串,必需)
    • repo: 存储库名称(字符串,必需)
    • branch: 新分支名称(字符串,必需)
    • sha: 创建分支的 SHA(字符串,必需)
  • list_commits - 获取存储库中分支的提交

    • owner: 存储库所有者(字符串,必需)
    • repo: 存储库名称(