G

GitHub智能助手

@tuanle96/mcp-github
0 Stars 89 次浏览 tuanle96 更新于 2026-08-23

通过自然语言全面启用 GitHub 操作,包括文件管理、仓库管理、问题跟踪和高级代码搜索。

MCP 服务配置

复制以下 JSON 到 OPClaw 或其他 MCP 客户端的配置文件中即可使用

{
  "mcpServers": {
    "github": {
      "args": [
        "-y",
        "@modelcontextprotocol/server-github"
      ],
      "command": "npx",
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "\u003cYOUR_TOKEN\u003e"
      }
    }
  }
}

该服务需要配置环境变量:GITHUB_PERSONAL_ACCESS_TOKEN

服务介绍

GitHub MCP 服务器

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

功能

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

工具

  1. create_or_update_file

    • Create or update a single file in a repository
    • Inputs:
      • owner (string): Repository owner (username or organization)
      • repo (string): Repository name
      • path (string): Path where to create/update the file
      • content (string): Content of the file
      • message (string): Commit message
      • branch (string): Branch to create/update the file in
      • sha (optional string): SHA of file being replaced (for updates)
    • Returns: File content and commit details
  2. push_files

    • Push multiple files in a single commit
    • Inputs:
      • owner (string): Repository owner
      • repo (string): Repository name
      • branch (string): Branch to push to
      • files (array): Files to push, each with path and content
      • message (string): Commit message
    • Returns: Updated branch reference
  3. search_repositories

    • Search for GitHub repositories
    • Inputs:
      • query (string): Search query
      • page (optional number): Page number for pagination
      • perPage (optional number): Results per page (max 100)
    • Returns: Repository search results
  4. create_repository

    • Create a new GitHub repository
    • Inputs:
      • name (string): Repository name
      • description (optional string): Repository description
      • private (optional boolean): Whether repo should be private
      • autoInit (optional boolean): Initialize with README
    • Returns: Created repository details
  5. get_file_contents

    • Get contents of a file or directory
    • Inputs:
      • owner (string): Repository owner
      • repo (string): Repository name
      • path (string): Path to file/directory
      • branch (optional string): Branch to get contents from
    • Returns: File/directory contents
  6. create_issue

    • Create a new issue
    • Inputs:
      • owner (string): Repository owner
      • repo (string): Repository name
      • title (string): Issue title
      • body (optional string): Issue description
      • assignees (optional string[]): Usernames to assign
      • labels (optional string[]): Labels to add
      • milestone (optional number): Milestone number
    • Returns: Created issue details
  7. create_pull_request

    • Create a new pull request
    • Inputs:
      • owner (string): Repository owner
      • repo (string): Repository name
      • title (string): PR title
      • body (optional string): PR description
      • head (string): Branch containing changes
      • base (string): Branch to merge into
      • draft (optional boolean): Create as draft PR
      • maintainer_can_modify (optional boolean): Allow maintainer edits
    • Returns: Created pull request details
  8. fork_repository

    • Fork a repository
    • Inputs:
      • owner (string): Repository owner
      • repo (string): Repository name
      • organization (optional string): Organization to fork to
    • Returns: Forked repository details
  9. create_branch

    • Create a new branch
    • Inputs:
      • owner (string): Repository owner
      • repo (string): Repository name
      • branch (string): Name for new branch
      • from_branch (optional string): Source branch (defaults to repo default)
    • Returns: Created branch reference
  10. list_issues

    • List and filter repository issues
    • Inputs:
      • owner (string): Repository owner
      • repo (string): Repository name
      • state (optional string): Filter by state ('open', 'closed', 'all')
      • labels (optional string[]): Filter by labels
      • sort (optional string): Sort by ('created', 'updated', 'comments')
      • direction (optional string): Sort direction ('asc', 'desc')
      • since (optional string): Filter by date (ISO 8601 timestamp)
      • page (optional number): Page number
      • per_page (optional number): Results per page
    • Returns: Array of issue details
  11. update_issue

    • Update an existing issue
    • Inputs:
      • owner (string): Repository owner
      • repo (string): Repository name
      • issue_number (number): Issue number to update
      • title (optional string): New title
      • body (optional string): New description
      • state (optional string): New state ('open' or 'closed')
      • labels (optional string[]): New labels
      • assignees (optional string[]): New assignees
      • milestone (optional number): New milestone number
    • Returns: Updated issue details
  12. add_issue_comment

    • Add a comment to an issue
    • Inputs:
      • owner (string): Repository owner
      • repo (string): Repository name
      • issue_number (number): Issue number to comment on
      • body (string): Comment text
    • Returns: Created comment details
  13. search_code

    • Search for code across GitHub repositories
    • Inputs:
      • q (string): Search query using GitHub code search syntax
      • sort (optional string): Sort field ('indexed' only)
      • order (optional string): Sort order ('asc' or 'desc')
      • per_page (optional number): Results per page (max 100)
      • page (optional number): Page number
    • Returns: Code search results with repository context
  14. search_issues

    • Search for issues and pull requests
    • Inputs:
      • q (string): Search query using GitHub issues search syntax
      • sort (optional string): Sort field (comments, reactions, created, etc.)
      • order (optional string): Sort order ('asc' or 'desc')
      • per_page (optional number): Results per page (max 100)
      • page (optional number): Page number
    • Returns: Issue and pull request search results
  15. search_users

    • Search for GitHub users
    • Inputs:
      • q (string): Search query using GitHub users search syntax
      • sort (optional string): Sort field (followers, repositories, joined)
      • order (optional string): Sort order ('asc' or 'desc')
      • per_page (optional number): Results per page (max 100)
      • page (optional number): Page number
    • Returns: User search results
  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>"
      }
    }
  }
}

构建

Docker 构建:

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

许可证

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