GitHub official MCP server
Last verified: 2026-09
GitHub's own MCP server (Go), remote or local.
Community Developer tools Needs a secret Claude Desktop, Cursor, Windsurf
What it does
GitHub's maintained Go MCP server. Remote at api.githubcopilot.com/mcp/ or a local binary. Prefer this over the older npm @modelcontextprotocol/server-github. Tool set is large (repos, issues, PRs, Actions, code search) and still changing.
It sits in Developer tools: Split this category in two.
Good for
- Remote URL at api.githubcopilot.com/mcp/ plus a PAT — no local binary.
- Issues, PRs, Actions logs, and code search on repos the token can see.
- Open a PR from the chat after a read-only week.
- Rerun a workflow only when you meant to spend CI minutes.
Tools
- get_file_contents / create_or_update_file / push_files — Read and write repo files.
- list_issues / create_issue / update_issue / add_issue_comment — Issues.
- create_pull_request / get_pull_request / merge_pull_request / pull_request_review — PRs.
- list_commits / search_code / search_repositories — History and search.
- list_workflow_runs / rerun_workflow / get_job_logs — Actions.
Config (Claude Desktop / Cursor / Windsurf)
Paste the JSON below. Same mcpServers shape. Replace placeholder paths and secrets.
Windows paths look like C:\\Users\\you\\project, not /path/to.
Host-side steps →
Claude Desktop
| OS | Config file |
|---|---|
| macOS | ~/Library/Application Support/Claude/claude_desktop_config.json |
| Windows | %APPDATA%\Claude\claude_desktop_config.json
(usually C:\Users\<you>\AppData\Roaming\Claude\) |
| Linux | ~/.config/Claude/claude_desktop_config.json |
Cursor
| Scope | macOS / Linux | Windows |
|---|---|---|
| This project | .cursor/mcp.json in the repo root | |
| This user | ~/.cursor/mcp.json |
%USERPROFILE%\.cursor\mcp.json |
Windsurf
| OS | Config file |
|---|---|
| macOS / Linux | ~/.codeium/windsurf/mcp_config.json |
| Windows | %USERPROFILE%\.codeium\windsurf\mcp_config.json |
{
"mcpServers": {
"github_official": {
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer $GITHUB_PERSONAL_ACCESS_TOKEN"
}
}
}
}
Windsurf remote MCP: use serverUrl instead of url if the block below is HTTP.
One-liner: https://api.githubcopilot.com/mcp/
Secrets it wants: GITHUB_PERSONAL_ACCESS_TOKEN
How to get started
- Easiest: remote URL plus a PAT in Authorization.
- Or run the GitHub-hosted binary as command/args.
- Start with read-only scopes. Add write when you want the model to open PRs.
Access risk
Same as any GitHub token: the model can do whatever the token can. Remote mode sends traffic to GitHub.
When to skip it
Skip it if the npm GitHub server already does what you need and you do not want to redo auth.
Vs alternatives
| Server | Official? | Needs a secret? | Best for |
|---|---|---|---|
| GitHub official | No | Yes | GitHub's own MCP server (Go), remote or local. |
| GitHub | Yes | Yes | Repos, issues, PRs, and file contents on GitHub. |
| Git | Yes | No | Read a local git repo: log, diff, status. |
| GitLab | Yes | Yes | Projects, issues, and merge requests on GitLab. |
More in Developer tools
FAQ
Remote or local binary?
Remote is easiest (URL + Authorization). Local is the github-mcp-server binary from GitHub.
Why not the npm server?
This is the maintained Go server. Larger tool set. Prefer it for new installs.
What scopes?
Read-only on the repos you care about. Add pull_requests write when you want the model to open PRs.
Does remote send my code to GitHub?
Tool calls go to GitHub's MCP endpoint. That is the trade for not running a binary.