Skip to content
MCP Shelf

GitHub's own server for repos, issues, pull requests and Actions.

  • Needs your setup first
  • ★ 34K GitHub stars
  • Last commit 23 Oct 2026

At a glance

This is the server GitHub maintains. Through it an assistant can browse code, open and comment on issues and pull requests, check Actions runs and search across repositories you can see.

GitHub hosts it, so most people never install anything: point the client at the URL and authenticate. A Docker image exists for anyone who needs to run it themselves.

Made by
GitHub
GitHub stars
34K
Last commit
23 Oct 2026
Tools
46
Runs on
Hosted

Our check: It needs something our Linux test machine does not have (an account, a desktop app, a Mac or a running service), so on 26 Oct 2026 we listed its tools from its package instead of running this config.

What's in the pod: its tools

We found 46 tools when we ran its package, before any sign-in or app was connected, on 26 Oct 2026. 27 only read. The rest can change things, so keep your app's "ask before each tool call" setting on for them.

How we tested it: Listed by the official github-mcp-server binary built from source with its default toolsets, without a real token. The hosted URL on this page serves the same toolsets after you sign in.

Changes things19 tools · Can create, edit, send or delete.

ToolWhat it is for
add_comment_to_pending_reviewAdds a line comment to a review you have started but not sent.
add_issue_commentPosts a comment on an issue or pull request.
add_reply_to_pull_request_commentReplies inside an existing review comment thread.
assign_copilot_to_issueHands an issue to GitHub's Copilot coding agent to work on.
create_branchMakes a new branch from an existing one.
create_or_update_fileWrites one file to a branch as a new commit.
create_pull_requestOpens a pull request between two branches.
create_repositoryCreates a new repository under your account or an organisation.
delete_fileRemoves a file from a branch with a commit.
fork_repositoryForks a repository to your account or an organisation.
issue_writeOpens a new issue or edits, labels, assigns or closes an existing one.
merge_pull_requestMerges a pull request by merge, squash or rebase.
pull_request_review_writeStarts, submits or deletes a review on a pull request.
push_filesCommits several files to a branch in one go.
request_copilot_reviewAsks Copilot to review a pull request.
sub_issue_writeAdds, removes or reorders sub-issues under a parent issue.
update_issue_commentEdits a comment you posted.
update_pull_requestChanges a pull request's title, body, base branch, state or reviewers.
update_pull_request_branchBrings a pull request branch up to date with its base.

Only reads27 tools · Looks things up and changes nothing.

ToolWhat it is for
get_commitShows one commit with its message and changed files.
get_file_contentsReads a file, or lists a folder, at any branch or commit.
get_labelLooks up one label in a repository.
get_latest_releaseFinds the newest published release.
get_meShows which GitHub account the token belongs to.
get_release_by_tagFinds a release by its tag.
get_tagShows the details of one git tag.
get_team_membersLists the people in an organisation team.
get_teamsLists the teams you belong to.
issue_readReads an issue, its comments, labels or sub-issues.
list_branchesLists a repository's branches.
list_commitsLists recent commits on a branch, optionally by author.
list_issue_fieldsLists the custom issue fields an organisation has set up.
list_issue_typesLists the issue types an organisation uses, such as bug or task.
list_issuesLists issues with filters for state, labels and dates.
list_pull_requestsLists pull requests with filters for state and branch.
list_releasesLists a repository's releases.
list_repository_collaboratorsLists people with access to a repository.
list_tagsLists a repository's git tags.
pull_request_readReads a pull request: its diff, files, reviews, comments or check status.
search_codeSearches code across GitHub with GitHub's search syntax.
search_commitsSearches commit messages and authors.
search_issuesSearches issues across repositories.
search_pull_requestsSearches pull requests across repositories.
search_repositoriesFinds repositories by name, topic, language and more.
search_usersFinds GitHub users and organisations.
ui_getFetches data the server's interactive views need, in clients that show them.

Tool groups

repos
Browse files, branches, commits and tags; create or update files and branches.
issues
Search, read, open, comment on and close issues.
pull_requests
Read diffs and reviews, open pull requests, comment, request reviews and merge.
actions
List workflow runs, read job logs, re-run or cancel runs.
code_security
Read code scanning alerts.
secret_protection
Read secret scanning alerts.
dependabot
Read Dependabot alerts.
discussions
Read and search repository discussions.
notifications
Read and dismiss your GitHub notifications.
projects
Read and update GitHub Projects boards.
gists
Read and create gists.
users / orgs
Look up people and organisations.
all
Turns on every toolset at once.

