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.
| Tool | What it is for |
|---|---|
add_comment_to_pending_review | Adds a line comment to a review you have started but not sent. |
add_issue_comment | Posts a comment on an issue or pull request. |
add_reply_to_pull_request_comment | Replies inside an existing review comment thread. |
assign_copilot_to_issue | Hands an issue to GitHub's Copilot coding agent to work on. |
create_branch | Makes a new branch from an existing one. |
create_or_update_file | Writes one file to a branch as a new commit. |
create_pull_request | Opens a pull request between two branches. |
create_repository | Creates a new repository under your account or an organisation. |
delete_file | Removes a file from a branch with a commit. |
fork_repository | Forks a repository to your account or an organisation. |
issue_write | Opens a new issue or edits, labels, assigns or closes an existing one. |
merge_pull_request | Merges a pull request by merge, squash or rebase. |
pull_request_review_write | Starts, submits or deletes a review on a pull request. |
push_files | Commits several files to a branch in one go. |
request_copilot_review | Asks Copilot to review a pull request. |
sub_issue_write | Adds, removes or reorders sub-issues under a parent issue. |
update_issue_comment | Edits a comment you posted. |
update_pull_request | Changes a pull request's title, body, base branch, state or reviewers. |
update_pull_request_branch | Brings a pull request branch up to date with its base. |
Only reads27 tools · Looks things up and changes nothing.
| Tool | What it is for |
|---|---|
get_commit | Shows one commit with its message and changed files. |
get_file_contents | Reads a file, or lists a folder, at any branch or commit. |
get_label | Looks up one label in a repository. |
get_latest_release | Finds the newest published release. |
get_me | Shows which GitHub account the token belongs to. |
get_release_by_tag | Finds a release by its tag. |
get_tag | Shows the details of one git tag. |
get_team_members | Lists the people in an organisation team. |
get_teams | Lists the teams you belong to. |
issue_read | Reads an issue, its comments, labels or sub-issues. |
list_branches | Lists a repository's branches. |
list_commits | Lists recent commits on a branch, optionally by author. |
list_issue_fields | Lists the custom issue fields an organisation has set up. |
list_issue_types | Lists the issue types an organisation uses, such as bug or task. |
list_issues | Lists issues with filters for state, labels and dates. |
list_pull_requests | Lists pull requests with filters for state and branch. |
list_releases | Lists a repository's releases. |
list_repository_collaborators | Lists people with access to a repository. |
list_tags | Lists a repository's git tags. |
pull_request_read | Reads a pull request: its diff, files, reviews, comments or check status. |
search_code | Searches code across GitHub with GitHub's search syntax. |
search_commits | Searches commit messages and authors. |
search_issues | Searches issues across repositories. |
search_pull_requests | Searches pull requests across repositories. |
search_repositories | Finds repositories by name, topic, language and more. |
search_users | Finds GitHub users and organisations. |
ui_get | Fetches 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)
{
"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.
Where it goes: Your terminal, in the project folder
claude mcp add --transport http github https://api.githubcopilot.com/mcp/ --header "Authorization: Bearer YOUR_API_KEY"Where it goes: ~/.cursor/mcp.json, or .cursor/mcp.json in a project
{
"mcpServers": {
"github": {
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}Where it goes: .vscode/mcp.json in your project
{
"servers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}Where it goes: ~/.codeium/windsurf/mcp_config.json
{
"mcpServers": {
"github": {
"serverUrl": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer YOUR_API_KEY"
}
}
}
}Where it goes: Settings → Apps & Connectors → create a connector
https://api.githubcopilot.com/mcp/Paste the URL as the connector address and sign in if asked.
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.
| Setting | What it does |
|---|---|
https://api.githubcopilot.com/mcp/Config | The 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 · required | Your 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 variable | Turns 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 variable | Turns on individual tools by name, on top of any toolsets.get_file_contents,create_pull_request |
GITHUB_READ_ONLY / --read-onlyEnvironment variable | Offers only tools that read. Write tools are skipped even if you ask for them.1 |
--lockdown-modeCommand line flag | Hides 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 variable | Points 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.
| Server | Tools | Runs on | Licence | Stars |
|---|---|---|---|---|
| GitHub | 46 | Hosted | – | 34K |
| MCP Inspector | – | Your computer | – | 11.2K |
| XcodeBuildMCP | 24 | Your computer | MIT | 6.5K |
| Peekaboo | 3 | Your computer | MIT | 5.4K |
| Kubernetes MCP Server | 14 | Your computer | Apache-2.0 | 2.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.
Something wrong on this page? Tell us.
