Explore
Contribute
Sign In

Explore

  1. Explore
  2. /
  3. Developer Tools
  4. /
  5. GitHub Official

GitHub Official

GitHub Official

Official GitHub MCP Server, by GitHub. Provides seamless integration with GitHub APIs, enabling advanced automation and interaction capabilities for developers and tools.

49 Tools

Requires Secrets
Add to Docker Desktop

Version 4.43 or later needs to be installed to add the server automatically

OverviewTools (49)ConfigManual installation
Github repository⁠

Use cases

Add review comment to the requester's latest pending pull request review. A pending review needs to already exist to call this (check with the user if not sure).

Add a comment to a specific issue in a GitHub repository.

Add a sub-issue to a parent issue in a GitHub repository.

Assign Copilot to a specific issue in a GitHub repository. This tool can help with the following outcomes: - a Pull Request created with source code changes to resolve the issue More information can be found at: - https://docs.github.com/en/copilot/using-github-copilot/using-copilot-coding-agent-to-work-on-tasks/about-assigning-tasks-to-copilot

Create and submit a review for a pull request without review comments.

Create a new branch in a GitHub repository

Create a new issue in a GitHub repository.

Create or update a single file in a GitHub repository. If updating, you must provide the SHA of the file you want to update. Use this tool to create or update a file in a GitHub repository remotely; do not use it for local file operations.

Create a pending review for a pull request. Call this first before attempting to add comments to a pending review, and ultimately submitting it. A pending pull request review means a pull request review, it is pending because you create it first and submit it later, and the PR author will not see it until it is submitted.

Create a new pull request in a GitHub repository.

View all

About

GitHub Official MCP Server

Official GitHub MCP Server, by GitHub. Provides seamless integration with GitHub APIs, enabling advanced automation and interaction capabilities for developers and tools.

What is an MCP Server?⁠

MCP Info

AttributeDetails
Docker Imageghcr.io/github/github-mcp-server⁠
Authorgithub⁠
Repositoryhttps://github.com/github/github-mcp-server⁠

Image Building InfoDockerfile|https://github.com/github/github-mcp-server/blob/main/Dockerfile⁠

Docker Image built by|github Docker Scout Health Score|Not available Verify Signature|Not available Licence|MIT License

Available Tools (49)

Tools provided by this ServerShort Description
add_comment_to_pending_reviewAdd review comment to the requester's latest pending pull request review
add_issue_commentAdd comment to issue
add_sub_issueAdd sub-issue
assign_copilot_to_issueAssign Copilot to issue
create_and_submit_pull_request_reviewCreate and submit a pull request review without comments
create_branchCreate branch
create_issueOpen new issue
create_or_update_fileCreate or update file
create_pending_pull_request_reviewCreate pending pull request review
create_pull_requestOpen new pull request
create_repositoryCreate repository
delete_fileDelete file
delete_pending_pull_request_reviewDelete the requester's latest pending pull request review
fork_repositoryFork repository
get_commitGet commit details
get_file_contentsGet file or directory contents
get_issueGet issue details
get_issue_commentsGet issue comments
get_labelGet a specific label from a repository.
get_latest_releaseGet latest release
get_meGet my user profile
get_release_by_tagGet a release by tag name
get_tagGet tag details
get_team_membersGet team members
get_teamsGet teams
list_branchesList branches
list_commitsList commits
list_issue_typesList available issue types
list_issuesList issues
list_labelList labels from a repository or an issue
list_pull_requestsList pull requests
list_releasesList releases
list_sub_issuesList sub-issues
list_tagsList tags
merge_pull_requestMerge pull request
pull_request_readGet details for a single pull request
push_filesPush files to repository
remove_sub_issueRemove sub-issue
reprioritize_sub_issueReprioritize sub-issue
request_copilot_reviewRequest Copilot review
search_codeSearch code
search_issuesSearch issues
search_pull_requestsSearch pull requests
search_repositoriesSearch repositories
search_usersSearch users
submit_pending_pull_request_reviewSubmit the requester's latest pending pull request review
update_issueEdit issue
update_pull_requestEdit pull request
update_pull_request_branchUpdate pull request branch

