项目简介

GitHub MCP 服务器是连接 AI 工具与 GitHub 平台的桥梁。它允许 AI 客户端通过标准化的 MCP 协议,以自然语言的方式访问和操作 GitHub 上的各种资源和功能。无论是浏览代码、管理 issues 和 PR,还是监控 CI/CD 流程和进行代码分析,GitHub MCP 服务器都能为 AI 提供安全、可扩展的上下文服务。

主要功能点

  • 仓库管理: 浏览代码、搜索文件、分析提交历史、理解项目结构。
  • 问题与拉取请求自动化: 创建、更新和管理 issues 和 pull requests,辅助错误分类和代码审查。
  • CI/CD 与工作流智能: 监控 GitHub Actions 工作流运行、分析构建失败、管理版本发布,获取开发流程洞察。
  • 代码安全分析: 检查安全漏洞、审查 Dependabot 警报、理解代码模式,获取全面的代码库洞察。
  • 团队协作: 访问讨论、管理通知、分析团队活动,简化团队流程。
  • 可插拔工具集: 支持按需启用或禁用特定功能组,优化 AI 的工具选择和上下文大小。
  • 动态工具发现: 允许 MCP 主机根据用户提示动态列出和启用工具集,避免工具过多导致模型混淆。
  • 只读模式: 可配置为只提供读取操作,防止对 GitHub 仓库进行任何修改。

安装步骤

GitHub MCP 服务器支持远程托管或本地运行。建议使用 Docker 部署本地服务器。

  1. 安装 Docker: 确保您的系统已安装 Docker。
  2. 创建 GitHub 个人访问令牌 (PAT):
    • 访问 GitHub 设置中的 "Developer settings" -> "Personal access tokens" -> "Tokens (classic)"。
    • 点击 "Generate new token",选择适当的权限 (scopes)。建议至少勾选 'repo' (仓库操作)、'read:packages' (Docker 镜像访问) 和 'read:org' (组织团队访问) 等。根据需要赋予 AI 工具的权限进行选择。
    • 保存生成的 PAT,它将用于服务器认证。

服务器配置

MCP 客户端(如 VS Code Copilot Chat、Claude Desktop、Cursor 等)需要配置 MCP 服务器的启动命令。以下是两种常见的配置示例:

  • 远程 GitHub MCP 服务器 (由 GitHub 托管):

    {
      "servers": {
        "github": {
          "type": "http",
          "url": "https://api.githubcopilot.com/mcp/"
        }
      }
    }
    • 'type': 'http' 表示通过 HTTP 协议连接远程服务器。
    • 'url': 远程服务器的 API 地址。

    如果需要使用 GitHub PAT 进行认证:

    {
      "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
        }
      ]
    }
    • 'headers.Authorization': 使用 'Bearer' 认证方式,'${input:github_mcp_pat}' 会提示用户输入 PAT。
  • 本地 GitHub MCP 服务器 (使用 Docker):

    {
      "servers": {
        "github": {
          "command": "docker",
          "args": [
            "run",
            "-i",
            "--rm",
            "-e",
            "GITHUB_PERSONAL_ACCESS_TOKEN",
            "ghcr.io/github/github-mcp-server",
            "stdio" // 显式指定stdio模式
          ],
          "env": {
            "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}"
          }
        }
      },
      "inputs": [
        {
          "type": "promptString",
          "id": "github_token",
          "description": "GitHub Personal Access Token",
          "password": true
        }
      ]
    }
    • 'command': 'docker',用于启动 Docker 容器。
    • 'args': 运行 Docker 容器的参数,包括 '-i' (交互模式), '--rm' (容器退出时自动删除), '-e GITHUB_PERSONAL_ACCESS_TOKEN' (将 PAT 作为环境变量传入), 'ghcr.io/github/github-mcp-server' (服务器镜像名称), 'stdio' (指定服务器运行在标准I/O模式下)。
    • 'env.GITHUB_PERSONAL_ACCESS_TOKEN': 使用 '${input:github_token}' 获取用户输入的 PAT。

基本使用方法

配置完成后,AI 客户端即可与 GitHub MCP 服务器通信。通常,在支持 MCP 的 AI 客户端(如 VS Code Copilot Chat)中:

  1. 启用 Agent 模式: 在 AI 聊天输入框附近找到并切换到 Agent 模式。
  2. 自然语言交互: 直接在聊天界面中用自然语言描述您希望 AI 在 GitHub 上执行的任务,例如:
    • "List all open issues in the 'octocat/Spoon-Knife' repository." (列出 'octocat/Spoon-Knife' 仓库所有未解决的问题。)
    • "Create a new pull request from 'my-feature-branch' to 'main' in 'my-org/my-repo' with title 'Implement new feature X'." (在 'my-org/my-repo' 中,从 'my-feature-branch' 到 'main' 创建一个名为 'Implement new feature X' 的新拉取请求。)
    • "Get the contents of 'README.md' in 'octocat/Hello-World'." (获取 'octocat/Hello-World' 仓库中 'README.md' 的内容。)

服务器将解析这些请求,调用相应的 GitHub API,并将结果返回给 AI 客户端进行进一步处理或展示。

信息

分类

开发者工具