M

MCP GitHub 服务+

GitHub API 的 MCP 服务器,提供文件操作、仓库管理和高级搜索功能,具有自动分支创建和全面的错误处理功能。

version-controldeveloper-toolssearch

935 查看 · 2026-07-07 更新

简介

GitHub API 的 MCP 服务器,提供文件操作、仓库管理和高级搜索功能,具有自动分支创建和全面的错误处理功能。

简介

GitHub API 的 MCP 服务器,提供文件操作、仓库管理和高级搜索功能,具有自动分支创建和全面的错误处理功能。

GitHub MCP Server Plus

npm downloads

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

GitHub Server Plus MCP server

功能

  • 自动分支创建:在创建/更新文件或推送更改时,如果分支不存在,则会自动创建
  • 全面的错误处理:针对常见问题提供清晰的错误信息
  • 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_content

    • Push multiple files with direct content 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. push_files_from_path

    • Push multiple files from filesystem paths 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 (string): Target path in the repository
        • filepath (string): Source filesystem path to read from
      • message (string): Commit message
    • Returns: Updated branch reference
  4. 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
  5. 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
  6. 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
  7. 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
  8. 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
  9. 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
  10. 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
  11. 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
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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
  17. list_commits

    • Gets commits of a branch in a repository
    • Inputs:
      • owner (string): Repository owner
      • repo (string): Repository name
      • page (optional string): page number
      • per_page (optional string): number of record per page
      • sha (optional string): branch name
    • Returns: List of commits
  18. get_issue

    • Gets the contents of an issue within a repository
    • Inputs:
      • owner (string): Repository owner
      • repo (string): Repository name
      • issue_number (number): Issue number to retrieve
    • Returns: GitHub Issue object & details
  19. get_pull_request

    • Get details of a specific pull request
    • Inputs:
      • owner (string): Repository owner
      • repo (string): Repository name
      • pull_number (number): Pull request number
    • Returns: Pull request details including diff and review status
  20. list_pull_requests

    • List and filter repository pull requests
    • Inputs:
      • owner (string): Repository owner
      • repo (string): Repository name
      • state (optional string): Filter by state ('open', 'closed', 'all')
      • head (optional string): Filter by head user/org and branch
      • base (optional string): Filter by base branch
      • sort (optional string): Sort by ('created', 'updated', 'popularity', 'long-running')
      • direction (optional string): Sort direction ('asc', 'desc')
      • per_page (optional number): Results per page (max 100)
      • page (optional number): Page number
    • Returns: Array of pull request details
  21. create_pull_request_review

    • Create a review on a pull request
    • Inputs:
      • owner (string): Repository owner
      • repo (string): Repository name
      • pull_number (number): Pull request number
      • body (string): Review comment text
      • event (string): Review action ('APPROVE', 'REQUEST_CHANGES', 'COMMENT')
      • commit_id (optional string): SHA of commit to review
      • comments (optional array): Line-specific comments, each with:
        • path (string): File path
        • position (number): Line position in diff
        • body (string): Comment text
    • Returns: Created review details
  22. merge_pull_request

    • Merge a pull request
    • Inputs:
      • owner (string): Repository owner
      • repo (string): Repository name
      • pull_number (number): Pull request number
      • commit_title (optional string): Title for merge commit
      • commit_message (optional string): Extra detail for merge commit
      • merge_method (optional string): Merge method ('merge', 'squash', 'rebase')
    • Returns: Merge result details
  23. get_pull_request_files

    • Get the list of files changed in a pull request
    • Inputs:
      • owner (string): Repository owner
      • repo (string): Repository name
      • pull_number (number): Pull request number
    • Returns: Array of changed files with patch and status details
  24. get_pull_request_status

    • Get the combined status of all status checks for a pull request
    • Inputs:
      • owner (string): Repository owner
      • repo (string): Repository name
      • pull_number (number): Pull request number
    • Returns: Combined status check results and individual check details
  25. update_pull_request_branch

    • Update a pull request branch with the latest changes from the base branch
    • Inputs:
      • owner (string): Repository owner
      • repo (string): Repository name
      • pull_number (number): Pull request number
      • expected_head_sha (optional string): The expected SHA of the pull request's HEAD ref
    • Returns: Success message when branch is updated
  26. get_pull_request_comments

    • Get the review comments on a pull request
    • Inputs:
      • owner (string): Repository owner
      • repo (string): Repository name
      • pull_number (number): Pull request number
    • Returns: Array of pull request review comments
  27. get_pull_request_reviews

    • Get the reviews on a pull request
    • Inputs:
      • owner (string): Repository owner
      • repo (string): Repository name
      • pull_number (number): Pull request number
    • Returns: Array of pull request reviews

搜索查询语法

代码搜索

  • 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 文件。

服务配置

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

来源