Grouped and described by us. The README on GitHub lists the inputs each tool takes.

Set it up

Pick your app for the exact snippet and where it goes.

Where it goes: claude_desktop_config.json (Settings → Developer → Edit Config)

Claude Desktop
{
  "mcpServers": {
    "github": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "https://api.githubcopilot.com/mcp/",
        "--header",
        "Authorization: Bearer YOUR_API_KEY"
      ]
    }
  }
}

The config file only runs local commands, so mcp-remote (needs Node.js) connects to the URL for Claude.

Swap YOUR_API_KEY for a fine-grained token limited to the repositories and permissions you actually want the assistant to use.

New to this? See the setup guides for Claude Code, Cursor, Claude Desktop and ChatGPT.

Settings

Names are exactly as the project spells them. Required ones are marked.

SettingWhat it does
https://api.githubcopilot.com/mcp/ConfigThe hosted server. Sign in with GitHub in apps that support OAuth, or send a token as a header."url": "https://api.githubcopilot.com/mcp/"
GITHUB_PERSONAL_ACCESS_TOKENEnvironment variable · requiredYour token for the local (Docker) version. Give it only the repository permissions you are happy for an assistant to use.github_pat_xxxxxxxx
GITHUB_TOOLSETS / --toolsetsEnvironment variableTurns on only the groups of tools you list. Fewer tools means better tool choice and a smaller prompt.repos,issues,pull_requests
GITHUB_TOOLS / --toolsEnvironment variableTurns on individual tools by name, on top of any toolsets.get_file_contents,create_pull_request
GITHUB_READ_ONLY / --read-onlyEnvironment variableOffers only tools that read. Write tools are skipped even if you ask for them.1
--lockdown-modeCommand line flagHides content on public repositories written by people without push access, to cut the risk of prompt injection from strangers' issues and comments.--lockdown-mode
GITHUB_HOST / --gh-hostEnvironment variablePoints the server at GitHub Enterprise Server or a ghe.com domain.https://github.example.com

What it can touch

It can read

  • Every repository, issue, pull request and Actions log your token or sign-in can see, private ones included

It can change

  • Can push files, open and merge pull requests, comment, close issues and re-run workflows, as you

Safer setup: Start with read-only mode, use a fine-grained token limited to the repositories you name, and turn on lockdown mode if the assistant reads public issues from strangers.

Before you start

  • A GitHub account
  • A fine-grained personal access token, or OAuth in clients that support it

If it does not work

401 Bad credentials
The token is wrong or expired, or the variable is not reaching the container. With Docker, pass it with -e GITHUB_PERSONAL_ACCESS_TOKEN as well as in env.
The assistant picks odd tools or the prompt is very long
Limit the toolsets to what you use, for example repos,issues,pull_requests.
Your app cannot sign in to the hosted server
Not every app supports GitHub's OAuth flow yet. Send a token as an Authorization: Bearer header instead, or run the Docker version.
403 on an organisation's repositories
The organisation may require approval for fine-grained tokens or SSO authorisation. Approve the token in the organisation's settings.

Peas in a pod: similar servers

How GitHub lines up against other developer tools servers on the shelf.

ServerToolsRuns onLicenceStars
GitHub46Hosted–34K
MCP Inspector–Your computer–11.2K
XcodeBuildMCP24Your computerMIT6.5K
Peekaboo3Your computerMIT5.4K
Kubernetes MCP Server14Your computerApache-2.02.2K

Questions

Is this GitHub's official MCP server?

Yes. GitHub builds and maintains it, and also runs the hosted version at api.githubcopilot.com/mcp.

Should I use the hosted or the local version?

Hosted is simplest: no Docker, sign in with GitHub, always up to date, and it works in ChatGPT. Run it locally when you need GitHub Enterprise Server or want the token to stay on your machine.

Can I stop it from changing anything?

Yes. Read-only mode only offers tools that read, and a fine-grained token with read permissions enforces the same limit on GitHub's side.

Does it need GitHub Copilot?

No. Any GitHub account works. A few extra toolsets on the hosted server relate to Copilot features.

Full docs on GitHubgithub/github-mcp-server

Something wrong on this page? Tell us.

More in Developer tools