GitHub MCP server
GitHub's official remote MCP server for repos, issues, pull requests, Actions, and code search.
The GitHub MCP Server is GitHub's official integration that connects an agent to the GitHub platform: reading repository files, searching code across all of GitHub, managing issues and pull requests, inspecting commits and releases, and driving Actions workflows. Tools are grouped into toolsets (repos, issues, pull_requests, actions, code_security, secret_protection, dependabot, discussions, notifications, projects, and more) so you can enable only what a given agent needs and keep its context lean.
The canonical deployment is the hosted remote endpoint at https://api.githubcopilot.com/mcp/, which supports OAuth for interactive clients or a Personal Access Token passed as a bearer token for headless use. A local Docker image is also published for teams that prefer to run the server themselves, reading the PAT from the GITHUB_PERSONAL_ACCESS_TOKEN environment variable. It is the backbone integration for any coding agent that needs to act on real repositories.
Quick install
Copy-paste configs are provided for all 8 supported clients. Pick your client below.
Add to ~/.claude.json
{
"mcpServers": {
"github": {
"type": "http",
"url": "https://api.githubcopilot.com/mcp/"
}
}
}claude mcp add --transport http github https://api.githubcopilot.com/mcp/Heads up
- First tool call opens a browser to authorize.
Available tools
| Tool | Description |
|---|---|
| get_me | Gets the authenticated user's profile. |
| get_teams | Gets the teams a user or organization belongs to. |
| get_team_members | Lists the members of an organization team. |
| get_file_contents | Gets the contents of a file or directory from a repository. |
| create_or_update_file | Creates a new file or updates an existing one in a repository. |
| delete_file | Deletes a file from a repository. |
| push_files | Pushes multiple files to a repository in a single commit. |
| create_repository | Creates a new repository. |
| fork_repository | Forks a repository into your account. |
| create_branch | Creates a new branch in a repository. |
| list_branches | Lists the branches of a repository. |
| list_tags | Lists the tags of a repository. |
| get_tag | Gets details for a specific git tag. |
| get_commit | Gets details and the diff for a specific commit. |
| list_commits | Lists commits on a branch of a repository. |
| list_releases | Lists releases for a repository. |
| get_latest_release | Gets the latest release for a repository. |
| get_release_by_tag | Gets a release by its tag name. |
| list_repository_collaborators | Lists the collaborators with access to a repository. |
| get_repository_tree | Gets the file tree of a repository. |
| search_code | Searches code across GitHub repositories. |
| search_commits | Searches commits across GitHub repositories. |
| search_repositories | Searches for repositories matching a query. |
| issue_read | Gets the details, comments, and labels of an issue. |
| issue_write | Creates or updates an issue. |
| list_issues | Lists issues in a repository with filters. |
| search_issues | Searches issues across GitHub. |
| add_issue_comment | Adds a comment to an issue. |
| list_issue_types | Lists the available issue type classifications for an org. |
| sub_issue_write | Adds, removes, or reprioritizes a sub-issue relationship. |
| list_label | Lists the labels defined in a repository. |
| get_label | Gets a specific label from a repository. |
| label_write | Creates, updates, or deletes a repository label. |
| create_pull_request | Opens a new pull request. |
| list_pull_requests | Lists pull requests in a repository with filters. |
| search_pull_requests | Searches pull requests across GitHub. |
| pull_request_read | Gets the details, diff, reviews, and comments of a pull request. |
| update_pull_request | Edits the metadata of a pull request. |
| update_pull_request_branch | Updates a pull request branch with the latest base changes. |
| merge_pull_request | Merges a pull request into its base branch. |
| pull_request_review_write | Creates, submits, or deletes a pull request review. |
| add_comment_to_pending_review | Adds a review comment to your latest pending pull request review. |
| add_reply_to_pull_request_comment | Replies to an existing pull request review comment. |
| request_copilot_review | Requests a Copilot code review on a pull request. |
| assign_copilot_to_issue | Assigns the Copilot coding agent to an issue. |
| actions_get | Gets details of Actions resources such as workflows, runs, jobs, and artifacts. |
| actions_list | Lists Actions workflows and runs in a repository. |
| actions_run_trigger | Triggers or controls an Actions workflow run. |
| get_job_logs | Gets the logs for an Actions workflow job. |
| list_code_scanning_alerts | Lists code scanning alerts for a repository. |
| get_code_scanning_alert | Gets details of a specific code scanning alert. |
| list_secret_scanning_alerts | Lists secret scanning alerts for a repository. |
| get_secret_scanning_alert | Gets details of a specific secret scanning alert. |
| list_dependabot_alerts | Lists Dependabot vulnerability alerts for a repository. |
| get_dependabot_alert | Gets details of a specific Dependabot alert. |
| list_global_security_advisories | Lists global security advisories from the GitHub Advisory Database. |
| get_global_security_advisory | Gets a specific global security advisory. |
| list_repository_security_advisories | Lists security advisories for a repository. |
| list_org_repository_security_advisories | Lists repository security advisories across an organization. |
| list_discussions | Lists discussions in a repository or organization. |
| get_discussion | Gets the details of a discussion. |
| get_discussion_comments | Gets the comments on a discussion. |
| list_discussion_categories | Lists the available discussion categories. |
| discussion_comment_write | Creates, edits, or deletes a discussion comment. |
| list_notifications | Lists the authenticated user's notifications. |
| get_notification_details | Gets the details of a specific notification. |
| dismiss_notification | Marks a notification as read or done. |
| mark_all_notifications_read | Marks all notifications as read. |
| manage_notification_subscription | Manages the subscription for a notification thread. |
| manage_repository_notification_subscription | Manages the notification subscription for a repository. |
| projects_list | Lists GitHub Projects and their items. |
| projects_get | Gets details of Projects resources such as fields, items, and status updates. |
| projects_write | Creates or updates Projects items and fields. |
| create_gist | Creates a new gist. |
| update_gist | Updates the files of an existing gist. |
| get_gist | Gets the content of a gist. |
| list_gists | Lists a user's gists. |
| star_repository | Stars a repository. |
| unstar_repository | Removes a star from a repository. |
| list_starred_repositories | Lists a user's starred repositories. |
| search_orgs | Searches GitHub organizations. |
| search_users | Searches GitHub user accounts. |
Required configuration
- GITHUB_PERSONAL_ACCESS_TOKENOptional
PAT for bearer auth on the remote endpoint or for the local Docker server. Not needed when using OAuth.
- GITHUB_TOOLSETSOptional
Comma-separated list of toolsets to enable (e.g. repos,issues,pull_requests). Defaults to a curated set.
- GITHUB_READ_ONLYOptional
Set to 1 to restrict the server to read-only tools.
- GITHUB_HOSTOptional
Base URL for GitHub Enterprise Server or data-residency deployments.
What you can do with it
Triage and file issues
An agent reads a stack trace, searches the codebase for the offending symbol, and opens a well-scoped issue with the relevant file links.
Automate pull requests
Generate a fix, push it, and open a PR with a clear description, all from inside the agent's normal workflow.
FAQ
- Is it free?
- Yes. The server is free and open source; you only need a GitHub account and a token or OAuth session scoped to what you want the agent to do.
- Does it support remote/OAuth?
- Yes. The canonical deployment is remote at https://api.githubcopilot.com/mcp/ with OAuth, or a PAT bearer token; a self-hosted Docker stdio mode is also available.