GitHub
GitHub’s official server lets AI read and manage code, issues and pull requests in your account. Use GitHub’s hosted version or run it locally with Docker.
Description from the maker (original English)
Developer-ready GitHub MCP server with 5-tool hybrid architecture and dynamic discovery.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
GITHUB_PERSONAL_ACCESS_TOKEN, GITHUB_API_URL, GITHUB_READ_ONLY, GITHUB_EXPOSE_ALL_TOOLS, MCP_OUTPUT_FORMATValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"github": {
"command": "npx",
"args": [
"-y",
"@sumirati/mcp-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "your-value",
"GITHUB_API_URL": "your-value",
"GITHUB_READ_ONLY": "your-value",
"GITHUB_EXPOSE_ALL_TOOLS": "your-value",
"MCP_OUTPUT_FORMAT": "your-value"
}
}
}
}Run this in your terminal
claude mcp add github --env GITHUB_PERSONAL_ACCESS_TOKEN=your-value --env GITHUB_API_URL=your-value --env GITHUB_READ_ONLY=your-value --env GITHUB_EXPOSE_ALL_TOOLS=your-value --env MCP_OUTPUT_FORMAT=your-value -- npx -y @sumirati/mcp-githubFill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"github": {
"command": "npx",
"args": [
"-y",
"@sumirati/mcp-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "your-value",
"GITHUB_API_URL": "your-value",
"GITHUB_READ_ONLY": "your-value",
"GITHUB_EXPOSE_ALL_TOOLS": "your-value",
"MCP_OUTPUT_FORMAT": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"github": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"@sumirati/mcp-github"
],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "your-value",
"GITHUB_API_URL": "your-value",
"GITHUB_READ_ONLY": "your-value",
"GITHUB_EXPOSE_ALL_TOOLS": "your-value",
"MCP_OUTPUT_FORMAT": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
GITHUB_API_URL envGITHUB_READ_ONLY envGITHUB_EXPOSE_ALL_TOOLS envMCP_OUTPUT_FORMAT envThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Runs on your computer; the tool list appears in your AI app after you install it.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026
The registry name was verified with the GitHub account sumirati, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
This one runs on your computer; there is no internet endpoint
Runs on your computer and uses local settings instead
Runs on your computer; we can only read tool lists from internet endpoints
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: GITHUB_PERSONAL_ACCESS_TOKEN
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
The GitHub repo last changed –, and the latest version (2.2.0) reached the registry 20 days ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
In the same category: GitHub, Desktop Commander, Cloudflare MCP
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
GitHub’s official server lets AI read and manage code, issues and pull requests in your account. Use GitHub’s hosted version or run it locally with Docker.
MCP server for terminal commands, file operations, and process management
Cloudflare MCP servers
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
@sumirati/mcp-github)A modern, 2026 AI-native Model Context Protocol (MCP) server for GitHub REST API, engineered for autonomous AI agents and developer workflows.
In early MCP servers, exposing 50–100+ eager tool definitions flooded every LLM turn with thousands of redundant schema tokens ("System Prompt Tax") and degraded reasoning coherence.
@sumirati/mcp-github solves this with a 5-Tool Hybrid Surface:
get_file_contents, get_repository, get_commit) remain eager tools for instant zero-hop execution.github_find_actions $\rightarrow$ github_execute_action), delivering 91%–99% token savings with default high-density Markdown tables and summaries (format: "markdown" | "json").list_pull_requests), the server dynamically executes it with full input validation and projection.LLM Prompt Context (5-Tool Hybrid Surface):
├── 1. github_find_actions(query, [domain], [format]) [Meta Discovery] ├── 2. github_execute_action(action, params, [format]) [Meta Dynamic Execution] ├── 3. get_file_contents(owner, repo, path) [Eager Daily Driver #1] ├── 4. get_repository(owner, repo) [Eager Daily Driver #2] └── 5. get_commit(owner, repo, ref) [Eager Daily Driver #3]
Under the hood (Dynamic Registry): └── 83 Curated Actions across 13 Domains (grounded in GitHub REST API 2022-11-28)
get_branch_protection), file reading (auto Base64-decoded, symbol outlines, line slicing), single-file commits, and forks.get_commit), atomic multi-file commits via Git Trees API (create_commit, push_files), and commit status checks.create, update, merge), review comments, inline diff reviews, and unified diff inspection with lockfile filtering.list_workflow_run_artifacts, get_workflow_run_artifact), smart failure log extraction (get_job_logs), run cancel/rerun, and manual workflow dispatch.create_team), accessible repositories, and API health/rate-limit diagnostics (system_health_check).npx (No installation needed)npx -y @sumirati/mcp-github
npm install -g @sumirati/mcp-github
mcp-github
git clone https://github.com/sumirati/mcp-github.git
cd mcp-github npm install npm test npm start
| Variable | Required | Default | Description |
|---|---|---|---|
GITHUB_PERSONAL_ACCESS_TOKEN | Yes | — | GitHub Personal Access Token (classic or fine-grained) |
GITHUB_TOKEN | No | — | Alternative token variable name |
GITHUB_API_URL | No | https://api.github.com | Base API URL (or GitHub Enterprise Server) |
GITHUB_READ_ONLY | No | false | Enable 3-tier read-only mode (true, 1, yes) |
GITHUB_EXPOSE_ALL_TOOLS | No | false | Set to true (or GITHUB_EXPOSE_LEGACY_TOOLS=true) to expose all 83 tools directly on ListTools for legacy clients |
MCP_OUTPUT_FORMAT | No | markdown | Default output format for tool execution (markdown or json) |
Add to your MCP configuration file (mcp_config.json or claude_desktop_config.json):
{
"mcpServers": { "github": { "command": "npx", "args": ["-y", "@sumirati/mcp-github"], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": " ", "GITHUB_READ_ONLY": "false" } } } }
{
"mcpServers": { "github": { "command": "node", "args": ["/path/to/mcp-github/index.js"], "env": { "GITHUB_PERSONAL_ACCESS_TOKEN": " ", "GITHUB_READ_ONLY": "false" } } } }
All 83 actions feature strict Zod input validation and 2-tier output projection:
| Tool | Type | Description |
|---|---|---|
github_find_actions | Meta | Search and discover available GitHub operations across all 13 domains with compact parameter signatures |
github_execute_action | Meta | Execute any discovered GitHub platform action with input validation and token-optimized projection |
get_file_contents | Eager | Read raw file contents (auto Base64 decoded), symbol outlines, line ranges, or directory listings at any ref |
get_repository | Eager | Retrieve repository metadata, visibility, description, default branch, HTML URL, and counts |
get_commit | Eager | Inspect Git commit details, author info, and token-capped file diffs |
repositories — 12 actions)| Action | Description | Mutating? |
|---|---|---|
search_repositories | Search for repositories across GitHub or within an organization using query qualifiers (e.g. 'org:myorg language:typescript') with capped pagination (max 100). If owner and repository name are known, prefer 'get_repository' for exact O(1) lookup. | No |
get_repository | Get repository metadata, visibility, description, default branch, clone URL, and statistics for an exact owner/repo. Use when verifying repository settings or checking default branch name. | No |
create_repository | Create a new GitHub repository under the authenticated user account or a specified organization. Requires write permissions and GITHUB_READ_ONLY=false. Auto-initializes with a default README commit unless auto_init is false. | Yes |
get_file_contents | Read current file contents, extract symbol outlines ('outline_only: true'), slice line ranges, or list directory entries at a specified git ref. Automatically decodes Base64 into UTF-8. Use 'outline_only: true' first to inspect structure in ~50-100 tokens, then request specific line ranges. | No |
create_or_update_file | Create a new file or overwrite an existing file on a branch in a single atomic commit. If updating, provide the file's current blob SHA in 'sha' (or leave empty to auto-resolve). Requires write permissions and GITHUB_READ_ONLY=false. | Yes |
delete_file | Delete an existing file from a branch in a git commit. Requires the current blob SHA to guard against concurrent overwrites. Requires write permissions and GITHUB_READ_ONLY=false. | Yes |
list_branches | List branches in a repository with protection status and head commit SHAs. Supports upstream filtering by protected status and capped pagination (max 100). If branch name is already known, prefer 'get_branch'. | No |
get_branch | Get detailed status of a specific branch, including branch protection rules and latest commit details. Use to verify branch existence or protection policies before merging or deleting. | No |
get_branch_protection | Retrieve comprehensive branch protection rules for a specific Git branch, including required status checks, required reviews, admin enforcement, and force-push / deletion restrictions. | No |
create_branch | Create a new git branch pointing to a commit SHA or branched from an existing branch (defaults to 'main'). Use before committing changes or opening a pull request. Requires write permissions and GITHUB_READ_ONLY=false. | Yes |
delete_branch | Delete a branch from a repository. Protected: explicitly rejects requests to delete the default branch (e.g. 'main') to prevent repository breakage. Requires write permissions and GITHUB_READ_ONLY=false. | Yes |
fork_repository | Fork a repository into the authenticated user's account or a specified organization namespace. Use when contributing to upstream projects where direct push access is restricted. Requires write permissions and GITHUB_READ_ONLY=false. | Yes |
commits — 6 actions)| Action | Description | Mutating? |
|---|---|---|
list_commits | List repository commit history chronologically with upstream filtering (sha, path, author, since, until) and capped pagination (max 100). For viewing actual line-by-line diffs of a commit, use get_commit instead. | No |
get_commit | Get detailed commit metadata, file modification statistics, and unified diffs for a specific commit SHA or ref. Use when reviewing code changes in a commit or debugging regressions. Diffs are token-budget optimized and truncated at max_diff_lines (default: 400 lines). | No |
create_commit | Create an atomic Git commit with multiple created, updated, or deleted files using the GitHub Git Trees API. Use when refactoring, applying multi-file code changes, or updating code and docs together. Avoids multiple individual single-file commits and does not require local git cloning. Requires write permissions and GITHUB_READ_ONLY=false. | Yes |
push_files | Alias for 'create_commit': atomically commit additions, modifications, or deletions to multiple files in a single Git commit via the GitHub Git Database API. Requires write permissions and GITHUB_READ_ONLY=false. | Yes |
| get_commit_status | Get the combined status check state (pending, success, failure)
Only the beginning is shown; read the rest in the repo