Developer · Remote MCP server

GitLab MCP Server

Go MCP server for GitLab: 2 dynamic tools reach 1000+ REST/GraphQL actions. Free/CE, no paid tier.

Visit GitLab MCP Server's website

What the MCP Registry states

The entry as published to the official MCP Registry (read 2026-10-04), latest version.

Registry name
io.github.jmrplens/gitlab-mcp-server
Version
3.1.0
Status
Active
Category
developer
Transport
Streamable HTTP, stdio (local process)
Package
MCP Bundle (.mcpb), OCI image (Docker), npm, PyPI, NuGet
Published
2026-09-30
Updated
2026-09-30
Publisher
jmrplens (GitHub) · 2 servers with pages here
Listed under
GitLab MCP servers, GraphQL MCP servers
Website
jmrp.io/docs/gitlab-mcp-server
Repository
github.com/jmrplens/gitlab-mcp-server
Source
Registry API entry

Remote endpoints

TransportURLHeaders declared
Streamable HTTPhttps://mcp.jmrp.io/gitlabAuthorization (secret)

Packages

RegistryPackageVersionTransportEnvironment variables
MCP Bundle (.mcpb)https://github.com/jmrplens/gitlab-mcp-server/releases/download/v3.1.0/gitlab-mcp-server.mcpbSHA-256 checksum stated3.1.0stdioGITLAB_URL, GITLAB_TOKEN (required, secret), GITLAB_MCP_SKIP_TLS_VERIFY, GITLAB_MCP_TOOL_SURFACE, GITLAB_MCP_CAPABILITY_SURFACE, GITLAB_MCP_META_PARAM_SCHEMA, GITLAB_MCP_TIER, GITLAB_MCP_READ_ONLY, GITLAB_MCP_SAFE_MODE, GITLAB_MCP_EMBEDDED_RESOURCES, GITLAB_MCP_EXCLUDE_TOOLS, GITLAB_MCP_IGNORE_SCOPES, GITLAB_MCP_UPLOAD_MAX_FILE_SIZE, GITLAB_MCP_ALLOWED_IMPORT_DIRS, GITLAB_MCP_RATE_LIMIT_RPS, GITLAB_MCP_RATE_LIMIT_BURST, GITLAB_MCP_LOG_LEVEL
OCI image (Docker)ghcr.io/jmrplens/gitlab-mcp-server:3.1.0@sha256:87e483299a2663a7a5d4d28679859b0c7fba2b1a421b7de2652441a569d4a2fc—stdioGITLAB_URL, GITLAB_TOKEN (required, secret), GITLAB_MCP_SKIP_TLS_VERIFY, GITLAB_MCP_TOOL_SURFACE, GITLAB_MCP_CAPABILITY_SURFACE, GITLAB_MCP_META_PARAM_SCHEMA, GITLAB_MCP_TIER, GITLAB_MCP_READ_ONLY, GITLAB_MCP_SAFE_MODE, GITLAB_MCP_EMBEDDED_RESOURCES, GITLAB_MCP_EXCLUDE_TOOLS, GITLAB_MCP_IGNORE_SCOPES, GITLAB_MCP_UPLOAD_MAX_FILE_SIZE, GITLAB_MCP_ALLOWED_IMPORT_DIRS, GITLAB_MCP_RATE_LIMIT_RPS, GITLAB_MCP_RATE_LIMIT_BURST, GITLAB_MCP_LOG_LEVEL
OCI image (Docker)docker.io/jmrplens/gitlab-mcp-server:3.1.0@sha256:87e483299a2663a7a5d4d28679859b0c7fba2b1a421b7de2652441a569d4a2fc—stdioGITLAB_URL, GITLAB_TOKEN (required, secret), GITLAB_MCP_SKIP_TLS_VERIFY, GITLAB_MCP_TOOL_SURFACE, GITLAB_MCP_CAPABILITY_SURFACE, GITLAB_MCP_META_PARAM_SCHEMA, GITLAB_MCP_TIER, GITLAB_MCP_READ_ONLY, GITLAB_MCP_SAFE_MODE, GITLAB_MCP_EMBEDDED_RESOURCES, GITLAB_MCP_EXCLUDE_TOOLS, GITLAB_MCP_IGNORE_SCOPES, GITLAB_MCP_UPLOAD_MAX_FILE_SIZE, GITLAB_MCP_ALLOWED_IMPORT_DIRS, GITLAB_MCP_RATE_LIMIT_RPS, GITLAB_MCP_RATE_LIMIT_BURST, GITLAB_MCP_LOG_LEVEL
npmruntime: npx@jmrp.io/gitlab-mcp-server3.1.0stdioGITLAB_URL, GITLAB_TOKEN (required, secret), GITLAB_MCP_SKIP_TLS_VERIFY, GITLAB_MCP_TOOL_SURFACE, GITLAB_MCP_CAPABILITY_SURFACE, GITLAB_MCP_META_PARAM_SCHEMA, GITLAB_MCP_TIER, GITLAB_MCP_READ_ONLY, GITLAB_MCP_SAFE_MODE, GITLAB_MCP_EMBEDDED_RESOURCES, GITLAB_MCP_EXCLUDE_TOOLS, GITLAB_MCP_IGNORE_SCOPES, GITLAB_MCP_UPLOAD_MAX_FILE_SIZE, GITLAB_MCP_ALLOWED_IMPORT_DIRS, GITLAB_MCP_RATE_LIMIT_RPS, GITLAB_MCP_RATE_LIMIT_BURST, GITLAB_MCP_LOG_LEVEL
PyPIruntime: uvxjmrplens-gitlab-mcp-server3.1.0stdioGITLAB_URL, GITLAB_TOKEN (required, secret), GITLAB_MCP_SKIP_TLS_VERIFY, GITLAB_MCP_TOOL_SURFACE, GITLAB_MCP_CAPABILITY_SURFACE, GITLAB_MCP_META_PARAM_SCHEMA, GITLAB_MCP_TIER, GITLAB_MCP_READ_ONLY, GITLAB_MCP_SAFE_MODE, GITLAB_MCP_EMBEDDED_RESOURCES, GITLAB_MCP_EXCLUDE_TOOLS, GITLAB_MCP_IGNORE_SCOPES, GITLAB_MCP_UPLOAD_MAX_FILE_SIZE, GITLAB_MCP_ALLOWED_IMPORT_DIRS, GITLAB_MCP_RATE_LIMIT_RPS, GITLAB_MCP_RATE_LIMIT_BURST, GITLAB_MCP_LOG_LEVEL
NuGetruntime: dnxgitlab-mcp-server3.1.0stdioGITLAB_URL, GITLAB_TOKEN (required, secret), GITLAB_MCP_SKIP_TLS_VERIFY, GITLAB_MCP_TOOL_SURFACE, GITLAB_MCP_CAPABILITY_SURFACE, GITLAB_MCP_META_PARAM_SCHEMA, GITLAB_MCP_TIER, GITLAB_MCP_READ_ONLY, GITLAB_MCP_SAFE_MODE, GITLAB_MCP_EMBEDDED_RESOURCES, GITLAB_MCP_EXCLUDE_TOOLS, GITLAB_MCP_IGNORE_SCOPES, GITLAB_MCP_UPLOAD_MAX_FILE_SIZE, GITLAB_MCP_ALLOWED_IMPORT_DIRS, GITLAB_MCP_RATE_LIMIT_RPS, GITLAB_MCP_RATE_LIMIT_BURST, GITLAB_MCP_LOG_LEVEL

