
This comparison is part of our MCP comparisons, within The MCP Guide. Facts are checked against each vendor's own documentation and pricing pages on the date shown.
Pick the server that matches where your code lives. If you are on GitHub, its MCP server adds a documented read-only mode and a lockdown filter for public repos. If you are on GitLab, its built-in server works on GitLab.com, Self-Managed and Dedicated with no extra install, and GitLab admins control access per group or instance.
Checked against: the GitHub MCP Server README and the GitLab MCP server docs on 28 October 2026. eSEOspace did not test either product.
Both are official servers from the code hosts themselves. They let an AI app read code, manage issues or work items, review pull or merge requests and check CI. The differences are in hosting, access controls and how much of the newest MCP spec each supports.
Key Takeaways
- GitHub says its server is "available to all GitHub users regardless of plan type"; GitLab lists its server on Free, Premium and Ultimate.
- GitHub runs a hosted remote server and also ships a local server; GitLab builds the server into every GitLab instance at
/api/v4/mcp. - Both use toolsets to limit what the AI sees; only GitHub documents a read-only mode.
- GitLab rejects legacy personal, project and group access tokens; it accepts OAuth with the
mcpscope or fine-grained tokens. - GitLab's docs say it accepts the 2026-07-28 protocol version but answers with 2025-11-25 for now.
At a glance
| GitHub MCP Server | GitLab MCP server | |
|---|---|---|
| Publisher | GitHub | GitLab |
| Status | Not stated in the README | Generally available since GitLab 19.5 |
| Plans | All GitHub plans | Free, Premium, Ultimate |
| Hosting | Remote at api.githubcopilot.com/mcp/, or local Docker or binary | Built into GitLab.com, Self-Managed and Dedicated |
| Self-hosted code host | GitHub Enterprise Server: local server only | Self-Managed and Dedicated: built in |
| Transport | HTTP (remote), stdio (local) | HTTP; stdio through the mcp-remote proxy |
| Sign-in | OAuth or personal access token | OAuth with mcp scope, or fine-grained token |
| Tool limits | Toolsets, single tools, all | Toolsets by HTTP header, all |
| Read-only mode | Yes | Not documented |
| Prompt-injection filter | Lockdown mode (best effort) | Not documented |
| Admin switch | "MCP servers in Copilot" policy for Copilot Business and Enterprise | Allow access per top-level group or instance |
| Source code | Open source, MIT | Part of GitLab; not linked from the MCP docs |
Where GitHub MCP is stronger
Read-only mode. GitHub's README says the --read-only flag "will only offer read-only tools." It adds that "read-only mode takes priority," so write tools are skipped even if you request them by name. The remote server docs say you can "Add /readonly to the end of any URL" to do the same on the hosted server. GitLab's MCP page does not describe an equivalent.
Lockdown mode for public repos. Lockdown mode hides issues, pull requests and comments from authors without push access. GitHub calls it "a best-effort content filter intended to reduce the risk of prompt injection." It also says it is "not an authorization boundary." Still, it is a control GitLab does not document. See prompt injection through tool results.
Hosted and local options. You can point a client at the hosted server or run your own copy in Docker. The README notes the local server can sign you in with OAuth, and "the token is kept in memory only." The remote server adds toolsets the local one lacks, such as copilot_spaces and github_support_docs_search.
Wide toolset menu. The default toolset loads context, repos, issues, pull_requests and users. Optional toolsets cover Actions, code security, Dependabot, discussions, gists, projects, governance and more. Each toolset also has its own remote URL.
Where GitLab MCP is stronger
Built into self-managed GitLab. GitLab lists the server for GitLab.com, Self-Managed and Dedicated. There is nothing extra to deploy. GitHub's README says "GitHub Enterprise Server does not support remote server hosting," so GHES teams must run the local server.
Clear admin gate. GitLab's prerequisites say to "Allow access to the MCP server" for the top-level group on GitLab.com, or for the instance on Self-Managed and Dedicated. That gives an admin one switch for the whole organization.
Stricter token rules. GitLab accepts an OAuth token with the mcp scope, or a fine-grained token with the MCP tool permission. Legacy personal, project and group tokens get "403 Forbidden," even with the api scope. That stops teams from reusing broad old tokens.
Documented rate limits. On GitLab.com, the docs list per-user limits by plan: Free 60 requests a minute and 3,600 an hour, Premium and Ultimate 600 a minute and 5,000 an hour. GitLab notes these sit behind feature flags. The limits apply per user across all clients.
Tool name prefixes. An X-Gitlab-Mcp-Server-Tool-Name-Prefix header adds a prefix such as gitlab_ to every tool. That helps when several servers expose similar tool names.
Pricing
Neither vendor charges separately for its MCP server. You pay for the code host plan, and some tools need paid features.
GitHub (pricing):
- Free: $0.
- Team: $4 per user per month.
- Enterprise: $21 per user per month. The page says "GitHub Enterprise now includes access to GitHub Copilot."
- GitHub's MCP server docs say tools tied to paid features need the same license. For example, Copilot cloud agent tools "require a paid Copilot license."
GitLab (pricing):
- Free: $0, with 5 users per top-level group and 400 compute minutes a month.
- Premium: $29 per user per month, billed annually, with $12 of GitLab Credits per user per month.
- Ultimate: custom pricing, with $24 of GitLab Credits per user per month.
- The
duo_agent_platformtoolset needs GitLab Duo Agent Platform, through Premium or Ultimate or GitLab Credits. Code security tools appear only when the licensed feature is available.
Security and admin controls
Shared risk. Both servers act with the signed-in user's access. Anything the user can delete, the AI can try to delete. GitHub's tool list includes delete_file, delete_repository and merge_pull_request. Start narrow. Our guide to excessive permissions explains why.
GitHub. Use --read-only or /readonly URLs for review work. Turn on lockdown mode for public repositories. In HTTP mode, the README says the operator's lockdown setting is "an upper bound": an X-MCP-Lockdown header can turn it on but cannot turn it off. Copilot Business and Enterprise organizations must enable the "MCP servers in Copilot" policy.
GitLab. The docs say: "You're responsible for guarding against prompt injection when you use these tools." GitLab adds that it "does not verify which MCP client application presents the clientId," and that apps created through the REST API "do not enforce Proof Key for Code Exchange (PKCE)." Users "can access only the data they are permitted to."
Spec version. GitLab says 2026-07-28 is "Accepted in the initialize request only," and the server answers with 2025-11-25 because "it does not implement the stateless features of this version yet." Clients that speak only 2026-07-28 may need a fallback.
Which to choose
Pick GitHub MCP if:
- Your repositories are on GitHub.com or GitHub Enterprise Cloud.
- You want a hosted server plus a hard read-only switch.
- You work with public repos and want lockdown filtering.
Pick GitLab MCP if:
- Your code is on GitLab.com, Self-Managed or Dedicated.
- You want the server inside your own instance with no extra deployment.
- Your admins want one group-level or instance-level switch and strict token types.
If you use both hosts, connect both servers and scope each to read-heavy toolsets first. Our pull request review playbook shows a safe starting workflow.
Next step
eSEOspace sets up code-host MCP servers in Claude Code with narrow toolsets and approval rules. See our Claude Code development service or browse more MCP comparisons. Full profiles: GitHub MCP Server and GitLab MCP server.
Frequently asked questions
Is the GitHub or GitLab MCP server free?
Both are included with every plan. GitHub says its server is "available to all GitHub users regardless of plan type." GitLab lists Free, Premium and Ultimate. Tools tied to paid features, such as Copilot cloud agent or GitLab Duo, need those licenses.
Can I make the GitLab MCP server read-only?
GitLab's MCP page does not document a read-only mode as of October 2026. You can limit toolsets with the X-Gitlab-Enabled-Mcp-Server-Toolsets header, and users only reach data they are already allowed to see. GitHub offers --read-only and /readonly URLs.
Does GitHub's remote server work with GitHub Enterprise Server?
No. The README says GitHub Enterprise Server does not support remote server hosting. Run the local server in Docker or as a binary and point it at your GHES hostname. GitHub Enterprise Cloud with data residency has its own remote URL on ghe.com.
Why does GitLab reject my access token?
GitLab rejects legacy personal, project and group access tokens with a 403 error, because they cannot carry the mcp scope. Use OAuth with the mcp scope or a fine-grained personal access token with the MCP tool permission.











