A side-by-side look at the Gitea 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 Gitea for version control work; choose Github for version control as a local process. You can also run both side by side in one mcpServers block.
FORGEJO_TOKEN_READ_ONLY.whoami, version, list_my_repos.search_repos, get_repo, list_repo_issues.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Version Control | Version Control |
| Quality signal | 45/100 · Fair | 56/100 · Good |
| Install command | Not confirmed yet | Confirmed |
| Transport | — | Local subprocess (stdio) |
| Auth | Not declared | Not declared |
| Pricing | Not declared | Not declared |
| Required env vars | FORGEJO_TOKEN_READ_ONLY | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 0 | 0 |
| Directory activity | 0 views 0 installs 0 upvotes | 1 views 0 installs 0 upvotes |
| Tools | 46 | 9 |
| Full listing | View Gitea | View Github |
whoamiThe authenticated user (verifies the token)versionThis MCP server's version, the connected instance's version, and its `flavor` (`forgejo` or `gitea`)list_my_reposYour repositories (auto-paginated, slimmed)list_issuesIssues in `owner/repo` (open by default)list_pull_requestsPull requests in `owner/repo` (open by default)get_repoOne repository's details (incl. default branch, size in KiB, and the `has_*` unit toggles), slimmedlist_branchesBranches in `owner/repo` (auto-paginated, slimmed to name/commit/protected)list_commitsCommits on a ref (`owner/repo`, optional `sha` and `path`; auto-paginated). Slimmed to sha, subject, author, date and signature state — the raw objects carry base64 `signature`/`payload` blobs and per-commit `files`/`statsget_commitOne commit (`owner/repo/sha`), same fields. `signature` is `verified`, `unverified` or `unsigned`; `signer` on the first, `reason` on the secondlist_keysAn account's SSH and GPG keys (omit `username` for yourself). `verified` decides whether a signature can verify at all — but **Gitea omits the field on SSH keys**, so absent means unreported, not unverified. GPG entries carry the addresses the key covers and whether each is activatedlist_branch_protectionsA repository's protection rules: what each enforces (`require_signed_commits`, direct pushes, approvals, status checks) for a branch name or glob. Allowlists omitted; an empty list means nothing is protectedget_commit_statusesIndividual statuses against a commit/branch/tag: context, status, description, `target_url`. `get_combined_status` rolls these into one verdictsearch_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,…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). Opt…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 q…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 n…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 c…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"…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.
No confirmed install command for Gitea yet — follow the setup steps linked from its listing page rather than a guessed package name.
{
"mcpServers": {
"github-3": {
"command": "npx",
"args": [
"-y",
"@pipeworx/mcp-github"
]
}
}
}