GitHub MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GITHUB_TOKEN | Yes | GitHub Personal Access Token for authentication. Scopes required depend on the tools being used (e.g., repo, read:org, gist, notifications, user, workflow, read:discussion, project). |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| list_workflowsB | List GitHub Actions workflows in a repository. |
| list_workflow_runsB | List workflow runs for a repository or specific workflow. |
| trigger_workflowB | Trigger a workflow dispatch event to run a workflow. |
| cancel_workflow_runC | Cancel a workflow run. |
| get_branch_protectionB | Get branch protection rules for a branch. |
| update_branch_protectionC | Update branch protection rules for a branch. |
| delete_branch_protectionC | Delete branch protection rules for a branch. |
| list_branchesB | List branches in a repository. |
| create_branchB | Create a new branch in a repository. |
| delete_branchC | Delete a branch from a repository. |
| list_collaboratorsB | List collaborators of a repository. |
| add_collaboratorB | Add a collaborator to a repository. |
| remove_collaboratorB | Remove a collaborator from a repository. |
| list_commit_statusesB | List commit statuses for a reference (branch, tag, or SHA). |
| create_commit_statusB | Create a commit status for a specific SHA. |
| list_check_runsB | List check runs for a reference (branch, tag, or SHA). |
| get_check_runB | Get a single check run by ID. |
| list_discussionsC | List discussions in a repository. |
| get_discussionB | Get details of a specific discussion. |
| get_discussion_commentsC | Get comments on a discussion. |
| list_discussion_categoriesB | List discussion categories for a repository. |
| create_or_update_fileA | Create or update a file in a repository. To update, you must provide the current file's SHA. |
| delete_fileC | Delete a file from a repository. |
| list_gistsB | List gists for a user or the authenticated user. |
| get_gistB | Get a specific gist with its file contents. |
| create_gistB | Create a new gist. |
| update_gistB | Update an existing gist. Provide files to add/update, or set a filename's content to empty string to delete it. |
| get_repository_treeA | Get a repository tree (directory listing) by SHA or branch name. Set recursive=True to get the full nested file tree. |
| push_filesA | Push multiple files to a branch in a single commit using the Git Data API. This creates blobs, a tree, a commit, and updates the branch ref atomically. |
| list_issuesC | List issues in a repository. |
| get_issueB | Get detailed information about a specific issue. |
| create_issueB | Create a new issue in a repository. |
| update_issueC | Update an existing issue. |
| list_issue_commentsB | List comments on an issue. |
| create_issue_commentB | Add a comment to an issue. |
| list_labelsC | List labels in a repository. |
| create_labelC | Create a label in a repository. |
| delete_labelB | Delete a label from a repository. |
| list_notificationsB | List notifications for the authenticated user. |
| mark_notifications_readB | Mark all notifications as read. |
| mark_thread_readB | Mark a specific notification thread as read. |
| list_user_orgsB | List organizations for the authenticated user. |
| get_organizationC | Get detailed information about an organization. |
| list_org_membersB | List members of an organization. |
| list_repo_projectsB | List projects in a repository (classic projects). |
| list_org_projectsB | List projects in an organization (classic projects). |
| list_projects_v2C | List Projects V2 for an organization or user. |
| get_project_v2C | Get details of a specific Project V2. |
| list_project_v2_itemsB | List items in a Project V2 (issues, PRs, and draft items). |
| list_pull_requestsB | List pull requests in a repository. |
| get_pull_requestC | Get detailed information about a pull request. |
| create_pull_requestC | Create a new pull request. |
| update_pull_requestC | Update a pull request. |
| merge_pull_requestC | Merge a pull request. |
| list_pr_filesB | List files changed in a pull request. |
| list_pr_commitsB | List commits in a pull request. |
| update_pull_request_branchA | Update a pull request branch with the latest changes from the base branch. This is equivalent to pressing the 'Update branch' button on GitHub. |
| list_releasesB | List releases in a repository. |
| get_latest_releaseB | Get the latest published release of a repository. |
| create_releaseC | Create a new release. |
| get_release_by_tagB | Get a release by its tag name. |
| list_repositoriesB | List repositories for a user or organization. |
| get_repositoryB | Get detailed information about a repository. |
| create_repositoryB | Create a new repository for the authenticated user. |
| fork_repositoryC | Fork a repository. |
| list_commitsB | List commits in a repository. |
| get_file_contentsB | Get the contents of a file or directory listing in a repository. Returns JSON with a 'type' field ('file' or 'directory') for consistent parsing. |
| get_commitB | Get details of a specific commit including stats and changed files. |
| list_review_commentsB | List review comments on a pull request. |
| create_review_commentB | Create a review comment on a specific line of a pull request diff. |
| reply_to_review_commentB | Reply to an existing review comment on a pull request. |
| create_pr_reviewB | Create a review on a pull request. |
| list_pr_reviewsB | List reviews on a pull request. |
| search_repositoriesC | Search GitHub repositories. |
| search_codeB | Search code across GitHub repositories. |
| search_issuesB | Search issues and pull requests across GitHub. |
| search_usersB | Search GitHub users. |
| list_starred_reposB | List repositories starred by a user or the authenticated user. |
| star_repositoryB | Star a repository. |
| unstar_repositoryC | Unstar a repository. |
| list_tagsB | List tags in a repository. |
| get_tagA | Get an annotated tag object by its SHA. Only works for annotated tags, not lightweight tags. |
| get_authenticated_userB | Get information about the currently authenticated user. |
| get_userB | Get public information about a GitHub user. |
| list_webhooksB | List webhooks for a repository. |
| create_webhookB | Create a webhook for a repository. |
| delete_webhookB | Delete a webhook from a repository. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 87 tools
Each tool has a clearly distinct purpose targeting specific resources and actions, such as create_issue vs. update_issue or list_branches vs. delete_branch. The descriptions are precise, and there is no significant overlap that would cause misselection, even with many tools.
All tool names follow a consistent verb_noun pattern with snake_case throughout, such as create_repository, list_commits, and update_branch_protection. There are no deviations in naming conventions, making the set highly predictable and readable.
With 87 tools, the count is excessive for typical MCP server purposes, making it overwhelming and heavy for agents to navigate. While GitHub is a broad platform, this many tools likely includes niche operations that could be consolidated or omitted for better usability.
The tool set provides comprehensive coverage of GitHub's API, including CRUD operations for repositories, issues, pull requests, branches, and more, plus advanced features like webhooks, workflows, and searches. There are no obvious gaps, and agents can handle full lifecycle management within the domain.