The GitHub MCP Server enables interactions with the GitHub API for managing repositories, files, issues, and pull requests, with advanced search functionality.
File Operations: Create, update, push, and retrieve files; perform multi-file operations in a single commit
Repository Management: Create, fork, and search repositories
Issue and PR Management: Create and manage issues and pull requests
Branch Management: Create branches (automatically when updating files)
Search Capabilities: Search code, issues, PRs, repositories, and users
Git History Preservation: Maintain proper Git history without force pushing
Comprehensive Error Handling: Clear error messages for common issues
Enables file operations, repository management, and search functionality for the GitHub API. Capabilities include creating/updating files, pushing changes, repository creation and forking, branch management, issue and pull request operations, and searching across GitHub repositories, issues, and users.
GitHub MCP Server
MCP Server for the GitHub API, enabling file operations, repository management, search functionality, and more.
Features
Automatic Branch Creation: When creating/updating files or pushing changes, branches are automatically created if they don't exist
Comprehensive Error Handling: Clear error messages for common issues
Git History Preservation: Operations maintain proper Git history without force pushing
Batch Operations: Support for both single-file and multi-file operations
Advanced Search: Support for searching code, issues/PRs, and users
Tools
create_or_update_file
Create or update a single file in a repository
Inputs:
owner
(string): Repository owner (username or organization)repo
(string): Repository namepath
(string): Path where to create/update the filecontent
(string): Content of the filemessage
(string): Commit messagebranch
(string): Branch to create/update the file insha
(optional string): SHA of file being replaced (for updates)
Returns: File content and commit details
push_files
Push multiple files in a single commit
Inputs:
owner
(string): Repository ownerrepo
(string): Repository namebranch
(string): Branch to push tofiles
(array): Files to push, each withpath
andcontent
message
(string): Commit message
Returns: Updated branch reference
search_repositories
Search for GitHub repositories
Inputs:
query
(string): Search querypage
(optional number): Page number for paginationperPage
(optional number): Results per page (max 100)
Returns: Repository search results
create_repository
Create a new GitHub repository
Inputs:
name
(string): Repository namedescription
(optional string): Repository descriptionprivate
(optional boolean): Whether repo should be privateautoInit
(optional boolean): Initialize with README
Returns: Created repository details
get_file_contents
Get contents of a file or directory
Inputs:
owner
(string): Repository ownerrepo
(string): Repository namepath
(string): Path to file/directorybranch
(optional string): Branch to get contents from
Returns: File/directory contents
create_issue
Create a new issue
Inputs:
owner
(string): Repository ownerrepo
(string): Repository nametitle
(string): Issue titlebody
(optional string): Issue descriptionassignees
(optional string[]): Usernames to assignlabels
(optional string[]): Labels to addmilestone
(optional number): Milestone number
Returns: Created issue details
create_pull_request
Create a new pull request
Inputs:
owner
(string): Repository ownerrepo
(string): Repository nametitle
(string): PR titlebody
(optional string): PR descriptionhead
(string): Branch containing changesbase
(string): Branch to merge intodraft
(optional boolean): Create as draft PRmaintainer_can_modify
(optional boolean): Allow maintainer edits
Returns: Created pull request details
fork_repository
Fork a repository
Inputs:
owner
(string): Repository ownerrepo
(string): Repository nameorganization
(optional string): Organization to fork to
Returns: Forked repository details
create_branch
Create a new branch
Inputs:
owner
(string): Repository ownerrepo
(string): Repository namebranch
(string): Name for new branchfrom_branch
(optional string): Source branch (defaults to repo default)
Returns: Created branch reference
list_issues
List and filter repository issues
Inputs:
owner
(string): Repository ownerrepo
(string): Repository namestate
(optional string): Filter by state ('open', 'closed', 'all')labels
(optional string[]): Filter by labelssort
(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 numberper_page
(optional number): Results per page
Returns: Array of issue details
update_issue
Update an existing issue
Inputs:
owner
(string): Repository ownerrepo
(string): Repository nameissue_number
(number): Issue number to updatetitle
(optional string): New titlebody
(optional string): New descriptionstate
(optional string): New state ('open' or 'closed')labels
(optional string[]): New labelsassignees
(optional string[]): New assigneesmilestone
(optional number): New milestone number
Returns: Updated issue details
add_issue_comment
Add a comment to an issue
Inputs:
owner
(string): Repository ownerrepo
(string): Repository nameissue_number
(number): Issue number to comment onbody
(string): Comment text
Returns: Created comment details
search_code
Search for code across GitHub repositories
Inputs:
q
(string): Search query using GitHub code search syntaxsort
(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 syntaxsort
(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 syntaxsort
(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 ownerrepo
(string): Repository namepage
(optional string): page numberper_page
(optional string): number of record per pagesha
(optional string): branch name
Returns: List of commits
get_issue
Gets the contents of an issue within a repository
Inputs:
owner
(string): Repository ownerrepo
(string): Repository nameissue_number
(number): Issue number to retrieve
Returns: Github Issue object & details
get_issue_comments
Gets the comments on an issue or pull request
Inputs:
owner
(string): Repository ownerrepo
(string): Repository nameissue_number
(number): Issue/PR number to retrieve comments from
Returns: Array of GitHub comment objects containing comment ID, body text, author, and timestamps
Search Query Syntax
Code Search
language:javascript
: Search by programming languagerepo:owner/name
: Search in specific repositorypath:app/src
: Search in specific pathextension:js
: Search by file extensionExample:
q: "import express" language:typescript path:src/
Issues Search
is:issue
oris:pr
: Filter by typeis:open
oris:closed
: Filter by statelabel:bug
: Search by labelauthor:username
: Search by authorExample:
q: "memory leak" is:issue is:open label:bug
Users Search
type:user
ortype:org
: Filter by account typefollowers:>1000
: Filter by followerslocation:London
: Search by locationExample:
q: "fullstack developer" location:London followers:>100
For detailed search syntax, see GitHub's searching documentation.
Setup
Personal Access Token
Create a GitHub Personal Access Token with appropriate permissions:
Go to Personal access tokens (in GitHub Settings > Developer settings)
Select which repositories you'd like this token to have access to (Public, All, or Select)
Create a token with the
repo
scope ("Full control of private repositories")Alternatively, if working only with public repositories, select only the
public_repo
scope
Copy the generated token
Usage with Claude Desktop
To use this with Claude Desktop, add the following to your claude_desktop_config.json
:
License
This MCP server is licensed under the MIT License. This means you are free to use, modify, and distribute the software, subject to the terms and conditions of the MIT License. For more details, please see the LICENSE file in the project repository.
This server cannot be installed
remote-capable server
The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.
Enables interaction with GitHub through the GitHub API, supporting file operations, repository management, advanced search, and issue tracking with comprehensive error handling and automatic branch creation.
Related Resources
Related MCP Servers
- AsecurityAlicenseAqualityEnables AI assistants to interact with GitHub through the PyGithub library, providing tools for managing issues, repositories, pull requests, and other GitHub operations with intelligent parameter handling and error management.Last updated -191MIT License
- AsecurityFlicenseAqualityEnables comprehensive GitHub operations through natural language including file management, repository administration, issue tracking, and advanced code searching.Last updated -4711
- -securityAlicense-qualityEnables interaction with GitHub repositories through the GitHub API, allowing file operations, repository management, issue tracking, and code search through natural language commands.Last updated -3332MIT License
- -securityAlicense-qualityProvides a comprehensive API wrapper for GitHub operations through a FastMCP-based server, simplifying repository management, pull requests, issues, and other GitHub interactions with secure authentication.Last updated -4GPL 3.0