
GitHub MCP Server: install, 92 tools and safe setup
Lets Claude, Cursor or Copilot in VS Code read your code, open pull requests and sort issues in your GitHub repos.
This is GitHub's official connector for AI assistants. You can ask your assistant to search your code, open and merge pull requests, sort issues or check why a build failed. It acts as you on GitHub, so start in read-only mode with an access key that reaches only the repos you need.
Good for
- Developers who want their AI coding assistant to open pull requests, sort issues or read build logs from the chat
- VS Code and Copilot users, who can set it up in one click and sign in with GitHub
- Teams on GitHub Enterprise Server, who can run it on their own machine and point it at their server
- Security engineers who want to review code scanning, Dependabot and secret scanning alerts by asking
Works in
11 supported · 1 with issues · 1 should work
Tap an app to see how to set it up and any known problems.
GitHub's guide covers the hosted server with a token header, or running it locally with Docker or the binary.
Known problems
- Closed
Signing in to the hosted server with OAuth fails with a client registration error
Reported Jul 2026 · GitHub
GitHub's guide covers the hosted server with a token, a one-click link, or local Docker. Cursor's OAuth sign-in does not work with it yet. GitHub
GitHub's guide covers the hosted server with GitHub sign-in or a token, plus a one-click install. The only client listed with full hosted sign-in. GitHub
Hosted server with a token via serverUrl, the plugin store, or local Docker. Use the global config; env vars are not expanded. GitHub
Hosted server with a bearer token read from an env var, or local Docker. One config serves both Codex CLI and the IDE extension. GitHub
An official Gemini extension is available. The hosted server with a token, local Docker or the binary also work. GitHub
Comes pre-installed with read-only tools on by default. You can also use the hosted server with a token, or run it locally. GitHub
Hosted server with a token. Set type to streamableHttp, or Cline falls back to SSE and gets a 405 error. Local Docker also works. GitHub
Hosted server with a token under context_servers, or local Docker. Without the Authorization header Zed tries OAuth, which is not offered. GitHub
Covered for the GitHub Copilot plugin: hosted server with a token (no OAuth yet) or local Docker. JetBrains AI Assistant is not covered. GitHub
Hosted server with a token and oauth set to false, or local Docker. GitHub warns it adds many tokens to context. GitHub
GitHub documents only the local Docker setup and flags some Docker problems. Users report the hosted URL also works as a custom connector.
Known problems
- Open
Forms for write tools, such as creating an issue, collapse right away so you cannot submit them
Workaround: Run the local server with --features mcp_apps_disable_form_deferral so write tools run directly.
Since Oct 2026 · GitHub
GitHub has no install guide for ChatGPT. One Hacker News user says they use ChatGPT with this server on a few of their repos. Hacker News
No documentation or user reports found.
Install GitHub MCP
Claude Code
- 1
Copy this prompt.
Add the GitHub MCP server to Claude Code. Run this command: claude mcp add-json github '{"type":"http","url":"https://api.githubcopilot.com/mcp","headers":{"Authorization":"Bearer YOUR_GITHUB_PAT"}}' Then check that it loaded and tell me if I need to sign in or restart. - 2
Paste it into Claude Code. It shows the change and asks before running it.
Requires GitHub personal access token, Claude Code 2.1.1+.
Read-only mode: Want it to only read, never change anything? Use https://api.githubcopilot.com/mcp/readonly as the server address. If you run it on your own computer, add GITHUB_READ_ONLY=1 to its settings instead.
GitHub's guide lists the hosted server for Claude Code as PAT only (no OAuth). Run the command in your terminal, not inside a Claude Code session, then check with claude mcp list. Add --scope user to use it in every project. On Windows, if add-json returns Invalid input, use the older claude mcp add --transport http form.
From the project README. Source.
Tools
Searches code across GitHub to find where something is used
Searches code across GitHub with GitHub's code search syntax.
Try: “Find where parseToken is defined in the acme org.”
Read ·
search_codeReads a file or lists a folder in a repo, at any branch, tag or commit
Reads a file or lists a directory at a branch, tag or commit.
Try: “Open src/auth.ts in acme/web and explain the login flow.”
Read ·
get_file_contentsShows the full file and folder layout of a repo
Returns a repo's file tree at a ref, optionally recursive and filtered by path.
Try: “Show the full file tree under src/ in acme/web.”
Read ·
get_repository_treeFinds repos by name, topic, language or stars
Searches repositories by name, topic, language, stars and more.
Try: “Find Python repos about MCP servers with more than 1,000 stars.”
Read ·
search_repositoriesLists a repo's issues, filtered by state, label or date
Lists issues in a repo with filters for state, labels, date and custom fields.
Try: “List open bugs in acme/web updated this week.”
Read ·
list_issuesReads an issue with its comments, labels and sub-issues
Reads one issue: details, comments, sub-issues, parent issue or labels.
Try: “Summarize issue #128 in acme/web and its comments.”
Read ·
issue_readSearches issues across repos in plain words
Searches issues across repositories in natural language.
Try: “Find open issues about rate limits in the acme org.”
Read ·
search_issuesOpens a new issue or edits one: title, labels, assignees, status
Creates a new issue or updates one: title, body, labels, assignees, milestone, state, type and fields.
Try: “Open an issue in acme/web titled 'Login times out on Safari' and label it bug.”
Write ·
issue_writePosts a comment or emoji reaction on an issue or pull request
Posts a comment, or an emoji reaction, on an issue or pull request.
Try: “Comment on issue #42 in acme/web that the fix ships in v1.5.”
Write ·
add_issue_commentEdits a comment you posted on an issue or pull request
Edits an existing comment on an issue or pull request.
Try: “Edit my last comment on issue #42 to fix the version number.”
Write ·
update_issue_commentAdds, removes or reorders sub-issues under a parent issue
Adds, removes or reorders sub-issues under a parent issue.
Try: “Make issue #57 a sub-issue of #40 in acme/web.”
Write ·
sub_issue_writeLists a repo's pull requests, filtered by state or branch
Lists pull requests in a repo, filterable by state, base and head branch.
Try: “List open pull requests in acme/web.”
Read ·
list_pull_requestsReads a pull request: changes, files, commits, reviews and checks
Reads one pull request: details, diff, status, changed files, commits, review threads, reviews, comments or check runs.
Try: “Show me the diff and failing checks for PR #77 in acme/web.”
Read ·
pull_request_readSearches pull requests across repos
Searches pull requests across repositories.
Try: “Find my open PRs across all repos that are waiting for review.”
Read ·
search_pull_requestsOpens a pull request from one branch into another
Opens a new pull request from one branch into another.
Try: “Open a PR from fix/login-timeout into main in acme/web.”
Write ·
create_pull_requestEdits a pull request: title, description, status, draft or reviewers
Edits a pull request: title, body, state, base branch, draft status or reviewers.
Try: “Change the title of PR #77 and request a review from @sam.”
Write ·
update_pull_requestCreates, submits or deletes a review and resolves review threads
Creates, submits or deletes a review on a pull request, and resolves or unresolves review threads.
Try: “Approve PR #77 in acme/web with the comment 'Looks good'.”
Write ·
pull_request_review_writeAdds a line comment to your review before you submit it
Adds a line comment to your own pending (not yet submitted) review on a pull request.
Try: “In my pending review of PR #77, comment on line 30 of api.go that this needs a nil check.”
Write ·
add_comment_to_pending_reviewReplies to a review comment on a pull request
Replies to an existing review comment on a pull request.
Try: “Reply to the reviewer's comment on PR #77 that I moved the check into a helper.”
Write ·
add_reply_to_pull_request_commentBrings a pull request branch up to date with its base
Brings a pull request branch up to date with its base branch.
Try: “Update PR #77's branch with the latest main.”
Write ·
update_pull_request_branchMerges a pull request (merge, squash or rebase)
Merges a pull request with merge, squash or rebase, optionally only if the head commit matches.
Try: “Squash-merge PR #77 in acme/web.”
Write ·
merge_pull_requestReads build logs, including every failed job in a run
Gets logs for one job, or for every failed job in a run, optionally just the last lines.
Try: “Why did the latest CI run fail in acme/web? Show the failing job logs.”
Read ·
get_job_logsLists your workflows, their runs, jobs and saved build files
Lists workflows, workflow runs, jobs in a run, or artifacts of a run.
Try: “List the last failed runs of ci.yml in acme/web.”
Read ·
actions_listShows one workflow, run, job or build file in detail
Gets one Actions resource: a workflow, a run, its usage, a job, a log download URL or an artifact.
Try: “Show details of workflow run 123456 in acme/web.”
Read ·
actions_getStarts, re-runs or cancels a workflow, or deletes a run's logs
Starts a workflow, re-runs a run or only its failed jobs, cancels a run, or deletes a run's logs.
Try: “Run the deploy.yml workflow on main in acme/web.”
Delete ·
actions_run_triggerLists recent commits on a branch, newest first
Lists commits on a branch, newest first.
Try: “Show the last 10 commits on main in acme/web.”
Read ·
list_commitsShows one commit: message, author, changed files and diff
Shows one commit: message, author, changed files and diff.
Try: “Show me what commit a1b2c3d changed in acme/web.”
Read ·
get_commitSearches commit messages and details
Searches commit messages and metadata.
Try: “Find commits mentioning CVE-2025 in acme/web.”
Read ·
search_commitsSaves one file to a branch as a commit
Writes one file to a branch as a commit. Changing a workflow file also needs the workflow scope.
Try: “Update README.md on the docs branch of acme/web to add an install section.”
Write ·
create_or_update_fileCommits several files to a branch in one go
Commits several files to a branch in one push. Workflow files also need the workflow scope.
Try: “Push these three new test files to the add-tests branch in acme/web.”
Write ·
push_filesDeletes one file from a branch as a commit
Deletes one file from a branch as a commit.
Try: “Delete old-config.yml from the cleanup branch in acme/web.”
Delete ·
delete_fileCreates a new branch from the default branch or another one
Creates a new branch in a repository, from the default branch or another one.
Try: “Create a branch fix/login-timeout from main in acme/web.”
Write ·
create_branchLists a repo's branches
Lists the branches of a repository.
Try: “List all branches in acme/web.”
Read ·
list_branchesLists your GitHub notifications, filtered by repo or date
Lists your notifications, with filters for repo, date and participation.
Try: “What GitHub notifications need my attention today?”
Read ·
list_notificationsReads one notification
Reads one notification thread.
Try: “What is my latest notification about?”
Read ·
get_notification_detailsMarks one notification as read or done
Marks one notification thread as read or done.
Try: “Mark the notification about PR #77 as done.”
Write ·
dismiss_notificationMarks all your notifications as read, for one repo or all
Marks all notifications as read, optionally for one repo.
Try: “Mark all my notifications in acme/web as read.”
Write ·
mark_all_notifications_readWatches or mutes one notification thread
Ignores, watches or removes your subscription to one notification thread.
Try: “Stop notifying me about issue #42.”
Write ·
manage_notification_subscriptionWatches or mutes a whole repo
Ignores, watches or removes your subscription to a whole repository.
Try: “Watch acme/web for all activity.”
Write ·
manage_repository_notification_subscriptionHands an issue to Copilot, which works on it and opens a pull request
Assigns Copilot coding agent to an issue so it works on it and opens a pull request.
Try: “Assign Copilot to issue #88 in acme/web.”
Runs code ·
assign_copilot_to_issueHands an issue to Copilot with a reason, or suggests it for you to approve
Assigns Copilot to an issue with a stated rationale and confidence, or records it as a suggestion to approve later.
Try: “Suggest assigning Copilot to issue #88 and explain why.”
Runs code ·
assign_copilot_to_issue_with_intentGives Copilot a task to do and open a pull request (hosted version only)
Hands a task to Copilot coding agent, which works on it and opens a pull request. Hosted server only.
Try: “Ask Copilot to add input validation to the signup form in acme/web and open a PR.”
Runs code ·
create_pull_request_with_copilotAsks Copilot to review a pull request
Asks Copilot to review a pull request.
Try: “Request a Copilot review on PR #77.”
Write ·
request_copilot_reviewLists a repo's releases
Lists the releases of a repository.
Try: “List the last five releases of acme/web.”
Read ·
list_releasesShows a repo's newest release
Returns the newest published release of a repo.
Try: “What is the latest release of github/github-mcp-server?”
Read ·
get_latest_releaseShows the release for a given tag
Returns the release attached to a given tag.
Try: “Show the release notes for v2.0.0 of acme/web.”
Read ·
get_release_by_tagLists a repo's tags
Lists the tags of a repository.
Try: “List the tags in acme/web.”
Read ·
list_tagsShows details of one tag
Returns details of one Git tag.
Try: “What commit does tag v1.4.0 point to in acme/web?”
Read ·
get_tagCreates a new repo under your account or an organization
Creates a new repository under your account or an organization.
Try: “Create a private repo called notes-api in my account.”
Write ·
create_repositoryCopies (forks) a repo to your account or an organization
Forks a repository to your account or an organization.
Try: “Fork vercel/next.js to my account.”
Write ·
fork_repositoryDeletes a whole repo (asks you to confirm first)
Deletes a whole repository. Needs the delete_repo scope and goes through a confirmation step first.
Try: “Delete my test repo scratch-2024.”
Delete ·
delete_repositoryLists who has access to a repo
Lists people with access to a repo, filterable to outside or direct collaborators.
Try: “Who are the outside collaborators on acme/web?”
Read ·
list_repository_collaboratorsLists all labels in a repo
Lists all labels in a repository.
Try: “List all labels in acme/web.”
Read ·
list_labelShows one label with its color and description
Returns one label from a repo, with its color and description.
Try: “What does the needs-triage label in acme/web mean?”
Read ·
get_labelCreates, edits or deletes a label in a repo
Creates, updates or deletes a label in a repository.
Try: “Create a label good-first-issue in acme/web, color 7057ff.”
Delete ·
label_writeLists the issue types a repo uses, like Bug or Feature
Lists the issue types (such as Bug or Feature) available for a repo or organization.
Try: “Which issue types can I use in acme/web?”
Read ·
list_issue_typesLists the custom issue fields set up for a repo or organization
Lists custom issue fields defined for a repo or organization.
Try: “What custom issue fields does the acme org use?”
Read ·
list_issue_fieldsShows a repo's branch rules and how recent pushes were checked
Reads rulesets, the rules for a branch, and rule-suite evaluations of pushes.
Try: “Which rules apply to the main branch of acme/web?”
Read ·
repository_ruleset_readCreates branch rules, like requiring pull requests on main
Creates a ruleset at repo, org or enterprise level (for example require PRs on main).
Try: “Create a ruleset on acme/web that blocks force pushes to main.”
Write ·
create_repository_rulesetReads custom properties set on a repo or organization
Reads custom property values on a repo, or property definitions for an org or enterprise.
Try: “What custom properties are set on acme/web?”
Read ·
custom_properties_readSets custom properties on a repo or organization
Sets custom property values on a repo, or defines properties for an org or enterprise.
Try: “Set the team property on acme/web to platform.”
Write ·
custom_properties_writeLists code scanning alerts, filtered by state or severity
Lists code scanning alerts, filterable by state, severity, tool and ref.
Try: “List open high-severity code scanning alerts in acme/web.”
Read ·
list_code_scanning_alertsReads one code scanning alert
Reads one code scanning alert.
Try: “Explain code scanning alert #5 in acme/web and suggest a fix.”
Read ·
get_code_scanning_alertLists alerts about vulnerable dependencies, by state or severity
Lists Dependabot alerts, filterable by state and severity.
Try: “List open critical Dependabot alerts in acme/web.”
Read ·
list_dependabot_alertsReads one vulnerable dependency alert
Reads one Dependabot alert.
Try: “Explain Dependabot alert #3 in acme/web.”
Read ·
get_dependabot_alertLists alerts about passwords or keys leaked in a repo
Lists secret scanning alerts for a repo.
Try: “Are there open secret scanning alerts in acme/web?”
Read ·
list_secret_scanning_alertsReads one leaked secret alert
Reads one secret scanning alert.
Try: “Explain secret scanning alert #2 in acme/web.”
Read ·
get_secret_scanning_alertReads one code quality finding
Reads one GitHub Code Quality finding.
Try: “Explain code quality finding #12 in acme/web.”
Read ·
get_code_quality_findingLists security advisories published or drafted for a repo
Lists security advisories published or drafted for one repo.
Try: “List security advisories for acme/web.”
Read ·
list_repository_security_advisoriesLists security advisories across an organization's repos
Lists repository security advisories across an organization.
Try: “List draft security advisories across the acme org.”
Read ·
list_org_repository_security_advisoriesSearches GitHub's public database of known vulnerabilities
Searches the GitHub Advisory Database by ecosystem, package, severity and more.
Try: “List critical npm advisories published this month.”
Read ·
list_global_security_advisoriesReads one entry from GitHub's database of known vulnerabilities
Reads one advisory from the GitHub Advisory Database.
Try: “Explain GHSA-xxxx-xxxx-xxxx in plain terms.”
Read ·
get_global_security_advisoryLists project boards, their items, fields and views
Lists projects, fields, items, views or status updates, with GitHub's project filter syntax.
Try: “List items in acme's project 4 that are In Progress.”
Read ·
projects_listShows one project board, item, field, view or status update
Gets one Projects resource: a project, a field, an item with chosen fields, a status update or a view.
Try: “Show the Status and Priority of item 123 in project 4 of acme.”
Read ·
projects_getManages project boards: add, edit or delete items, post status updates
Manages Projects: creates projects and views, adds, updates or deletes items, posts status updates and creates iteration fields.
Try: “Add issue #88 from acme/web to project 4 and set Status to Todo.”
Delete ·
projects_writeLists discussions in a repo or organization
Lists discussions in a repo or organization.
Try: “List the latest Q&A discussions in acme/web.”
Read ·
list_discussionsReads one discussion
Reads one discussion.
Try: “Summarize discussion #9 in acme/web.”
Read ·
get_discussionReads a discussion's comments and replies
Reads the comments of a discussion, optionally with replies.
Try: “Show the comments on discussion #9.”
Read ·
get_discussion_commentsLists discussion categories in a repo or organization
Lists the discussion categories of a repo or organization.
Try: “What discussion categories does acme/web have?”
Read ·
list_discussion_categoriesAdds, edits or deletes discussion comments and marks the answer
Adds, replies to, edits or deletes discussion comments, and marks or unmarks an answer.
Try: “Reply to the top comment in discussion #9 with the workaround.”
Delete ·
discussion_comment_writeLists gists for you or another user
Lists gists for you or another user.
Try: “List my gists from the last month.”
Read ·
list_gistsReads one gist
Reads one gist.
Try: “Show the files in gist <gist-id>.”
Read ·
get_gistCreates a one-file gist, public or secret
Creates a single-file gist, public or secret.
Try: “Save this snippet as a secret gist called retry.py.”
Write ·
create_gistEdits a file in one of your gists
Updates a file in an existing gist.
Try: “Update retry.py in my gist with this new version.”
Write ·
update_gistFinds GitHub users by name, location or followers
Searches GitHub users by name, location, followers and more.
Try: “Find GitHub users in Berlin with more than 500 followers.”
Read ·
search_usersFinds GitHub organizations
Searches GitHub organizations.
Try: “Find organizations in California working on databases.”
Read ·
search_orgsLists the teams you or another user belong to
Lists the teams a user belongs to, yourself by default.
Try: “Which GitHub teams am I on?”
Read ·
get_teamsLists the members of a team in an organization
Lists the members of one team in an organization.
Try: “Who is on the platform team in the acme org?”
Read ·
get_team_membersLists repos starred by you or another user
Lists repositories starred by you or another user.
Try: “What repos have I starred recently?”
Read ·
list_starred_repositoriesStars a repo
Stars a repository.
Try: “Star github/github-mcp-server.”
Write ·
star_repositoryRemoves your star from a repo
Removes your star from a repository.
Try: “Unstar acme/old-project.”
Write ·
unstar_repositoryLists the Copilot Spaces you can open (hosted version only)
Lists the Copilot Spaces you can access. Hosted server only.
Try: “Which Copilot Spaces can I use?”
Read ·
list_copilot_spacesReads a Copilot Space and its context (hosted version only)
Reads a Copilot Space and its context. Hosted server only.
Try: “Load the onboarding Copilot Space owned by acme.”
Read ·
get_copilot_spaceSearches GitHub's help docs to answer product questions (hosted version only)
Searches GitHub's documentation to answer product and support questions. Hosted server only.
Try: “How do I require signed commits on a branch?”
Read ·
github_support_docs_searchUsed by the assistant behind the scenes
Looks up which GitHub account you are signed in as
Returns the profile of the account the token or login belongs to. Assistants call it first to learn who "me" is.
Try: “Who am I logged in as on GitHub?”
Read ·
get_meFetches choices like labels, assignees or branches for a picker
Fetches picker data for a repo, such as labels, assignees, milestones, branches, issue fields or reviewers, so the client can show choices.
Try: “What labels and milestones exist in acme/web?”
Read ·
ui_get
From the official docs
Permissions
high risk · 5 things to watch · 2 advisories
High risk
If you let it, your assistant can change or delete things in your GitHub account, and a stranger's text in a public issue can trick it into leaking private code. Turn on read-only mode and use an access key that only reaches the repos you need.
What it can do
- Read your data
- Create and change things
- Delete things
- Read-only modeHow to turn it on
Watch out for
It can change and delete code, not just read it
Out of the box it can push files, merge pull requests and create repos, and a delete-repository tool exists. Start in read-only mode, or switch on only the tools you need. github.com
Text in public issues can trick it into leaking code
Researchers showed a planted public issue steering an assistant into copying private repo data into a public pull request. Give it access only to the repos the job needs, and turn on lockdown mode. invariantlabs.ai
Lockdown mode helps, but it is not a guarantee
Lockdown mode hides public-repo content written by people who can't push to that repo. GitHub calls it a best-effort filter, not a security boundary. github.com
Older-style tokens hide tools they can't use
With a classic token (starting ghp_), it hides tools your token has no permission for. Fine-grained tokens don't hide them, but GitHub still blocks anything the token can't do. github.com
Your org admins can block or allow it
Admins can block it in Copilot editors and control which apps and tokens get access. Its actions show in the audit log as normal GitHub activity, with no separate log for it. github.com
Security advisories
2 known advisories, all fixed in a newer version.
- A badly formed request could crash the server before anyone signed in.high · Fixed in 1.1.0 · GHSA-w4q6-qw23-4rg7 (CVE-2026-47427)
- On a server shared by several people with lockdown mode on, later users got the first user's lockdown checks.medium · Fixed in 1.1.2 · GHSA-pjp5-fpmr-3349 (CVE-2026-48529)
Technical details
| Turning on read-only | Local: --read-only flag or GITHUB_READ_ONLY=1. Hosted: append /readonly to the URL (https://api.githubcopilot.com/mcp/readonly) or send X-MCP-Readonly: true. Read-only wins over --tools: write tools are skipped even if requested. |
|---|---|
| Talks to | api.github.com (GitHub REST and GraphQL API; your GHES or ghe.com host when GITHUB_HOST is set). github.com (OAuth login and device-code flow for the local server). api.githubcopilot.com (hosted server; your requests and token go to GitHub's endpoint). ghcr.io (Docker image pull) |
| Sign-in and keys | Local OAuth login keeps the token in memory only, nothing on disk. A PAT lives wherever you put it: the client's config file or an environment variable. Hosted OAuth tokens are held by the client (VS Code). GitHub recommends fine-grained PATs, 90-day maximum expiry, and chmod 600 on config files that contain tokens. |
| Scopes |
|
Alternatives
Use GitHub's own connector unless you have one narrow job. It is the only official option and covers the most, while the alternatives each do one thing, like auditing security or summarizing one organization's history.
| Server | Official | Runs | Sign-in | Read-only mode | Tools | GitHub stars |
|---|---|---|---|---|---|---|
| GitHub MCP ServerThis page | Official | HostedLocal | Account or token | Yes | 92 | 34.1K |
| Pare GitHub (@paretools/github) | Community | Local | gh CLI login | Not documented | 14 | 140 |
| GitHub Brain | Community | Local | Account or token | Always | – | 78 |
| github-security-mcp | Community | Local | Token | Always | 39 | 16 |
What people say
People like that GitHub runs it and that it covers most of GitHub. The complaints are sign-in trouble in some apps, too many tools at once, and a recent Claude bug that stops it creating issues.
What people like
- Official and maintained by GitHub, with a hosted endpoint so most clients need no local install
- One server covers code, issues, PRs, Actions logs, security alerts, Projects and sub-issues
- Users report running it from ChatGPT, Claude and Antigravity
- Maintainers answer in the issue tracker and explain client limits openly
Common complaints
- OAuth to the hosted server fails in clients that need Dynamic Client Registration; a PAT is the usual workaround
- Many tools by default, which costs context tokens; people turn most of them off
- Some developers find the gh CLI simpler and more reliable for coding agents
- Since October 2026, Claude users report write tools (issue_write, create_pull_request) showing a form that collapses, so nothing is created
In their words
“The official GitHub MCP server is a good example of this, it has tools for everything from creating gists to managing teams, and you might really only need it to search repos or read issues.”NicuCalceaHacker NewsOct 2026
“I do have it configured to use the Github MCP server and have given it access to 3 or 4 of my repos.”mindcrimeHacker NewsMar 2026
“GitHub MCP handled repo creation, branching and PR with description from natural language prompts. Zero context switching.”ravi_rupareliyaGitHub issueNov 2025
“I’ve given up on this issue being resolved. Claude Code can use the GitHub CLI: https://cli.github.com/.”clintonb
4 more quotesFewer quotes
“There are valid instructions for installing GitHub MCP for basically every client and we are spec compliant and do care about this, but in the end not all clients are built to support this, there has been an unfortunate level of friction.”SamMorrowDrums (GitHub maintainer)GitHub issueJun 2026
“`https://api.githubcopilot.com/mcp` now works as a custom connector with a built-in client ID”pl4ntyGitHub issueOct 2026
“Creating issues via issue_write worked on 2026-09-30 but now a form flashes (blank) and disappears with no issue created.”blue-circuitGitHub issueJul 2026
“Couldn't complete authentication for "github": SDK auth failed: Incompatible auth server: does not support dynamic client registration”Himura2la
Questions
Is the GitHub MCP server free?
Yes. GitHub makes it available to every GitHub user on any plan. A few tools need a matching paid feature, such as a paid Copilot license for the Copilot coding agent, and on Copilot Business or Enterprise an admin has to allow MCP servers first.
What is the GitHub MCP server URL?
https://api.githubcopilot.com/mcp/. For a connection that can only read, use https://api.githubcopilot.com/mcp/readonly instead.
Is it safe to give my AI assistant access to GitHub?
Only with limits. Out of the box it can push files, merge pull requests and create repositories, and researchers showed a planted public issue tricking an assistant into copying private code into a public pull request. Start in read-only mode and use a token that only reaches the repositories you need.
Can it delete my repositories?
It can, if you let it. A delete-repository tool exists, and it only works with a token that has permission to delete repositories. Read-only mode removes it along with every other tool that changes anything.
How do I make it read-only?
Pick the read-only option shown in the install box above. It removes every tool that can change anything, even tools you switched on by name.
Should I sign in with GitHub or use a personal access token?
Sign in with GitHub where your app supports it, such as VS Code. Elsewhere use a fine-grained personal access token limited to the repositories you need, set to expire in 90 days or less, which is what GitHub recommends.
How do I add GitHub to Claude Code or Cursor?
Use the Claude Code or Cursor tab in the install box above. In both apps, signing in with GitHub to the hosted server does not work yet, so you paste a personal access token instead.
Why can't it see my organization's private repositories?
Your token or sign-in is not allowed into that organization yet. A fine-grained token needs the org's approval and the repositories selected, a token used with SSO must be authorized for the org, and the org's policy must allow the app you signed in through. One user reports the Claude connector also needed a separate GitHub App install.
Does it work with GitHub Enterprise Server?
Only if you run it on your own machine and point it at your server's address. GitHub does not host it for Enterprise Server. Enterprise Cloud with data residency (ghe.com) can use the hosted version.
Should I use the hosted server or run it locally?
Use the hosted one unless you need GitHub Enterprise Server. It needs no install, updates itself and has a few extra tools, such as the Copilot coding agent. The local one runs on your computer and works with Enterprise Server.
Is @modelcontextprotocol/server-github the same thing?
No. That was an older reference server on npm, and GitHub says it has not been supported since April 2025. Use GitHub's own server instead.
Information
updated Nov 2, 2026
- Publisher
- GitHub (official)
- Package
ghcr.io/github/github-mcp-server- Registry
- Docker
- Endpoint
https://api.githubcopilot.com/mcp- Transport
- stdio, Streamable HTTP
- Auth
- OAuth
- Version
- 2.0.3
- License
- MIT
- Last commit
- Oct 30, 2026
- Open issues
- 204
- Listed in
- Official MCP registry, Docker MCP Catalog
Release binariesGitHub Docs: Setting up the GitHub MCP ServerGitHubDocker image (ghcr.io)Official MCP RegistryInstallation guides per clientChangelogIssuesSupport guideSecurity policy
Other GitHub MCP servers
Sources
Docs, issue trackers and discussions this page is built from. Issues, quotes and findings above link to their own source.
Show all 40Hide
- Install in Claude Applications · github.com
- Installation guides: npm package no longer supported as of April 2025 · github.com
- Hosted URL works as Claude custom connector · github.com
- Install GitHub MCP Server in Cline · github.com
- Install GitHub MCP Server in OpenAI Codex · github.com
- Install GitHub MCP Server in Copilot CLI · github.com
- Install in Cursor · github.com
- Install GitHub MCP Server in Google Gemini CLI · github.com
- Install in Copilot IDEs · github.com
- Install GitHub MCP Server in OpenCode · github.com
- Local Server OAuth Login · github.com
- GitHub MCP Server README · github.com
- Releases (v2.0.3, 2026-10-21) · github.com
- Remote GitHub MCP Server · github.com
- Setting up the GitHub MCP Server · docs.github.com
- Install GitHub MCP Server in Windsurf · github.com
- Install GitHub MCP Server in Zed · github.com
- GitHub MCP Server README: Tools · github.com
- GitHub MCP Server README: default toolset · github.com
- PAT Scope Filtering · github.com
- pkg/github/actions.go (actions_run_trigger methods) · github.com
- Policies & Governance · github.com
- GitHub MCP Exploited: Accessing private repositories via MCP · invariantlabs.ai
- GHSA-pjp5-fpmr-3349 · github.com
- GHSA-w4q6-qw23-4rg7 · github.com
- OSV GO-2026-6118 (fixed 1.1.0) · osv.dev
- Claude Code OAuth DCR error report · github.com
- GitHub App Authentication · github.com
- MCP Apps: issue_write form widget collapses immediately in Claude clients · github.com
- HN comment by mindcrime · news.ycombinator.com
- Workaround: mcp_apps_disable_form_deferral · github.com
- HN comment by NicuCalcea · news.ycombinator.com
- HN comment by ravi_rupareliya · news.ycombinator.com
- Remote: Incompatibility with Claude (Web) Integrations · github.com
- Dynamic Client Registration not supported · github.com
- Comment by jawache on using gh CLI instead · github.com
- github/github-mcp-server · github.com
- @paretools/github README · github.com
- GitHub Brain README · github.com
- github-security-mcp README · github.com