Tools Details

Tool: add_comment_to_pending_review

Add review comment to the requester's latest pending pull request review. A pending review needs to already exist to call this (check with the user if not sure).

ParametersTypeDescription
bodystringThe text of the review comment
ownerstringRepository owner
pathstringThe relative path to the file that necessitates a comment
pullNumbernumberPull request number
repostringRepository name
subjectTypestringThe level at which the comment is targeted
linenumberoptionalThe line of the blob in the pull request diff that the comment applies to. For multi-line comments, the last line of the range
sidestringoptionalThe side of the diff to comment on. LEFT indicates the previous state, RIGHT indicates the new state
startLinenumberoptionalFor multi-line comments, the first line of the range that the comment applies to
startSidestringoptionalFor multi-line comments, the starting side of the diff that the comment applies to. LEFT indicates the previous state, RIGHT indicates the new state

Tool: add_issue_comment

Add a comment to a specific issue in a GitHub repository.

ParametersTypeDescription
bodystringComment content
issue_numbernumberIssue number to comment on
ownerstringRepository owner
repostringRepository name

Tool: add_sub_issue

Add a sub-issue to a parent issue in a GitHub repository.

ParametersTypeDescription
issue_numbernumberThe number of the parent issue
ownerstringRepository owner
repostringRepository name
sub_issue_idnumberThe ID of the sub-issue to add. ID is not the same as issue number
replace_parentbooleanoptionalWhen true, replaces the sub-issue's current parent issue

Tool: assign_copilot_to_issue

Assign Copilot to a specific issue in a GitHub repository.

This tool can help with the following outcomes:

  • a Pull Request created with source code changes to resolve the issue

More information can be found at:

  • https://docs.github.com/en/copilot/using-github-copilot/using-copilot-coding-agent-to-work-on-tasks/about-assigning-tasks-to-copilot⁠ Parameters|Type|Description -|-|- issueNumber|number|Issue number owner|string|Repository owner repo|string|Repository name

Tool: create_and_submit_pull_request_review

Create and submit a review for a pull request without review comments.

ParametersTypeDescription
bodystringReview comment text
eventstringReview action to perform
ownerstringRepository owner
pullNumbernumberPull request number
repostringRepository name
commitIDstringoptionalSHA of commit to review

Tool: create_branch

Create a new branch in a GitHub repository

ParametersTypeDescription
branchstringName for new branch
ownerstringRepository owner
repostringRepository name
from_branchstringoptionalSource branch (defaults to repo default)

Tool: create_issue

Create a new issue in a GitHub repository.

ParametersTypeDescription
ownerstringRepository owner
repostringRepository name
titlestringIssue title
assigneesarrayoptionalUsernames to assign to this issue
bodystringoptionalIssue body content
labelsarrayoptionalLabels to apply to this issue
milestonenumberoptionalMilestone number
typestringoptionalType of this issue

Tool: create_or_update_file

Create or update a single file in a GitHub repository. If updating, you must provide the SHA of the file you want to update. Use this tool to create or update a file in a GitHub repository remotely; do not use it for local file operations.

ParametersTypeDescription
branchstringBranch to create/update the file in
contentstringContent of the file
messagestringCommit message
ownerstringRepository owner (username or organization)
pathstringPath where to create/update the file
repostringRepository name
shastringoptionalRequired if updating an existing file. The blob SHA of the file being replaced.

Tool: create_pending_pull_request_review

Create a pending review for a pull request. Call this first before attempting to add comments to a pending review, and ultimately submitting it. A pending pull request review means a pull request review, it is pending because you create it first and submit it later, and the PR author will not see it until it is submitted.

ParametersTypeDescription
ownerstringRepository owner
pullNumbernumberPull request number
repostringRepository name
commitIDstringoptionalSHA of commit to review

Tool: create_pull_request

Create a new pull request in a GitHub repository.