How to connect GitLab MCP Server

GitLab MCP Server is a remote MCP server: there is nothing to install. Its endpoint is https://mcp.jmrp.io/gitlab, served over Streamable HTTP. In an assistant that accepts remote MCP servers (often under a setting named connectors, integrations or tools), add a new server and give it this URL; in a client configured by file, add it as a remote (HTTP) server with the same URL.

The registry entry declares an HTTP header for the connection: Authorization (secret). A secret header usually carries an API key or token issued by the service; clients that accept custom headers set it with the server's URL.

It can also run locally from an MCP Bundle: a single downloadable archive holding a local server and a manifest that describes it: https://github.com/jmrplens/gitlab-mcp-server/releases/download/v3.1.0/gitlab-mcp-server.mcpb version 3.1.0. It speaks MCP over stdio, so the client starts it as a program and talks to it through standard input and output. It needs a client that installs MCP Bundles; the file is opened in, or added to, that client. It reads these environment variables: GITLAB_URL, GITLAB_TOKEN (required, secret), GITLAB_MCP_SKIP_TLS_VERIFY, GITLAB_MCP_TOOL_SURFACE, GITLAB_MCP_CAPABILITY_SURFACE, GITLAB_MCP_META_PARAM_SCHEMA, GITLAB_MCP_TIER, GITLAB_MCP_READ_ONLY, GITLAB_MCP_SAFE_MODE, GITLAB_MCP_EMBEDDED_RESOURCES, GITLAB_MCP_EXCLUDE_TOOLS, GITLAB_MCP_IGNORE_SCOPES, GITLAB_MCP_UPLOAD_MAX_FILE_SIZE, GITLAB_MCP_ALLOWED_IMPORT_DIRS, GITLAB_MCP_RATE_LIMIT_RPS, GITLAB_MCP_RATE_LIMIT_BURST and GITLAB_MCP_LOG_LEVEL; set them in the client's configuration for this server.

