Git MCP Server vs Github
A side-by-side look at the Git MCP Server and Github MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Git MCP Server for version control work as a local process; choose Github for version control as a local process. You can also run both side by side in one mcpServers block.
Which MCP server should you choose?
Choose Git MCP Server when
- You need dedicated capabilities in the Version Control domain.
- You prefer a local stdio subprocess transport.
- Its auth model fits you: No auth required.
- You have the keys it needs:
MCP_TRANSPORT_TYPE, MCP_LOG_LEVEL, MCP_HTTP_PORT, GIT_BASE_DIR, LOGS_DIR, GIT_USERNAME, GIT_EMAIL, GIT_SIGN_COMMITS. - You want tools like
git_add, git_blame, git_branch.
Choose Github when
- You need dedicated capabilities in the Version Control domain.
- You prefer a local stdio subprocess transport.
- You want tools like
search_repos, get_repo, list_repo_issues.
Feature & specification comparison
Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Version Control | Version Control |
| Quality signal | 69/100 · Great | 63/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | No auth required | Not declared |
| Pricing | Free | Not declared |
| Required env vars | MCP_TRANSPORT_TYPEMCP_LOG_LEVELMCP_HTTP_PORTGIT_BASE_DIRLOGS_DIRGIT_USERNAMEGIT_EMAILGIT_SIGN_COMMITS | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 242 | 0 |
| Directory activity | 5 views 0 installs 0 upvotes | 5 views 0 installs 0 upvotes |
| Tools | 28 | 9 |
| Full listing | View Git MCP Server | View Github |
Tools & capabilities
Git MCP Server tools 28
git_addStage files for commit. Add file contents to the staging area (index) to prepare for the next commit.git_blameShow line-by-line authorship information for a file, displaying who last modified each line and when. For large files, use startLine/endLine to limit output.git_branchManage branches: list all branches, show current branch, create a new branch, delete a branch, or rename a branch.git_changelog_analyzeGather git history context (commits, tags) and structured review instructions to support LLM-driven changelog analysis. Changelog file should be read separately; this tool provides the supporting git data and analysis framework. Pass one or more review types to control what kind of analysis to perform.git_checkoutSwitch branches or restore working tree files. Can checkout an existing branch, create a new branch, or restore specific files.git_cherry_pickCherry-pick commits from other branches. Apply specific commits to the current branch without merging entire branches.git_cleanRemove untracked files from the working directory. Requires force flag for safety. Use dry-run to preview files that would be removed.git_clear_working_dirClear the session working directory setting. This resets the context without restarting the server. Subsequent git operations will require an explicit path parameter unless git_set_working_dir is called again.git_cloneClone a repository from a remote URL or local path. Accepts HTTP(S), SSH, git://, file://, and bare filesystem paths, with optional shallow cloning.git_commitCreate a new commit with staged changes in the repository. Records a snapshot of the staging area with a commit message. **Commit Message Format:** Pass commit messages as JSON string parameters. Multi-line messages are supported using standard JSON string escaping. **Examples:** - Single line: { "message": "feat: add user authentication" } - Multi-line: { "message": "feat: add user authentication\n\nImplemented OAuth2 flow with JWT tokens.\nAdded tests for login and logout." } Note: Do not use bash heredoc syntax. Literal escape sequences (\n, \t) in the message string are automatically normalized to their actual characters.git_diffView differences between commits, branches, or working tree. Shows changes in unified diff format.git_fetchFetch updates from a remote repository. Downloads objects and refs without merging them.- +16 more on the listing page
Github tools 9
search_reposSearch GitHub repositories by keyword. Returns repo name, description, star count, forks, primary language, and URL. Use when exploring projects or finding code implementations.get_repoLook up ONE named repository by its owner/repo slug — "facebook/react", "torvalds/linux", "vercel/next.js". Use this whenever the repository is named in the question. Answers how many stars / forks / watchers a repo has, what license and language it uses, its topics, description, open issue count, its default branch, and when it was last pushed (pushed_at).list_repo_issuesList issues for a GitHub repository by owner and repo name; filters pull requests out automatically. Returns issue number, title, state, labels, author, comment count, URL, and timestamps. Defaults to open issues.get_userGet a GitHub user's public profile info. Returns name, bio, company, location, public repo count, followers, and social links. Specify username (e.g., username="torvalds").get_file_contentsRead a file from a PUBLIC GitHub repository (or list a directory) by path. PREFER OVER WEB SEARCH for "show me the README / package.json / <file> of <repo>", "read <path> from <owner/repo>", inspecting source or config files. Pass owner + repo + path (omit path or "" for the repo root listing). Optional ref = branch/tag/commit SHA. Returns decoded text for files (capped ~60k), or a directory listing of {name, path, type, size}.search_codeSearch CODE across public GitHub repositories — find where a function/symbol/string is defined or used. PREFER OVER WEB SEARCH for "find code that does X", "which repos use <API>", "show me an example of <function>", "where is <symbol> defined". Supports GitHub code-search qualifiers right in the query: repo:owner/name, org:name, user:name, language:go, filename:Dockerfile, path:src, extension:ts, in:file. Returns matching files with repo, path, and URL. Note: indexes the default branch only, ignores very common terms, and is capped at ~10 searches/minute.get_releasesGet the latest release and recent release history for a repository — the canonical way to answer "what is the latest version of <project>", "when was <repo> last released", "what changed in the newest release". Returns the latest published stable release (tag, name, date, prerelease flag, release notes, downloadable assets with download counts) plus recent releases. Falls back to git tags for repos that tag but do not cut formal releases.list_commitsList recent commits on a repository to see latest activity, what changed, and who is committing. PREFER OVER WEB SEARCH for "what are the recent commits to <repo>", "when was <owner/repo> last updated", "latest changes in <repo>". Optional sha (branch/tag/commit to start history from), path (only commits touching that file/dir), and since/until ISO timestamps. Returns sha, message, author, and date per commit.github_trending_reposTrending GitHub repositories — what is hot, popular, and taking off on GitHub right now. Answers "what are the top trending GitHub repos this week", "what is hot on GitHub today", "popular new repositories this month", "trending Rust / Python / AI projects", "which GitHub projects blew up recently". Two modes: mode="new" (default) ranks repositories CREATED inside the time window by star count — the projects that blew up this week — and mode="active" ranks repositories PUSHED inside the window by star count, surfacing established projects under heavy development. Set the window with since (day, week, or month), filter with language, add free-text query keywords such as "llm" or "agent", and raise a min_stars floor. Returns full_name, description, language, stars, forks, created and pushed dates, topics, and URL per repo. Computed live from the GitHub Search API; github.com/trending ranks by stars GAINED during the period using an unpublished algorithm that the public API keeps private, so ordering differs and every response says so in its caveat field.
Ready-to-paste client configs
Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
Git MCP Server
{
"mcpServers": {
"git-mcp-server-2": {
"command": "npx",
"args": [
"-y",
"@cyanheads/git-mcp-server@latest"
],
"env": {
"MCP_TRANSPORT_TYPE": "YOUR_MCP_TRANSPORT_TYPE_HERE",
"MCP_LOG_LEVEL": "YOUR_MCP_LOG_LEVEL_HERE",
"MCP_HTTP_PORT": "YOUR_MCP_HTTP_PORT_HERE",
"GIT_BASE_DIR": "YOUR_GIT_BASE_DIR_HERE",
"LOGS_DIR": "YOUR_LOGS_DIR_HERE",
"GIT_USERNAME": "YOUR_GIT_USERNAME_HERE",
"GIT_EMAIL": "YOUR_GIT_EMAIL_HERE",
"GIT_SIGN_COMMITS": "YOUR_GIT_SIGN_COMMITS_HERE"
}
}
}
}
Github
{
"mcpServers": {
"github-3": {
"command": "npx",
"args": [
"-y",
"@pipeworx/mcp-github"
]
}
}
}
Frequently asked questions
Git MCP Server is categorized under Version Control and uses a local stdio subprocess. Github belongs to Version Control and uses a local stdio subprocess. Pick Git MCP Server for version control work and Github for version control.
Copy the mcpServers block from the config section on this page into your client's config (for example claude_desktop_config.json or ~/.cursor/mcp.json), then fully restart the client.
Git MCP Server is listed as free. Auth: no auth required. Github has no declared pricing — check the project's own site. If a server needs environment variables such as API keys, define them under the env key in your client's MCP config.
Yes. MCP clients support multiple servers: add git-mcp-server-2 and github-3 as separate keys in the same mcpServers object, and your assistant will call tools from either one.
On AllMCPs, Git MCP Server has a quality signal of 69/100 (Great) with 5 views, 0 installs and 242 GitHub stars. Github has 63/100 (Good) with 5 views, 0 installs and 0 GitHub stars.