{
  "name": "io.github.zereight/gitlab-mcp",
  "description": "The GitLab MCP connects AI models directly to the GitLab API. Read repository contents, manage merge requests, file issues, monitor pipelines, and search code across projects. Mirrors the GitHub MCP's feature set for teams that run on GitLab — self-hosted or gitlab.com.",
  "status": "active",
  "version": "latest",
  "_meta": {
    "com.top-mcps/lastVerified": "2026-05-06",
    "com.top-mcps/score": {
      "value": 82,
      "rubricVersion": "2026-04",
      "lastComputed": "2026-05-11T09:29:11.916Z",
      "methodology": "https://top-mcps.com/about/methodology"
    },
    "com.top-mcps/stats": {
      "fetchedAt": "2026-05-11T09:29:10.755Z",
      "githubStars": 1480,
      "lastCommitAt": "2026-05-09T14:33:53Z",
      "npmWeeklyDownloads": 97054
    }
  },
  "repository": {
    "url": "https://github.com/zereight/gitlab-mcp",
    "source": "github"
  },
  "author": {
    "name": "zereight (community)"
  },
  "packages": [
    {
      "registryType": "npm",
      "registryBaseUrl": "https://registry.npmjs.org",
      "identifier": "@zereight/mcp-gitlab",
      "version": "latest",
      "transport": {
        "type": "stdio"
      },
      "environmentVariables": [
        {
          "name": "GITLAB_PERSONAL_ACCESS_TOKEN",
          "description": "GITLAB_PERSONAL_ACCESS_TOKEN — required credential for GitLab.",
          "isRequired": true,
          "isSecret": true
        },
        {
          "name": "GITLAB_API_URL",
          "description": "GITLAB_API_URL — required credential for GitLab.",
          "isRequired": true,
          "isSecret": true
        }
      ]
    }
  ],
  "capabilities": {
    "tools": [
      {
        "name": "list_projects",
        "description": "List projects the token has access to.",
        "sideEffect": "read"
      },
      {
        "name": "get_file_contents",
        "description": "Read a file from a project at a given path and ref.",
        "sideEffect": "read",
        "args": [
          {
            "name": "project_id",
            "type": "string",
            "required": true
          },
          {
            "name": "file_path",
            "type": "string",
            "required": true
          },
          {
            "name": "ref",
            "type": "string",
            "required": false
          }
        ]
      },
      {
        "name": "search_code",
        "description": "Search code across projects.",
        "sideEffect": "read",
        "args": [
          {
            "name": "q",
            "type": "string",
            "required": true
          }
        ]
      },
      {
        "name": "create_merge_request",
        "description": "Open a merge request.",
        "sideEffect": "write",
        "args": [
          {
            "name": "project_id",
            "type": "string",
            "required": true
          },
          {
            "name": "source_branch",
            "type": "string",
            "required": true
          },
          {
            "name": "target_branch",
            "type": "string",
            "required": true
          },
          {
            "name": "title",
            "type": "string",
            "required": true
          }
        ]
      },
      {
        "name": "merge_merge_request",
        "description": "Merge an open MR that satisfies the project's merge requirements.",
        "sideEffect": "write",
        "args": [
          {
            "name": "project_id",
            "type": "string",
            "required": true
          },
          {
            "name": "merge_request_iid",
            "type": "number",
            "required": true
          }
        ]
      },
      {
        "name": "create_issue",
        "description": "Open a new issue on a project.",
        "sideEffect": "write",
        "args": [
          {
            "name": "project_id",
            "type": "string",
            "required": true
          },
          {
            "name": "title",
            "type": "string",
            "required": true
          },
          {
            "name": "description",
            "type": "string",
            "required": false
          }
        ]
      },
      {
        "name": "get_pipeline",
        "description": "Fetch pipeline status and jobs.",
        "sideEffect": "read",
        "args": [
          {
            "name": "project_id",
            "type": "string",
            "required": true
          },
          {
            "name": "pipeline_id",
            "type": "number",
            "required": true
          }
        ]
      }
    ],
    "security": {
      "scope": "read-write",
      "sandbox": "Authenticates to the GitLab API using the personal access token in `GITLAB_PERSONAL_ACCESS_TOKEN`. The blast radius equals the token scope — the MCP has whatever project, MR, issue, and admin permissions the token grants.",
      "gotchas": [
        "Self-hosted instances often have different scope semantics than gitlab.com — verify in your instance's admin docs before assuming a scope is read-only.",
        "Branch protection and merge rules apply server-side; unprotected branches let an agent push directly to default branches."
      ]
    }
  },
  "_links": {
    "html": "https://top-mcps.com/mcp/gitlab",
    "markdown": "https://top-mcps.com/mcp/gitlab.md",
    "methodology": "https://top-mcps.com/about/methodology"
  }
}