It can also run locally from a container image in an OCI registry such as Docker Hub or GitHub Container Registry: ghcr.io/jmrplens/gitlab-mcp-server:3.1.0@sha256:87e483299a2663a7a5d4d28679859b0c7fba2b1a421b7de2652441a569d4a2fc. It speaks MCP over stdio, so the client starts it as a program and talks to it through standard input and output. It needs Docker or another OCI container runtime; started with docker run — the usual command is docker run -i --rm -e GITLAB_URL -e GITLAB_TOKEN -e GITLAB_MCP_SKIP_TLS_VERIFY -e GITLAB_MCP_TOOL_SURFACE -e GITLAB_MCP_CAPABILITY_SURFACE -e GITLAB_MCP_META_PARAM_SCHEMA -e GITLAB_MCP_TIER -e GITLAB_MCP_READ_ONLY -e GITLAB_MCP_SAFE_MODE -e GITLAB_MCP_EMBEDDED_RESOURCES -e GITLAB_MCP_EXCLUDE_TOOLS -e GITLAB_MCP_IGNORE_SCOPES -e GITLAB_MCP_UPLOAD_MAX_FILE_SIZE -e GITLAB_MCP_ALLOWED_IMPORT_DIRS -e GITLAB_MCP_RATE_LIMIT_RPS -e GITLAB_MCP_RATE_LIMIT_BURST -e GITLAB_MCP_LOG_LEVEL ghcr.io/jmrplens/gitlab-mcp-server:3.1.0@sha256:87e483299a2663a7a5d4d28679859b0c7fba2b1a421b7de2652441a569d4a2fc. It reads these environment variables: GITLAB_URL, GITLAB_TOKEN (required, secret), GITLAB_MCP_SKIP_TLS_VERIFY, GITLAB_MCP_TOOL_SURFACE, GITLAB_MCP_CAPABILITY_SURFACE, GITLAB_MCP_META_PARAM_SCHEMA, GITLAB_MCP_TIER, GITLAB_MCP_READ_ONLY, GITLAB_MCP_SAFE_MODE, GITLAB_MCP_EMBEDDED_RESOURCES, GITLAB_MCP_EXCLUDE_TOOLS, GITLAB_MCP_IGNORE_SCOPES, GITLAB_MCP_UPLOAD_MAX_FILE_SIZE, GITLAB_MCP_ALLOWED_IMPORT_DIRS, GITLAB_MCP_RATE_LIMIT_RPS, GITLAB_MCP_RATE_LIMIT_BURST and GITLAB_MCP_LOG_LEVEL; set them in the client's configuration for this server.