ParametersTypeDescription
basestringBranch to merge into
headstringBranch containing changes
ownerstringRepository owner
repostringRepository name
titlestringPR title
bodystringoptionalPR description
draftbooleanoptionalCreate as draft PR
maintainer_can_modifybooleanoptionalAllow maintainer edits

Tool: create_repository

Create a new GitHub repository in your account or specified organization

ParametersTypeDescription
namestringRepository name
autoInitbooleanoptionalInitialize with README
descriptionstringoptionalRepository description
organizationstringoptionalOrganization to create the repository in (omit to create in your personal account)
privatebooleanoptionalWhether repo should be private

Tool: delete_file

Delete a file from a GitHub repository

ParametersTypeDescription
branchstringBranch to delete the file from
messagestringCommit message
ownerstringRepository owner (username or organization)
pathstringPath to the file to delete
repostringRepository name

This tool may perform destructive updates.


Tool: delete_pending_pull_request_review

Delete the requester's latest pending pull request review. Use this after the user decides not to submit a pending review, if you don't know if they already created one then check first.

ParametersTypeDescription
ownerstringRepository owner
pullNumbernumberPull request number
repostringRepository name

Tool: fork_repository

Fork a GitHub repository to your account or specified organization

ParametersTypeDescription
ownerstringRepository owner
repostringRepository name
organizationstringoptionalOrganization to fork to

Tool: get_commit

Get details for a commit from a GitHub repository

ParametersTypeDescription
ownerstringRepository owner
repostringRepository name
shastringCommit SHA, branch name, or tag name
include_diffbooleanoptionalWhether to include file diffs and stats in the response. Default is true.
pagenumberoptionalPage number for pagination (min 1)
perPagenumberoptionalResults per page for pagination (min 1, max 100)

This tool is read-only. It does not modify its environment.


Tool: get_file_contents

Get the contents of a file or directory from a GitHub repository

ParametersTypeDescription
ownerstringRepository owner (username or organization)
repostringRepository name
pathstringoptionalPath to file/directory (directories must end with a slash '/')
refstringoptionalAccepts optional git refs such as refs/tags/{tag}, refs/heads/{branch} or refs/pull/{pr_number}/head
shastringoptionalAccepts optional commit SHA. If specified, it will be used instead of ref

This tool is read-only. It does not modify its environment.


Tool: get_issue

Get details of a specific issue in a GitHub repository.

ParametersTypeDescription
issue_numbernumberThe number of the issue
ownerstringThe owner of the repository
repostringThe name of the repository

This tool is read-only. It does not modify its environment.


Tool: get_issue_comments

Get comments for a specific issue in a GitHub repository.

ParametersTypeDescription
issue_numbernumberIssue number
ownerstringRepository owner
repostringRepository name
pagenumberoptionalPage number for pagination (min 1)
perPagenumberoptionalResults per page for pagination (min 1, max 100)

This tool is read-only. It does not modify its environment.


Tool: get_label

Get a specific label from a repository.

ParametersTypeDescription
namestringLabel name.
ownerstringRepository owner (username or organization name)
repostringRepository name

This tool is read-only. It does not modify its environment.


Tool: get_latest_release

Get the latest release in a GitHub repository

ParametersTypeDescription
ownerstringRepository owner
repostringRepository name

This tool is read-only. It does not modify its environment.


Tool: get_me

Get details of the authenticated GitHub user. Use this when a request is about the user's own profile for GitHub. Or when information is missing to build other tool calls.

Tool: get_release_by_tag

Get a specific release by its tag name in a GitHub repository

ParametersTypeDescription
ownerstringRepository owner
repostringRepository name
tagstringTag name (e.g., 'v1.0.0')

This tool is read-only. It does not modify its environment.


Tool: get_tag

Get details about a specific git tag in a GitHub repository

ParametersTypeDescription
ownerstringRepository owner
repostringRepository name
tagstringTag name

This tool is read-only. It does not modify its environment.


Tool: get_team_members

Get member usernames of a specific team in an organization. Limited to organizations accessible with current credentials

ParametersTypeDescription
orgstringOrganization login (owner) that contains the team.
team_slugstringTeam slug

This tool is read-only. It does not modify its environment.


Tool: get_teams

