GitHub Master MCP
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| PORT | No | HTTP listen port; Render sets PORT automatically. | 10000 |
| GITHUB_TOKEN | Yes | GitHub token; required for private repos and API write operations. | |
| GITHUB_MCP_MODE | No | `read-only` blocks local file edits, branch creation, commits and pushes. | edit |
| GITHUB_MCP_PORT | No | HTTP listen port alternative to PORT. | 10000 |
| GITHUB_MCP_MAX_FILES | No | Maximum file count in a project scan. | 500 |
| GITHUB_MCP_TRANSPORT | No | Transport mode: `stdio` for local MCP or `http` for remote Streamable HTTP. | stdio |
| GITHUB_MCP_WORKSPACE | No | Local clone directory. | ~/.github-master-mcp/workspaces |
| GITHUB_MCP_ALLOW_PUSH | No | Must be `true` for push tools. | false |
| GITHUB_MCP_ACCESS_TOKEN | No | Required in HTTP mode; private Bearer token, minimum 32 characters. | |
| GITHUB_MCP_ALLOW_COMMANDS | No | Enables allow-listed project scripts. | false |
| GITHUB_MCP_ALLOWED_SCRIPTS | No | Allowed package.json script names. | test,build,lint,typecheck,check |
| GITHUB_MCP_CONFIRMATION_PHRASE | No | Private phrase required for destructive/remote actions. |
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": true
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| github_whoamiA | Verify the configured GitHub token and show the authenticated GitHub account. |
| list_repositoriesB | List repositories accessible to the authenticated GitHub user, sorted by most recently updated. |
| fork_repositoryC | Create a fork of the active repository under the authenticated user or a specified organization. |
| get_repository_detailsB | Get the current active repository metadata and permissions from GitHub. |
| create_repositoryB | Create a new GitHub repository for the authenticated user, or under an organization when organization is provided. |
| open_repositoryA | Open a GitHub repository from its URL. Clones it to the local workspace and makes it the active project for subsequent project tools. Accepts repository URLs and /tree/branch URLs. |
| analyze_projectA | Analyze the currently open repository: project type, manifests, README, file tree, likely scripts, and Git status. Open a repository first. |
| list_project_filesB | List tracked and untracked text-project files in the open repository. Dependency/build folders and secret-like files are excluded. |
| read_project_fileA | Read a UTF-8 text file in the open repository. Paths are repository-relative; secrets and paths outside the repository are blocked. |
| write_project_fileA | Create or replace a UTF-8 file in the open repository. This changes only the local checkout; it does not push to GitHub. |
| delete_project_fileA | Delete a repository file locally. Requires the owner confirmation phrase. Cannot delete Git metadata or secret files. |
| search_project_codeC | Search repository text files for a literal or regular-expression pattern. Does not search secrets, dependencies, or generated folders. |
| git_statusA | Show Git branch and working-tree status for the active repository. |
| git_diffA | Show the local diff. Use staged=false for unstaged changes and staged=true for staged changes. |
| create_branchB | Create and switch to a new local branch in the open repository. |
| list_branchesC | List branches in the active GitHub repository. |
| list_commitsC | List recent commits in the active GitHub repository, optionally filtered by branch or path. |
| run_project_scriptB | Run an allow-listed npm/pnpm/yarn/bun script from package.json. Disabled by default because repository scripts execute code. |
| commit_changesB | Stage safe local changes and create a local Git commit. Requires the owner confirmation phrase. Secret-like files are never staged. |
| push_branchB | Push the current local branch to origin. Requires GITHUB_MCP_ALLOW_PUSH=true and the owner confirmation phrase. |
| commit_and_pushB | Stage safe changes, create a commit, then push the current branch. Requires GITHUB_MCP_ALLOW_PUSH=true and the owner confirmation phrase. |
| create_pull_requestB | Create a pull request for the current or supplied head branch. The branch must already exist on GitHub. |
| list_issuesB | List issues for the open repository. Pull requests are excluded from the returned issue list. |
| create_issueC | Create an issue in the open GitHub repository. |
| list_pull_requestsC | List pull requests in the open repository. |
| merge_pull_requestB | Merge a pull request in the open repository. Requires owner confirmation phrase to prevent accidental merges. |
| create_releaseC | Create a GitHub release in the active repository. The tag can be created from targetCommitish when needed. |
| list_workflowsB | List GitHub Actions workflows configured in the open repository. |
| list_workflow_runsC | List recent GitHub Actions workflow runs in the active repository. |
| rerun_workflowB | Re-run a GitHub Actions workflow run by run ID. Requires owner confirmation phrase. |
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 30 tools
Most tools map to a clear resource+action (repos, branches, commits, PRs, issues, releases, Actions, local files), and the local-vs-GitHub distinction is spelled out in descriptions. Two overlaps remain: commit_changes vs commit_and_push vs push_branch (the combined tool is a strict superset of the other two), and analyze_project reporting Git status overlaps with git_status.
The dominant pattern is snake_case verb_noun (list_repositories, create_branch, merge_pull_request, read_project_file), applied consistently across nearly all tools. Deviations are minor: github_whoami uses a namespace prefix plus a non-verb, and git_status/git_diff are bare git-style names rather than verb_noun.
30 tools is above the comfortable range, though the server genuinely spans several sub-domains (GitHub API, Actions, local git, local file/script operations). The count is inflated by redundancy: commit_and_push duplicates commit_changes + push_branch, and analyze_project partially duplicates git_status plus file-listing tools.
Core lifecycle is well covered: open/fork/create repo, branch, edit files, diff, commit, push, open PR, merge PR, create issue, create release, inspect and rerun workflows. Gaps are in the issue/PR secondary surface — no update/close issue, no comment on issues or PRs, no get-single-PR details, no branch deletion.