It can also run locally from a container image in an OCI registry such as Docker Hub or GitHub Container Registry: docker.io/jmrplens/gitlab-mcp-server:3.1.0@sha256:87e483299a2663a7a5d4d28679859b0c7fba2b1a421b7de2652441a569d4a2fc. It speaks MCP over stdio, so the client starts it as a program and talks to it through standard input and output. It needs Docker or another OCI container runtime; started with docker run — the usual command is docker run -i --rm -e GITLAB_URL -e GITLAB_TOKEN -e GITLAB_MCP_SKIP_TLS_VERIFY -e GITLAB_MCP_TOOL_SURFACE -e GITLAB_MCP_CAPABILITY_SURFACE -e GITLAB_MCP_META_PARAM_SCHEMA -e GITLAB_MCP_TIER -e GITLAB_MCP_READ_ONLY -e GITLAB_MCP_SAFE_MODE -e GITLAB_MCP_EMBEDDED_RESOURCES -e GITLAB_MCP_EXCLUDE_TOOLS -e GITLAB_MCP_IGNORE_SCOPES -e GITLAB_MCP_UPLOAD_MAX_FILE_SIZE -e GITLAB_MCP_ALLOWED_IMPORT_DIRS -e GITLAB_MCP_RATE_LIMIT_RPS -e GITLAB_MCP_RATE_LIMIT_BURST -e GITLAB_MCP_LOG_LEVEL docker.io/jmrplens/gitlab-mcp-server:3.1.0@sha256:87e483299a2663a7a5d4d28679859b0c7fba2b1a421b7de2652441a569d4a2fc. It reads these environment variables: GITLAB_URL, GITLAB_TOKEN (required, secret), GITLAB_MCP_SKIP_TLS_VERIFY, GITLAB_MCP_TOOL_SURFACE, GITLAB_MCP_CAPABILITY_SURFACE, GITLAB_MCP_META_PARAM_SCHEMA, GITLAB_MCP_TIER, GITLAB_MCP_READ_ONLY, GITLAB_MCP_SAFE_MODE, GITLAB_MCP_EMBEDDED_RESOURCES, GITLAB_MCP_EXCLUDE_TOOLS, GITLAB_MCP_IGNORE_SCOPES, GITLAB_MCP_UPLOAD_MAX_FILE_SIZE, GITLAB_MCP_ALLOWED_IMPORT_DIRS, GITLAB_MCP_RATE_LIMIT_RPS, GITLAB_MCP_RATE_LIMIT_BURST and GITLAB_MCP_LOG_LEVEL; set them in the client's configuration for this server.

It can also run locally from a Node.js package published to the npm registry: @jmrp.io/gitlab-mcp-server version 3.1.0. It speaks MCP over stdio, so the client starts it as a program and talks to it through standard input and output. It needs Node.js; clients usually start it with npx — the usual command is npx -y @jmrp.io/gitlab-mcp-server@3.1.0. It reads these environment variables: GITLAB_URL, GITLAB_TOKEN (required, secret), GITLAB_MCP_SKIP_TLS_VERIFY, GITLAB_MCP_TOOL_SURFACE, GITLAB_MCP_CAPABILITY_SURFACE, GITLAB_MCP_META_PARAM_SCHEMA, GITLAB_MCP_TIER, GITLAB_MCP_READ_ONLY, GITLAB_MCP_SAFE_MODE, GITLAB_MCP_EMBEDDED_RESOURCES, GITLAB_MCP_EXCLUDE_TOOLS, GITLAB_MCP_IGNORE_SCOPES, GITLAB_MCP_UPLOAD_MAX_FILE_SIZE, GITLAB_MCP_ALLOWED_IMPORT_DIRS, GITLAB_MCP_RATE_LIMIT_RPS, GITLAB_MCP_RATE_LIMIT_BURST and GITLAB_MCP_LOG_LEVEL; set them in the client's configuration for this server.