Get details of the teams the user is a member of. Limited to organizations accessible with current credentials

ParametersTypeDescription
userstringoptionalUsername to get teams for. If not provided, uses the authenticated user.

This tool is read-only. It does not modify its environment.


Tool: list_branches

List branches in a GitHub repository

ParametersTypeDescription
ownerstringRepository owner
repostringRepository name
pagenumberoptionalPage number for pagination (min 1)
perPagenumberoptionalResults per page for pagination (min 1, max 100)

This tool is read-only. It does not modify its environment.


Tool: list_commits

Get list of commits of a branch in a GitHub repository. Returns at least 30 results per page by default, but can return more if specified using the perPage parameter (up to 100).

ParametersTypeDescription
ownerstringRepository owner
repostringRepository name
authorstringoptionalAuthor username or email address to filter commits by
pagenumberoptionalPage number for pagination (min 1)
perPagenumberoptionalResults per page for pagination (min 1, max 100)
shastringoptionalCommit SHA, branch or tag name to list commits of. If not provided, uses the default branch of the repository. If a commit SHA is provided, will list commits up to that SHA.

This tool is read-only. It does not modify its environment.


Tool: list_issue_types

List supported issue types for repository owner (organization).

ParametersTypeDescription
ownerstringThe organization owner of the repository

This tool is read-only. It does not modify its environment.


Tool: list_issues

List issues in a GitHub repository. For pagination, use the 'endCursor' from the previous response's 'pageInfo' in the 'after' parameter.

ParametersTypeDescription
ownerstringRepository owner
repostringRepository name
afterstringoptionalCursor for pagination. Use the endCursor from the previous page's PageInfo for GraphQL APIs.
directionstringoptionalOrder direction. If provided, the 'orderBy' also needs to be provided.
labelsarrayoptionalFilter by labels
orderBystringoptionalOrder issues by field. If provided, the 'direction' also needs to be provided.
perPagenumberoptionalResults per page for pagination (min 1, max 100)
sincestringoptionalFilter by date (ISO 8601 timestamp)
statestringoptionalFilter by state, by default both open and closed issues are returned when not provided

This tool is read-only. It does not modify its environment.


Tool: list_label

List labels from a repository or an issue

ParametersTypeDescription
ownerstringRepository owner (username or organization name) - required for all operations
repostringRepository name - required for all operations
issue_numbernumberoptionalIssue number - if provided, lists labels on the specific issue

This tool is read-only. It does not modify its environment.


Tool: list_pull_requests

List pull requests in a GitHub repository. If the user specifies an author, then DO NOT use this tool and use the search_pull_requests tool instead.

ParametersTypeDescription
ownerstringRepository owner
repostringRepository name
basestringoptionalFilter by base branch
directionstringoptionalSort direction
headstringoptionalFilter by head user/org and branch
pagenumberoptionalPage number for pagination (min 1)
perPagenumberoptionalResults per page for pagination (min 1, max 100)
sortstringoptionalSort by
statestringoptionalFilter by state

This tool is read-only. It does not modify its environment.


Tool: list_releases

List releases in a GitHub repository

ParametersTypeDescription
ownerstringRepository owner
repostringRepository name
pagenumberoptionalPage number for pagination (min 1)
perPagenumberoptionalResults per page for pagination (min 1, max 100)

This tool is read-only. It does not modify its environment.


Tool: list_sub_issues

List sub-issues for a specific issue in a GitHub repository.

ParametersTypeDescription
issue_numbernumberIssue number
ownerstringRepository owner
repostringRepository name
pagenumberoptionalPage number for pagination (default: 1)
per_pagenumberoptionalNumber of results per page (max 100, default: 30)

This tool is read-only. It does not modify its environment.


Tool: list_tags

List git tags in a GitHub repository

ParametersTypeDescription
ownerstringRepository owner
repostringRepository name
pagenumberoptionalPage number for pagination (min 1)
perPagenumberoptionalResults per page for pagination (min 1, max 100)

This tool is read-only. It does not modify its environment.


Tool: merge_pull_request

