返回市场
GitHub

GitHub

作者:modelcontextprotocol150 星标更新:2025-05-29

项目介绍

GitHub MCP Server

弃用通知: 此项目的开发已移至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(字符串):拉取请求标题
      • body(可选字符串):拉取请求描述
      • head(字符串):包含更改的分支
      • base(字符串):要合并到的分支
      • draft(可选布尔值):作为草稿拉取请求创建
      • 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(可选字符串):排序字段(comments, reactions, created 等)
      • order(可选字符串):排序顺序('asc' 或 'desc')
      • per_page(可选数字):每页结果数(最大1100)
      • page(可选数字):页码
    • 返回值:问题和拉取请求搜索结果
  15. search_users

    • 搜索GitHub用户
    • 输入参数:
      • q(字符串):使用GitHub用户搜索语法的搜索查询
      • sort(可选字符串):排序字段(followers, repositories, joined)
      • order(可选字符串):排序顺序('asc' 或 'desc')
      • per_page(可选数字):每页结果数(最大100)
      • page(可选数字):页码
    • 返回值:用户搜索结果
  16. list_commits

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

搜索查询语法

代码搜索

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

问题搜索

  • 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一起使用

快速安装,请使用以下安装按钮之一:

通过NPX在VS Code中安装 [![通过NPX在VS Code Insiders