mcp-github-server-plus
Similar
GitHub MCP Server Plus
MCP 服务器用于 GitHub API,支持文件操作、仓库管理、搜索功能等。
功能
自动分支创建:在创建/更新文件或推送更改时,如果分支不存在,则会自动创建
全面的错误处理:针对常见问题提供清晰的错误信息
Git 历史记录保留:操作过程中不会强制推送,从而保持正确的 Git 历史记录
批量操作:支持单个文件和多个文件的操作,可以使用内容或文件路径
高级搜索:支持代码、问题/PR 和用户的搜索
工具
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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: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 文件中:
Docker
\{
"mcpServers": \{
"github": \{
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"mcp/github"
],
"env": \{
"GITHUB_PERSONAL_ACCESS_TOKEN": ""
\}
\}
\}
\}
NPX
\{
"mcpServers": \{
"github": \{
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-github"
],
"env": \{
"GITHUB_PERSONAL_ACCESS_TOKEN": ""
\}
\}
\}
\}
构建
Docker 构建:
docker build -t mcp/github -f src/github/Dockerfile .
许可证
此 MCP 服务器根据 MIT 许可证许可。这意味着您可以在遵守 MIT 许可证条款和条件的前提下自由使用、修改和分发该软件。更多详情,请参见项目存储库中的 LICENSE 文件。
Prompts
Reviews
Tags
Write Your Review
Detailed Ratings
Name
Size
Type
Download
Last Modified
-1
-
Community