Merge a pull request in a GitHub repository.

ParametersTypeDescription
ownerstringRepository owner
pullNumbernumberPull request number
repostringRepository name
commit_messagestringoptionalExtra detail for merge commit
commit_titlestringoptionalTitle for merge commit
merge_methodstringoptionalMerge method

Tool: pull_request_read

Get information on a specific pull request in GitHub repository.

ParametersTypeDescription
methodstringAction to specify what pull request data needs to be retrieved from GitHub.
Possible options:
  1. get - Get details of a specific pull request.
  2. get_diff - Get the diff of a pull request.
  3. get_status - Get status of a head commit in a pull request. This reflects status of builds and checks.
  4. get_files - Get the list of files changed in a pull request. Use with pagination parameters to control the number of results returned.
  5. get_review_comments - Get the review comments on a pull request. Use with pagination parameters to control the number of results returned.
  6. get_reviews - Get the reviews on a pull request. When asked for review comments, use get_review_comments method.

owner|string|Repository owner pullNumber|number|Pull request number repo|string|Repository name page|numberoptional|Page number for pagination (min 1) perPage|numberoptional|Results per page for pagination (min 1, max 100)

This tool is read-only. It does not modify its environment.


Tool: push_files

Push multiple files to a GitHub repository in a single commit

ParametersTypeDescription
branchstringBranch to push to
filesarrayArray of file objects to push, each object with path (string) and content (string)
messagestringCommit message
ownerstringRepository owner
repostringRepository name

Tool: remove_sub_issue

Remove a sub-issue from a parent issue in a GitHub repository.

ParametersTypeDescription
issue_numbernumberThe number of the parent issue
ownerstringRepository owner
repostringRepository name
sub_issue_idnumberThe ID of the sub-issue to remove. ID is not the same as issue number

Tool: reprioritize_sub_issue

Reprioritize a sub-issue to a different position in the parent issue's sub-issue list.

ParametersTypeDescription
issue_numbernumberThe number of the parent issue
ownerstringRepository owner
repostringRepository name
sub_issue_idnumberThe ID of the sub-issue to reprioritize. ID is not the same as issue number
after_idnumberoptionalThe ID of the sub-issue to be prioritized after (either after_id OR before_id should be specified)
before_idnumberoptionalThe ID of the sub-issue to be prioritized before (either after_id OR before_id should be specified)

Tool: request_copilot_review

Request a GitHub Copilot code review for a pull request. Use this for automated feedback on pull requests, usually before requesting a human reviewer.

ParametersTypeDescription
ownerstringRepository owner
pullNumbernumberPull request number
repostringRepository name

Tool: search_code

Fast and precise code search across ALL GitHub repositories using GitHub's native search engine. Best for finding exact symbols, functions, classes, or specific code patterns.

ParametersTypeDescription
querystringSearch query using GitHub's powerful code search syntax. Examples: 'content:Skill language:Java org:github', 'NOT is:archived language:Python OR language:go', 'repo:github/github-mcp-server'. Supports exact matching, language filters, path filters, and more.
orderstringoptionalSort order for results
pagenumberoptionalPage number for pagination (min 1)
perPagenumberoptionalResults per page for pagination (min 1, max 100)
sortstringoptionalSort field ('indexed' only)

This tool is read-only. It does not modify its environment.


Tool: search_issues

Search for issues in GitHub repositories using issues search syntax already scoped to is:issue

ParametersTypeDescription
querystringSearch query using GitHub issues search syntax
orderstringoptionalSort order
ownerstringoptionalOptional repository owner. If provided with repo, only issues for this repository are listed.
pagenumberoptionalPage number for pagination (min 1)
perPagenumberoptionalResults per page for pagination (min 1, max 100)
repostringoptionalOptional repository name. If provided with owner, only issues for this repository are listed.
sortstringoptionalSort field by number of matches of categories, defaults to best match

This tool is read-only. It does not modify its environment.


Tool: search_pull_requests

Search for pull requests in GitHub repositories using issues search syntax already scoped to is:pr