It can also run locally from a Python package published to PyPI: jmrplens-gitlab-mcp-server version 3.1.0. It speaks MCP over stdio, so the client starts it as a program and talks to it through standard input and output. It needs Python; clients usually start it with uvx (from uv) or after pip install — the usual command is uvx jmrplens-gitlab-mcp-server. It reads these environment variables: GITLAB_URL, GITLAB_TOKEN (required, secret), GITLAB_MCP_SKIP_TLS_VERIFY, GITLAB_MCP_TOOL_SURFACE, GITLAB_MCP_CAPABILITY_SURFACE, GITLAB_MCP_META_PARAM_SCHEMA, GITLAB_MCP_TIER, GITLAB_MCP_READ_ONLY, GITLAB_MCP_SAFE_MODE, GITLAB_MCP_EMBEDDED_RESOURCES, GITLAB_MCP_EXCLUDE_TOOLS, GITLAB_MCP_IGNORE_SCOPES, GITLAB_MCP_UPLOAD_MAX_FILE_SIZE, GITLAB_MCP_ALLOWED_IMPORT_DIRS, GITLAB_MCP_RATE_LIMIT_RPS, GITLAB_MCP_RATE_LIMIT_BURST and GITLAB_MCP_LOG_LEVEL; set them in the client's configuration for this server.

It can also run locally from a .NET package published to NuGet: gitlab-mcp-server version 3.1.0. It speaks MCP over stdio, so the client starts it as a program and talks to it through standard input and output. It needs the .NET SDK; run as a .NET tool; the entry names dnx as the runtime. It reads these environment variables: GITLAB_URL, GITLAB_TOKEN (required, secret), GITLAB_MCP_SKIP_TLS_VERIFY, GITLAB_MCP_TOOL_SURFACE, GITLAB_MCP_CAPABILITY_SURFACE, GITLAB_MCP_META_PARAM_SCHEMA, GITLAB_MCP_TIER, GITLAB_MCP_READ_ONLY, GITLAB_MCP_SAFE_MODE, GITLAB_MCP_EMBEDDED_RESOURCES, GITLAB_MCP_EXCLUDE_TOOLS, GITLAB_MCP_IGNORE_SCOPES, GITLAB_MCP_UPLOAD_MAX_FILE_SIZE, GITLAB_MCP_ALLOWED_IMPORT_DIRS, GITLAB_MCP_RATE_LIMIT_RPS, GITLAB_MCP_RATE_LIMIT_BURST and GITLAB_MCP_LOG_LEVEL; set them in the client's configuration for this server.

In the mcpServers JSON format that many desktop and editor MCP clients read, the entry looks like this (placeholders in angle brackets):

