首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
首页
学习
活动
专区
圈层
工具
MCP广场
MCP广场 >详情页
servers2025-05-2614分享
github
深度集成GitHub API接口,支持代码仓库管理、自动化审查等智能操作。开发者可通过标准化协议快速对接GitHub生态,实现CI/CD流程智能化升级,提升研发效能。
By modelcontextprotocol
2025-05-2614
github
详情内容

GitHub MCP 服务器

弃用通知: 该项目的开发已移至 GitHub 的 http://github.com/github/github-mcp-server 仓库。


GitHub API 的 MCP 服务器,支持文件操作、仓库管理、搜索功能等。

功能

  • 自动分支创建:在创建/更新文件或推送更改时,如果分支不存在,则会自动创建
  • 全面的错误处理:为常见问题提供清晰的错误信息
  • Git 历史保留:操作保持正确的 Git 历史记录,无需强制推送
  • 批量操作:支持单文件和多文件操作
  • 高级搜索:支持搜索代码、问题/PR 和用户

工具

  1. create_or_update_file

    • 在仓库中创建或更新单个文件
    • 输入:
      • owner(字符串):仓库所有者(用户名或组织)
      • repo(字符串):仓库名称
      • path(字符串):创建/更新文件的路径
      • content(字符串):文件内容
      • message(字符串):提交信息
      • branch(字符串):创建/更新文件的分支
      • sha(可选字符串):被替换文件的 SHA(用于更新)
    • 返回:文件内容和提交详情
  2. push_files

    • 在单个提交中推送多个文件
    • 输入:
      • owner(字符串):仓库所有者
      • repo(字符串):仓库名称
      • branch(字符串):推送到的分支
      • files(数组):要推送的文件,每个文件包含 pathcontent
      • message(字符串):提交信息
    • 返回:更新后的分支引用
  3. search_repositories

    • 搜索 GitHub 仓库
    • 输入:
      • query(字符串):搜索查询
      • page(可选数字):分页的页码
      • perPage(可选数字):每页结果数(最多 100)
    • 返回:仓库搜索结果
  4. create_repository

    • 创建一个新的 GitHub 仓库
    • 输入:
      • name(字符串):仓库名称
      • description(可选字符串):仓库描述
      • private(可选布尔值):仓库是否私有
      • autoInit(可选布尔值):是否使用 README 初始化
    • 返回:创建的仓库详情
  5. get_file_contents

    • 获取文件或目录的内容
    • 输入:
      • owner(字符串):仓库所有者
      • repo(字符串):仓库名称
      • path(字符串):文件/目录的路径
      • branch(可选字符串):获取内容的分支
    • 返回:文件/目录内容
  6. create_issue

    • 创建一个新问题
    • 输入:
      • owner(字符串):仓库所有者
      • repo(字符串):仓库名称
      • title(字符串):问题标题
      • body(可选字符串):问题描述
      • assignees(可选字符串数组):要分配的用户名
      • labels(可选字符串数组):要添加的标签
      • milestone(可选数字):里程碑编号
    • 返回:创建的问题详情
  7. create_pull_request

    • 创建一个新的拉取请求
    • 输入:
      • owner(字符串):仓库所有者
      • repo(字符串):仓库名称
      • title(字符串):PR 标题
      • body(可选字符串):PR 描述
      • head(字符串):包含更改的分支
      • base(字符串):要合并到的分支
      • draft(可选布尔值):是否创建为草稿 PR
      • maintainer_can_modify(可选布尔值):是否允许维护者编辑
    • 返回:创建的拉取请求详情
  8. fork_repository

    • 分叉一个仓库
    • 输入:
      • owner(字符串):仓库所有者
      • repo(字符串):仓库名称
      • organization(可选字符串):要分叉到的组织
    • 返回:分叉的仓库详情
  9. create_branch

    • 创建一个新分支
    • 输入:
      • owner(字符串):仓库所有者
      • repo(字符串):仓库名称
      • branch(字符串):新分支的名称
      • from_branch(可选字符串):源分支(默认为仓库默认分支)
    • 返回:创建的分支引用
  10. list_issues

    • 列出和过滤仓库问题
    • 输入:
      • owner(字符串):仓库所有者
      • repo(字符串):仓库名称
      • state(可选字符串):按状态过滤('open', 'closed', 'all')
      • labels(可选字符串数组):按标签过滤
      • sort(可选字符串):按排序('created', 'updated', 'comments')
      • direction(可选字符串):排序方向('asc', 'desc')
      • since(可选字符串):按日期过滤(ISO 8601 时间戳)
      • page(可选数字):页码
      • per_page(可选数字):每页结果数
    • 返回:问题详情数组
  11. update_issue

    • 更新现有问题
    • 输入:
      • owner(字符串):仓库所有者
      • repo(字符串):仓库名称
      • issue_number(数字):要更新的问题编号
      • title(可选字符串):新标题
      • body(可选字符串):新描述
      • state(可选字符串):新状态('open' 或 'closed')
      • labels(可选字符串数组):新标签
      • assignees(可选字符串数组):新分配者
      • milestone(可选数字):新里程碑编号
    • 返回:更新后的问题详情
  12. add_issue_comment

    • 向问题添加评论
    • 输入:
      • owner(字符串):仓库所有者
      • repo(字符串):仓库名称
      • issue_number(数字):要评论的问题编号
      • body(字符串):评论文本
    • 返回:创建的评论详情
  13. search_code

    • 在 GitHub 仓库中搜索代码
    • 输入:
      • q(字符串):使用 GitHub 代码搜索语法的搜索查询
      • sort(可选字符串):排序字段(仅 'indexed')
      • order(可选字符串):排序顺序('asc' 或 'desc')
      • per_page(可选数字):每页结果数(最多 100)
      • page(可选数字):页码
    • 返回:带有仓库上下文的代码搜索结果
  14. search_issues

    • 搜索问题和拉取请求
    • 输入:
      • q(字符串):使用 GitHub 问题搜索语法的搜索查询
      • sort(可选字符串):排序字段(评论、反应、创建时间等)
      • order(可选字符串):排序顺序('asc' 或 'desc')
      • per_page(可选数字):每页结果数(最多 100)
      • page(可选数字):页码
    • 返回:问题和拉取请求的搜索结果
  15. search_users

    • 搜索 GitHub 用户
    • 输入:
      • q(字符串):使用 GitHub 用户搜索语法的搜索查询
      • sort(可选字符串):排序字段(关注者、仓库、加入时间)
      • `order
  16. list_commits

  • 获取仓库中某个分支的提交记录
  • 输入参数:
    • owner (string): 代码库所有者
    • repo (string): 代码库名称
    • page (可选 string): 页码
    • per_page (可选 string): 每页记录数
    • sha (可选 string): 分支名称
  • 返回值:提交记录列表
  1. get_issue
  • 获取仓库中某个 issue 的内容
  • 输入参数:
    • owner (string): 代码库所有者
    • repo (string): 代码库名称
    • issue_number (number): 要检索的 issue 编号
  • 返回值:Github issue 对象及详情
  1. get_pull_request
  • 获取特定 pull request 的详情
  • 输入参数:
    • owner (string): 代码库所有者
    • repo (string): 代码库名称
    • pull_number (number): pull request 编号
  • 返回值:pull request 详情,包括 diff 和审核状态
  1. list_pull_requests
  • 列出并筛选仓库的 pull request
  • 输入参数:
    • owner (string): 代码库所有者
    • repo (string): 代码库名称
    • state (可选 string): 按状态筛选 ('open', 'closed', 'all')
    • head (可选 string): 按 head 用户/组织和分支筛选
    • base (可选 string): 按 base 分支筛选
    • sort (可选 string): 按排序 ('created', 'updated', 'popularity', 'long-running')
    • direction (可选 string): 排序方向 ('asc', 'desc')
    • per_page (可选 number): 每页结果数 (最大 100)
    • page (可选 number): 页码
  • 返回值:pull request 详情数组
  1. create_pull_request_review
  • 在拉取请求上创建评审
  • 输入:
    • owner (string): 代码库所有者
    • repo (string): 代码库名称
    • pull_number (number): 拉取请求编号
    • body (string): 评审评论文本
    • event (string): 评审操作 ('APPROVE', 'REQUEST_CHANGES', 'COMMENT')
    • commit_id (optional string): 待评审提交的 SHA 值
    • comments (optional array): 行内评论,每个评论包含:
      • path (string): 文件路径
      • position (number): diff 中的行号
      • body (string): 评论文本
  • 返回:已创建的评审详情
  1. merge_pull_request
  • 合并拉取请求
  • 输入:
    • owner (string): 代码库所有者
    • repo (string): 代码库名称
    • pull_number (number): 拉取请求编号
    • commit_title (optional string): 合并提交的标题
    • commit_message (optional string): 合并提交的额外信息
    • merge_method (optional string): 合并方法 ('merge', 'squash', 'rebase')
  • 返回:合并结果详情
  1. get_pull_request_files
  • 获取拉取请求中更改的文件列表
  • 输入:
    • owner (string): 代码库所有者
    • repo (string): 代码库名称
    • pull_number (number): 拉取请求编号
  • 返回:包含补丁和状态详情的已更改文件数组
  1. get_pull_request_status
  • 获取拉取请求所有状态检查的组合状态
  • 输入:
    • owner (string): 代码库所有者
    • repo (string): 代码库名称
    • pull_number (number): 拉取请求编号
  • 返回:组合状态检查结果和各个检查详情
  1. update_pull_request_branch
  • 使用基分支的最新更改更新拉取请求分支(相当于GitHub的“更新分支”按钮)
  • 输入:
    • owner (string): 仓库所有者
    • repo (string): 仓库名称
    • pull_number (number): 拉取请求编号
    • expected_head_sha (optional string): 拉取请求 HEAD ref 的预期 SHA 值
  • 返回:分支更新成功的消息
  1. get_pull_request_comments
  • 获取拉取请求的代码审查评论
  • 输入:
    • owner (string): 仓库所有者
    • repo (string): 仓库名称
    • pull_number (number): 拉取请求编号
  • 返回:包含评论文本、作者和 diff 中位置等详细信息的拉取请求代码审查评论数组
  1. get_pull_request_reviews
  • 获取拉取请求的审查信息
  • 输入:
    • owner (string): 仓库所有者
    • repo (string): 仓库名称
    • pull_number (number): 拉取请求编号
  • 返回:包含审查状态(APPROVED、CHANGES_REQUESTED 等)、审查者和审查正文等详细信息的拉取请求审查数组

搜索查询语法

代码搜索

  • language:javascript: 按编程语言搜索
  • repo:owner/name: 在特定仓库中搜索
  • path:app/src: 在特定路径中搜索
  • extension:js: 按文件扩展名搜索
  • 例如:q: "import express" language:typescript path:src/

Issues 搜索

  • is:issueis:pr: 按类型筛选
  • is:openis:closed: 按状态筛选
  • label:bug: 按标签搜索
  • author:username: 按作者搜索
  • 例如:q: "memory leak" is:issue is:open label:bug

用户搜索

  • type:usertype:org:按账户类型筛选
  • followers:>1000:按关注者数量筛选
  • location:London:按位置搜索
  • 示例:q: "fullstack developer" location:London followers:>100

更多详细的搜索语法,请参考GitHub 搜索文档

设置

个人访问令牌

创建具有相应权限的GitHub 个人访问令牌

  • 前往个人访问令牌(在 GitHub 设置 > 开发者设置中)
  • 选择此令牌需要访问的仓库(公共仓库、所有仓库或选择仓库)
  • 创建一个具有 repo 权限的令牌(“对私有仓库的完全控制权限”)
    • 或者,如果只处理公共仓库,则只选择 public_repo 权限
  • 复制生成的令牌

与 Claude Desktop 配合使用

要在 Claude Desktop 中使用此功能,请将以下内容添加到您的 claude_desktop_config.json 文件中:

Docker

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

NPX

{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-github"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
      }
    }
  }
}

VS Code 使用方法

快速安装,请使用以下任一键:

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

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

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

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

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

Docker

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

NPX

{
  "mcp": {
    "inputs": [
      {
        "type": "promptString",
        "id": "github_token",
        "description": "GitHub 个人访问令牌",
        "password": true
      }
    ],
    "servers": {
      "github": {
        "command": "npx",
        "args": [
          "-y",
          "@modelcontextprotocol/server-github"
        ],
        "env": {
          "GITHUB_PERSONAL_ACCESS_TOKEN": "${input:github_token}"
        }
      }
    }
  }
}

构建

Docker 构建:

docker build -t mcp/github -f src/github/Dockerfile .

许可证

此 MCP 服务器采用 MIT 许可证授权。这意味着您可以自由使用、修改和分发此软件,但须遵守 MIT 许可证的条款和条件。更多详情,请参阅项目仓库中的 LICENSE 文件。

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档