* docs: lead local/stdio install with OAuth login Surface OAuth 2.1 login as a first-class option above the Personal Access Token in the README install section and in every local-capable installation guide, each in that client's own config syntax, linking to the dedicated docs/oauth-login.md guide. The github.com OAuth example needs no token; in Docker it publishes a fixed callback port to loopback (-p 127.0.0.1:8085:8085). The PAT block is retained below it and noted as taking precedence over OAuth. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * docs(oauth): correct PKCE/client-secret explanation The previous "How it works" text claimed PKCE removes the need for a client secret. In practice GitHub requires the client secret at the token endpoint for both OAuth Apps and GitHub Apps, and the implementation sends it alongside the PKCE verifier (Manager.oauth2Config populates ClientSecret; flow.go exchanges with VerifierOption). The secret is baked into the distributed binary and is not truly confidential; PKCE is what actually secures the flow. Reword to reflect this accurately. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * docs: don't frame OAuth login as github.com-only The intro line said "On github.com you can skip the token entirely", which implied OAuth login only works on github.com. OAuth works on GitHub Enterprise too — you just supply your own app credentials there. Reword to lead with OAuth as the mechanism and scope the zero-config claim correctly: on github.com the official image already includes the app credentials, so the user provides none. Enterprise / bring-your-own-app is covered by the linked OAuth guide. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
5.1 KiB
Install GitHub MCP Server in Cursor
Prerequisites
- Cursor IDE installed (latest version)
- GitHub Personal Access Token with appropriate scopes
- For local installation: Docker installed and running
Remote Server Setup (Recommended)
Uses GitHub's hosted server at https://api.githubcopilot.com/mcp/. Requires Cursor v0.48.0+ for Streamable HTTP support. While Cursor supports OAuth for some MCP servers, the GitHub server currently requires a Personal Access Token.
Install steps
- Click the install button above and follow the flow, or go directly to your global MCP configuration file at
~/.cursor/mcp.jsonand enter the code block below - In Tools & Integrations > MCP tools, click the pencil icon next to "github"
- Replace
YOUR_GITHUB_PATwith your actual GitHub Personal Access Token - Save the file
- Restart Cursor
Streamable HTTP Configuration
{
"mcpServers": {
"github": {
"url": "https://api.githubcopilot.com/mcp/",
"headers": {
"Authorization": "Bearer YOUR_GITHUB_PAT"
}
}
}
}
Local Server Setup
The local GitHub MCP server runs via Docker and requires Docker Desktop to be installed and running.
Install steps
- Click the install button above and follow the flow, or go directly to your global MCP configuration file at
~/.cursor/mcp.jsonand enter the code block below - In Tools & Integrations > MCP tools, click the pencil icon next to "github"
- Replace
YOUR_GITHUB_PATwith your actual GitHub Personal Access Token - Save the file
- Restart Cursor
Docker Configuration
Log in with OAuth instead of a token. On github.com the official image already includes the app credentials, so you provide none yourself — the server opens a browser login on first use and keeps the token in memory only. In Docker, publish a fixed callback port to loopback:
{
"mcpServers": {
"github": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-p",
"127.0.0.1:8085:8085",
"-e",
"GITHUB_OAUTH_CALLBACK_PORT",
"ghcr.io/github/github-mcp-server"
],
"env": {
"GITHUB_OAUTH_CALLBACK_PORT": "8085"
}
}
}
}
See Local Server OAuth Login for the native-binary flow (no fixed port), headless/device-code fallback, GitHub Enterprise, and bringing your own OAuth or GitHub App.
To authenticate with a Personal Access Token instead (it takes precedence over OAuth):
{
"mcpServers": {
"github": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"GITHUB_PERSONAL_ACCESS_TOKEN",
"ghcr.io/github/github-mcp-server"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "YOUR_GITHUB_PAT"
}
}
}
}
Important
: The npm package
@modelcontextprotocol/server-githubis no longer supported as of April 2025. Use the official Docker imageghcr.io/github/github-mcp-serverinstead.
Configuration Files
- Global (all projects):
~/.cursor/mcp.json - Project-specific:
.cursor/mcp.jsonin project root
Verify Installation
- Restart Cursor completely
- Check for green dot in Settings → Tools & Integrations → MCP Tools
- In chat/composer, check "Available Tools"
- Test with: "List my GitHub repositories"
Troubleshooting
Remote Server Issues
- Streamable HTTP not working: Ensure you're using Cursor v0.48.0 or later
- Authentication failures: Verify PAT has correct scopes
- Connection errors: Check firewall/proxy settings
Local Server Issues
- Docker errors: Ensure Docker Desktop is running
- Image pull failures: Try
docker logout ghcr.iothen retry - Docker not found: Install Docker Desktop and ensure it's running
General Issues
- MCP not loading: Restart Cursor completely after configuration
- Invalid JSON: Validate that json format is correct
- Tools not appearing: Check server shows green dot in MCP settings
- Check logs: Look for MCP-related errors in Cursor logs
Important Notes
- Docker image:
ghcr.io/github/github-mcp-server(official and supported) - npm package:
@modelcontextprotocol/server-github(deprecated as of April 2025 - no longer functional) - Cursor specifics: Supports both project and global configurations, uses
mcpServerskey