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.

40 Tools

Requires Secrets
Add to Docker Desktop

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

OverviewTools (40)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. Use this tool to add comments to pull requests as well (in this case pass pull request number as issue_number), but only if user is not asking specifically to add review comments.

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 a new branch 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 new pull request in a GitHub repository.

Create a new GitHub repository in your account or specified organization

Delete a file from a GitHub repository

Fork a GitHub repository to your account or specified organization

Get details for a commit from 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 Info

AttributeDetails
Dockerfilehttps://github.com/github/github-mcp-server/blob/23fa0dd1a821d1346c1de2abafe7327d26981606/Dockerfile⁠
Docker Image built bygithub
Docker Scout Health ScoreNot available
Verify SignatureNot available
LicenceMIT License

Available Tools (40)

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
assign_copilot_to_issueAssign Copilot to issue
create_branchCreate branch
create_or_update_fileCreate or update file
create_pull_requestOpen new pull request
create_repositoryCreate repository
delete_fileDelete file
fork_repositoryFork repository
get_commitGet commit details
get_file_contentsGet file or directory contents
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
issue_readGet issue details
issue_writeCreate or update issue.
list_branchesList branches
list_commitsList commits
list_issue_typesList available issue types
list_issuesList issues
list_pull_requestsList pull requests
list_releasesList releases
list_tagsList tags
merge_pull_requestMerge pull request
pull_request_readGet details for a single pull request
pull_request_review_writeWrite operations (create, submit, delete) on pull request reviews.
push_filesPush files to repository
request_copilot_reviewRequest Copilot review
search_codeSearch code
search_issuesSearch issues
search_pull_requestsSearch pull requests
search_repositoriesSearch repositories
search_usersSearch users
sub_issue_writeChange sub-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. Use this tool to add comments to pull requests as well (in this case pass pull request number as issue_number), but only if user is not asking specifically to add review comments.

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

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_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_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_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: 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_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: issue_read

Get information about a specific issue in a GitHub repository.

ParametersTypeDescription
issue_numbernumberThe number of the issue
methodstringThe read operation to perform on a single issue.
Options are:
  1. get - Get details of a specific issue.
  2. get_comments - Get issue comments.
  3. get_sub_issues - Get sub-issues of the issue.
  4. get_labels - Get labels assigned to the issue.

owner|string|The owner of the repository repo|string|The name of the repository 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: issue_write

Create a new or update an existing issue in a GitHub repository.

ParametersTypeDescription
methodstringWrite operation to perform on a single issue.
Options are:
  • 'create' - creates a new issue.
  • 'update' - updates an existing issue.

owner|string|Repository owner repo|string|Repository name assignees|arrayoptional|Usernames to assign to this issue body|stringoptional|Issue body content duplicate_of|numberoptional|Issue number that this issue is a duplicate of. Only used when state_reason is 'duplicate'. issue_number|numberoptional|Issue number to update labels|arrayoptional|Labels to apply to this issue milestone|numberoptional|Milestone number state|stringoptional|New state state_reason|stringoptional|Reason for the state change. Ignored unless state is changed. title|stringoptional|Issue title type|stringoptional|Type of this issue. Only use if the repository has issue types configured. Use list_issue_types tool to get valid type values for the organization. If the repository doesn't support issue types, omit this parameter.


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_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_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. They are comments made on a portion of the unified diff during a pull request review. 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.
  7. get_comments - Get comments on a pull request. Use this if user doesn't specifically want review comments. Use with pagination parameters to control the number of results returned.

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: pull_request_review_write

Create and/or submit, delete review of a pull request.

Available methods:

  • create: Create a new review of a pull request. If "event" parameter is provided, the review is submitted. If "event" is omitted, a pending review is created.
  • submit_pending: Submit an existing pending review of a pull request. This requires that a pending review exists for the current user on the specified pull request. The "body" and "event" parameters are used when submitting the review.
  • delete_pending: Delete an existing pending review of a pull request. This requires that a pending review exists for the current user on the specified pull request. Parameters|Type|Description -|-|- method|string|The write operation to perform on pull request review. owner|string|Repository owner pullNumber|number|Pull request number repo|string|Repository name body|stringoptional|Review comment text commitID|stringoptional|SHA of commit to review event|stringoptional|Review action to perform.

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: 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: sub_issue_write

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

ParametersTypeDescription
issue_numbernumberThe number of the parent issue
methodstringThe action to perform on a single sub-issue
Options are:
  • 'add' - add a sub-issue to a parent issue in a GitHub repository.
  • 'remove' - remove a sub-issue from a parent issue in a GitHub repository.
  • 'reprioritize' - change the order of sub-issues within a parent issue in a GitHub repository. Use either 'after_id' or 'before_id' to specify the new position.

owner|string|Repository owner repo|string|Repository name sub_issue_id|number|The ID of the sub-issue to add. ID is not the same as issue number after_id|numberoptional|The ID of the sub-issue to be prioritized after (either after_id OR before_id should be specified) before_id|numberoptional|The ID of the sub-issue to be prioritized before (either after_id OR before_id should be specified) replace_parent|booleanoptional|When true, replaces the sub-issue's current parent issue. Use with 'add' method only.


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