GitHub API 文件操作与仓库管理服务

提供GitHub API的MCP服务器,支持文件操作、仓库管理、搜索功能等,适用于开发者进行代码管理和协作。

  • by asbloom-py
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 asbloom-py/mcp-servers

使用说明

GitHub MCP服务器

用于GitHub API的MCP服务器,实现文件操作、存储库管理、搜索功能等。

特性

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

工具

  1. create_or_update_file

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

    • 在一次提交中推送多个文件
    • 输入:
      • owner (string):存储库所有者
      • repo (string):存储库名称
      • branch (string):要推送的分支
      • files (array):要推送的文件,每个文件都有 path 和 content
      • message (string):提交消息
    • 返回:更新了分支引用
  3. search_repositories

    • 搜索GitHub存储库
    • 输入:
      • query (string):搜索查询
      • page (可选编号):分页页码
      • perPage (可选数字):每页结果(最多100个)
    • 返回:存储库搜索结果
  4. create_repository

    • 创建新的GitHub存储库
    • 输入:
      • name (string):存储库名称
      • description (可选字符串):存储库描述
      • private (可选布尔值):repo是否应该是私有的
      • autoInit (可选布尔值):使用README进行初始化
    • 返回:已创建存储库详细信息
  5. get_file_contents

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

    • 创建新问题
    • 输入:
      • owner (string):存储库所有者
      • repo (string):存储库名称
      • title (string):发行标题
      • body (可选字符串):问题描述
      • assignees (可选字符串[]):要分配的用户名
      • labels (可选字符串[]):要添加的标签
      • milestone (可选编号):里程碑编号
    • 退货:已创建问题详细信息
  7. create_pull_request

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

    • 分叉存储库
    • 输入:
      • owner (string):存储库所有者
      • repo (string):存储库名称
      • organization (可选字符串):要分叉的组织
    • 返回:分叉存储库详细信息
  9. create_branch

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

    • 列出和筛选存储库问题
    • 输入:
      • owner (string):存储库所有者
      • repo (string):存储库名称
      • state (可选字符串):按状态筛选(“打开”、“关闭”、“全部”)
      • labels (可选字符串[]):按标签筛选
      • sort (可选字符串):排序方式(“已创建”、“已更新”、“注释”)
      • direction (可选字符串):排序方向('sc','sec')
      • since (可选字符串):按日期筛选(ISO 8601时间戳)
      • page (可选编号):页码
      • per_page (可选数字):每页结果
    • 返回:问题详细信息数组
  11. update_issue

    • 更新现有问题
    • 输入:
      • owner (string):存储库所有者
      • repo (string):存储库名称
      • issue_number (number):要更新的发行号
      • title (可选字符串):新标题
      • body (可选字符串):新描述
      • state (可选字符串):新状态(“打开”或“关闭”)
      • labels (可选字符串[]):新标签
      • assignees (可选字符串[]):新受让人
      • milestone (可选编号):新里程碑编号
    • 退货:更新的问题详细信息
  12. add_issue_comment

    • 向问题添加评论
    • 输入:
      • owner (string):存储库所有者
      • repo (string):存储库名称
      • issue_number (number):要评论的问题编号
      • body (string):注释文本
    • 返回:已创建评论详细信息
  13. search_code

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

    • 搜索问题并提取请求
    • 输入:
      • q (string):使用GitHub发布搜索语法的搜索查询
      • sort (可选字符串):排序字段(注释、反应、创建等)
      • order (可选字符串):排序顺序(“asc”或“desc”)
      • per_page (可选数字):每页结果(最多100个)
      • page (可选编号):页码
    • 返回:问题和拉取请求搜索结果
  15. search_users

    • 搜索GitHub用户
    • 输入:
      • q (string):使用GitHub用户搜索语法搜索查询
      • sort (可选字符串):排序字段(关注者、存储库、已加入)
      • order (可选字符串):排序顺序(“asc”或“desc”)
      • per_page (可选数字):每页结果(最多100个)
      • page (可选编号):页码
    • 返回:用户搜索结果
  16. list_commits

  • 获取存储库中分支的提交
  • 输入:
    • owner (string):存储库所有者
    • repo (string):存储库名称
    • page (可选字符串):页码
    • per_page (可选字符串):每页记录数
    • sha (可选字符串):分支名称
  • 返回:提交列表
  1. get_issue
  • 获取存储库中问题的内容
  • 输入:
    • owner (string):存储库所有者
    • repo (string):存储库名称
    • issue_number (number):要检索的问题编号
  • 返回:Github Issue对象和详细信息
  1. get_issue_comments
  • 获取问题或拉取请求的注释
  • 输入:
    • owner (string):存储库所有者
    • repo (string):存储库名称
    • issue_number (编号):用于检索评论的问题/PR编号
  • 返回:包含注释ID、正文、作者和时间戳的GitHub注释对象数组

搜索查询语法

代码搜索

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

问题搜索

  • is:issue 或 is:pr:按类型筛选
  • is:open 或 is:closed:按州筛选
  • label:bug:按标签搜索
  • author:username:按作者搜索
  • 例子: q: "memory leak" is:issue is:open label:bug

用户搜索

  • type:user 或 type: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:

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

许可证

此MCP服务器根据MIT许可证获得许可。这意味着您可以根据MIT许可证的条款和条件自由使用、修改和分发软件。有关更多详细信息,请参阅项目存储库中的LICENSE文件。