MatrixRecord of · MCP Authorization 2026-07-28

GitLab

How it meets the 23 requirements of MCP Authorization.

Supported
12
Unsupported
2
Unknown, recorded
0
Not observed yet
9
Endpoint
https://gitlab.com/api/v4/mcp
Transport
Streamable HTTP
Access
Public Anyone can connect; where an account is needed, anyone can create one by self-service sign-up. Manual check · jbspeakr (documentation pass with Claude Code) · · evidence · Generally available with GitLab 19.5 on the Free, Premium and Ultimate tiers of GitLab.com; the MCP server must be allowed for a top-level group the user belongs to, which the group's owner turns on.
Auth
OAuth An OAuth 2.x authorization obtained through the server's authorization server. Manual check · jbspeakr (documentation pass with Claude Code) · · evidence · OAuth access token with the mcp scope, obtained through dynamic client registration or a pre-registered application; a fine-grained personal access token is also accepted.
Why it is listed
Added by the atlas maintainer from the vendor's own documentation. Source
Homepage
https://gitlab.com
Notes
Self-managed and Dedicated instances serve the same endpoint at their own host; the atlas lists GitLab.com.

Against MCP Authorization 2026-07-28current

  • Supported 12
  • Unsupported 2
  • Unknown 9

Passive scan · Requests

  • MUST8 supported
  • SHOULD2 supported, 2 unsupported
  • MAY2 supported

Contribute a correctionWithdraw this serverJSON

Older revisions of the matrix: 2025-11-25

MCP server features 13

FeatureLevelStatusObservedEvidence
Protected Resource Metadata servedmcp.prm · Discovery · Authorization Server Discovery › Authorization Server LocationMUSTSupportedPassive scan · scanner@0.4.0source— HTTP 200; resource: https://gitlab.com/api/v4/mcp
PRM lists an authorization servermcp.prm.authorization-servers · Discovery · Authorization Server Discovery › Authorization Server LocationMUSTSupportedPassive scan · scanner@0.4.0source— HTTP 200; authorization_servers: [https://gitlab.com]
PRM lists scopes_supportedmcp.prm.scopes-supported · Discovery · Authorization › Scope Selection StrategyMAYSupportedPassive scan · scanner@0.4.0source— HTTP 200; scopes_supported: [mcp]
PRM reachable at a well-known URImcp.prm.well-known · Discovery · Authorization Server Discovery › Protected Resource Metadata Discovery RequirementsMUSTSupportedPassive scan · scanner@0.4.0source— HTTP 200; found at the path-aware location
resource_metadata in the 401 challengemcp.prm.www-authenticate · Discovery · Authorization Server Discovery › Protected Resource Metadata Discovery RequirementsMUSTSupportedPassive scan · scanner@0.4.0source— HTTP 401; WWW-Authenticate resource_metadata: https://gitlab.com/.well-known/oauth-protected-resource/api/v4/mcp
403 insufficient_scope for step-upmcp.rs.insufficient-scope · Authorization · Authorization › Scope Challenge HandlingSHOULDUnknown no observationno observation yet
Scope in the WWW-Authenticate challengemcp.rs.scope-challenge · Authorization · Authorization › Scope Selection StrategySHOULDSupportedPassive scan · scanner@0.4.0source— HTTP 401; WWW-Authenticate scope: [mcp]
No offline_access in advertised scopesmcp.prm.no-offline-access · Tokens · Authorization › Refresh TokensSHOULDSupportedPassive scan · scanner@0.4.0source— HTTP 200; scopes_supported without offline_access: [mcp]
401 for missing or invalid tokensmcp.rs.401-on-invalid · Tokens · Authorization › Token HandlingMUSTUnknown no observationno observation yet
Audience validationmcp.rs.audience-validation · Tokens · Security Considerations › Access Token Privilege RestrictionMUSTUnknown no observationno observation yet
Bearer token only in the Authorization headermcp.rs.bearer-header · Tokens · Authorization › Access Token UsageMUSTUnknown no observationno observation yet
No token passthrough to upstream APIsmcp.rs.no-passthrough · Delegation · Security Considerations › Access Token Privilege RestrictionMUSTUnknown no observationno observation yet
Per-client consent on proxy serversmcp.proxy.consent · Consent · Security Considerations › Confused Deputy ProblemMUSTUnknown no observationno observation yet

Authorization server features 10

FeatureLevelStatusObservedEvidence
Metadata issuer matches the discovery URLmcp.as.issuer-match · Discovery · Authorization Server Discovery › Authorization Server Metadata DiscoveryMUSTSupportedPassive scan · scanner@0.4.0source— HTTP 200; issuer: https://gitlab.com equals the issuer the PRM named
Authorization server metadata discoverablemcp.as.metadata · Discovery · Authorization Server Discovery › Authorization Server Metadata DiscoveryMUSTSupportedPassive scan · scanner@0.4.0source— HTTP 200; issuer: https://gitlab.com
Client ID Metadata Documents supportedmcp.as.cimd · Registration · Client Registration › Client ID Metadata DocumentsSHOULDUnsupportedPassive scan · scanner@0.4.0source— HTTP 200; client_id_metadata_document_supported: absent
Dynamic Client Registration offeredmcp.as.dcr · Registration · Client Registration › Dynamic Client RegistrationMAYSupportedPassive scan · scanner@0.4.0source— HTTP 200; registration_endpoint: https://gitlab.com/oauth/register
Documented pre-registration pathmcp.as.preregistration · Registration · Client Registration › Pre-registrationSHOULDUnknown no observationno observation yet
Issuer identifier in authorization responsesmcp.as.iss-param · Authorization · Authorization › Authorization Response ValidationSHOULDUnsupportedPassive scan · scanner@0.4.0source— HTTP 200; authorization_response_iss_parameter_supported: absent
PKCE with S256 advertisedmcp.as.pkce-s256 · Authorization · Security Considerations › Authorization Code ProtectionMUSTSupportedPassive scan · scanner@0.4.0source— HTTP 200; code_challenge_methods_supported: [S256, plain]
Refresh token rotation for public clientsmcp.as.refresh-rotation · Tokens · Security Considerations › Token TheftMUSTUnknown no observationno observation yet
Resource indicators honouredmcp.as.resource-indicator · Tokens · Security Considerations › Token Audience Binding and ValidationMUSTUnknown no observationno observation yet
All endpoints served over HTTPSmcp.as.https · Transport · Security Considerations › Communication SecurityMUSTSupportedPassive scan · scanner@0.4.0source— HTTP 200; all 7 endpoints use https

This server's ledger

No status change on record

Every cell of this server still shows the status of its first observation.

The whole ledger

What the scanner asked

The requests behind the rows marked passive scan above, in the order the scanner makes them, each with the newest answer recorded. None carries a credential or a message.

  1. GEThttps://gitlab.com/.well-known/oauth-protected-resource/api/v4/mcpHTTP 200read resource, authorization_servers, scopes_supported
  2. GEThttps://gitlab.com/api/v4/mcpHTTP 401read status, WWW-Authenticate
  3. GEThttps://gitlab.com/.well-known/oauth-authorization-serverHTTP 200read issuer, client_id_metadata_document_supported, registration_endpoint, authorization_response_iss_parameter_supported, code_challenge_methods_supported
  4. 14 checks, read into the tables above

Newest scanner observation · letsauth-scanner/0.4.0 · reproduce with pnpm scan gitlab · scan JSON · data file · how the scanner works