ParametersTypeDescription
querystringSearch query using GitHub pull request search syntax
orderstringoptionalSort order
ownerstringoptionalOptional repository owner. If provided with repo, only pull requests for this repository are listed.
pagenumberoptionalPage number for pagination (min 1)
perPagenumberoptionalResults per page for pagination (min 1, max 100)
repostringoptionalOptional repository name. If provided with owner, only pull requests for this repository are listed.
sortstringoptionalSort field by number of matches of categories, defaults to best match

This tool is read-only. It does not modify its environment.


Tool: search_repositories

Find GitHub repositories by name, description, readme, topics, or other metadata. Perfect for discovering projects, finding examples, or locating specific repositories across GitHub.

ParametersTypeDescription
querystringRepository search query. Examples: 'machine learning in:name stars:>1000 language:python', 'topic:react', 'user:facebook'. Supports advanced search syntax for precise filtering.
minimal_outputbooleanoptionalReturn minimal repository information (default: true). When false, returns full GitHub API repository objects.
orderstringoptionalSort order
pagenumberoptionalPage number for pagination (min 1)
perPagenumberoptionalResults per page for pagination (min 1, max 100)
sortstringoptionalSort repositories by field, defaults to best match

This tool is read-only. It does not modify its environment.


Tool: search_users

Find GitHub users by username, real name, or other profile information. Useful for locating developers, contributors, or team members.

ParametersTypeDescription
querystringUser search query. Examples: 'john smith', 'location:seattle', 'followers:>100'. Search is automatically scoped to type:user.
orderstringoptionalSort order
pagenumberoptionalPage number for pagination (min 1)
perPagenumberoptionalResults per page for pagination (min 1, max 100)
sortstringoptionalSort users by number of followers or repositories, or when the person joined GitHub.

This tool is read-only. It does not modify its environment.


Tool: submit_pending_pull_request_review

Submit the requester's latest pending pull request review, normally this is a final step after creating a pending review, adding comments first, unless you know that the user already did the first two steps, you should check before calling this.

ParametersTypeDescription
eventstringThe event to perform
ownerstringRepository owner
pullNumbernumberPull request number
repostringRepository name
bodystringoptionalThe text of the review comment

Tool: update_issue

Update an existing issue in a GitHub repository.

ParametersTypeDescription
issue_numbernumberIssue number to update
ownerstringRepository owner
repostringRepository name
assigneesarrayoptionalNew assignees
bodystringoptionalNew description
duplicate_ofnumberoptionalIssue number that this issue is a duplicate of. Only used when state_reason is 'duplicate'.
labelsarrayoptionalNew labels
milestonenumberoptionalNew milestone number
statestringoptionalNew state
state_reasonstringoptionalReason for the state change. Ignored unless state is changed.
titlestringoptionalNew title
typestringoptionalNew issue type

Tool: update_pull_request

Update an existing pull request in a GitHub repository.

ParametersTypeDescription
ownerstringRepository owner
pullNumbernumberPull request number to update
repostringRepository name
basestringoptionalNew base branch name
bodystringoptionalNew description
draftbooleanoptionalMark pull request as draft (true) or ready for review (false)
maintainer_can_modifybooleanoptionalAllow maintainer edits
reviewersarrayoptionalGitHub usernames to request reviews from
statestringoptionalNew state
titlestringoptionalNew title

Tool: update_pull_request_branch

Update the branch of a pull request with the latest changes from the base branch.

ParametersTypeDescription
ownerstringRepository owner
pullNumbernumberPull request number
repostringRepository name
expectedHeadShastringoptionalThe expected SHA of the pull request's HEAD ref

Use this MCP Server

{
  "mcpServers": {
    "github-official": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITHUB_PERSONAL_ACCESS_TOKEN",
        "ghcr.io/github/github-mcp-server"
      ],
      "env": {
        "GITHUB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>"
      }
    }
  }
}

Why is it safer to run MCP Servers with Docker?⁠

Manual installation

You can install the MCP server using:

​

Installation for

Related servers

© 2025 Docker, Inc. All rights reserved. | Terms of Service | Subscription Service Agreement | Privacy | Legal