{
  "mcpServers": {
    "gitlab-mcp-server": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITLAB_URL",
        "-e",
        "GITLAB_TOKEN",
        "-e",
        "GITLAB_MCP_SKIP_TLS_VERIFY",
        "-e",
        "GITLAB_MCP_TOOL_SURFACE",
        "-e",
        "GITLAB_MCP_CAPABILITY_SURFACE",
        "-e",
        "GITLAB_MCP_META_PARAM_SCHEMA",
        "-e",
        "GITLAB_MCP_TIER",
        "-e",
        "GITLAB_MCP_READ_ONLY",
        "-e",
        "GITLAB_MCP_SAFE_MODE",
        "-e",
        "GITLAB_MCP_EMBEDDED_RESOURCES",
        "-e",
        "GITLAB_MCP_EXCLUDE_TOOLS",
        "-e",
        "GITLAB_MCP_IGNORE_SCOPES",
        "-e",
        "GITLAB_MCP_UPLOAD_MAX_FILE_SIZE",
        "-e",
        "GITLAB_MCP_ALLOWED_IMPORT_DIRS",
        "-e",
        "GITLAB_MCP_RATE_LIMIT_RPS",
        "-e",
        "GITLAB_MCP_RATE_LIMIT_BURST",
        "-e",
        "GITLAB_MCP_LOG_LEVEL",
        "ghcr.io/jmrplens/gitlab-mcp-server:3.1.0@sha256:87e483299a2663a7a5d4d28679859b0c7fba2b1a421b7de2652441a569d4a2fc"
      ],
      "env": {
        "GITLAB_URL": "<value>",
        "GITLAB_TOKEN": "<secret>",
        "GITLAB_MCP_SKIP_TLS_VERIFY": "<value>",
        "GITLAB_MCP_TOOL_SURFACE": "<value>",
        "GITLAB_MCP_CAPABILITY_SURFACE": "<value>",
        "GITLAB_MCP_META_PARAM_SCHEMA": "<value>",
        "GITLAB_MCP_TIER": "<value>",
        "GITLAB_MCP_READ_ONLY": "<value>",
        "GITLAB_MCP_SAFE_MODE": "<value>",
        "GITLAB_MCP_EMBEDDED_RESOURCES": "<value>",
        "GITLAB_MCP_EXCLUDE_TOOLS": "<value>",
        "GITLAB_MCP_IGNORE_SCOPES": "<value>",
        "GITLAB_MCP_UPLOAD_MAX_FILE_SIZE": "<value>",
        "GITLAB_MCP_ALLOWED_IMPORT_DIRS": "<value>",
        "GITLAB_MCP_RATE_LIMIT_RPS": "<value>",
        "GITLAB_MCP_RATE_LIMIT_BURST": "<value>",
        "GITLAB_MCP_LOG_LEVEL": "<value>"
      }
    }
  }
}

Derived from the registry entry, not tested here. What the server does, and on what terms, is set by its publisher; check its repository or website before giving it access to your accounts or files. How to add an MCP server to an assistant · Before you connect

More from jmrplens (GitHub)

All 2 →
ServerRunsEndpoint or package
Books & Papers MCP ServerFederated search of books and papers, BibTeX/RIS citations, open-access retrieval and reading.Remote & Local · HTTP, stdiomcp.jmrp.io

More developer servers

All 6,250 →
ServerRunsEndpoint or package
GitLab Documentation MCP ServerSearchable access to GitLab documentation from multiple repositories with full-text search.Local · stdioOCI image (Docker): docker.io/nunolima/gitlab-docs-mcp:18.7
Gitlab MCPGitLab over MCP from your own account: issues, merge requests, reviews, the repository and CI.Local · stdioMCP Bundle (.mcpb): mmedum/gitlab-mcp/releases/download/v2.2.1/gitla
Gitlab MCPPublic GitLab projects and users. No key required.Local · stdionpm: @mrfentmen/gitlab-mcp
Gitlab MCPGitLab MCP server for projects, merge requests, issues, pipelines, wiki, releases, and more.Local · stdionpm: @zereight/mcp-gitlab
Gitlab PublicGitLab Public MCP — wraps the GitLab REST API v4 (public endpoints, no auth)Remote · HTTPgateway.pipeworx.io
GitmemPersistent institutional memory for AI coding agents. Memory that compounds.Local · stdionpm: gitmem-mcp
GitPinProve and verify multi-repo claims at Git HEAD: path, line, full SHA, no index.Local · stdionpm: gitpin
GitResumeValidate, build, and publish the resume you keep as YAML in your own GitHub repository.Remote · HTTPgitresume.co