addrbookFor publishers
← The evidence ledger

Evidence row 1544865

Observed , by sync.mcp_registry/1.

Kind
listing
About
source_record mcp_registry:io.github.zereight/gitlab-mcp
Recorded
Previous row
#1474705
Body SHA-256
3662d1a762c3604420f389a2e31edca70f3cc57395d17a618878ce4eb3a10b80
Leaf
0xaeddf6e1511c646abbd9ac1f862113768a26464208b4303797673e7dc4ccc3e8

What was observed

{
  "endpoints": [
    [
      "web",
      "https://zereight.github.io/gitlab-mcp/"
    ]
  ],
  "name": "GitLab MCP Server",
  "owner_address": null,
  "raw": {
    "_meta": {
      "io.modelcontextprotocol.registry/official": {
        "isLatest": true,
        "publishedAt": "2026-10-31T22:31:55.624265Z",
        "status": "active",
        "statusChangedAt": "2026-10-31T22:31:55.624265Z",
        "updatedAt": "2026-10-31T22:31:55.624265Z"
      }
    },
    "server": {
      "$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
      "description": "GitLab MCP server for projects, merge requests, issues, pipelines, wiki, releases, and more.",
      "icons": [
        {
          "mimeType": "image/svg+xml",
          "sizes": [
            "any"
          ],
          "src": "https://raw.githubusercontent.com/zereight/gitlab-mcp/main/assets/logo.svg"
        }
      ],
      "name": "io.github.zereight/gitlab-mcp",
      "packages": [
        {
          "environmentVariables": [
            {
              "description": "GitLab personal access token for local stdio use. A non-empty value overrides GITLAB_PERSONAL_ACCESS_TOKEN_FILE. One of this token, GITLAB_PERSONAL_ACCESS_TOKEN_FILE, GITLAB_JOB_TOKEN, GITLAB_AUTH_COOKIE_PATH, or GITLAB_USE_OAUTH=true must be set. Create a token with the GitLab scopes the tools need, such as api or read_api.",
              "format": "string",
              "isSecret": true,
              "name": "GITLAB_PERSONAL_ACCESS_TOKEN"
            },
            {
              "description": "Path to a file that contains the personal access token. Read once at startup and trimmed. Ignored when GITLAB_PERSONAL_ACCESS_TOKEN or --token is non-empty. A missing, unreadable, or empty file stops startup. Does not replace job token, OAuth, cookie, or remote authorization.",
              "format": "filepath",
              "name": "GITLAB_PERSONAL_ACCESS_TOKEN_FILE"
            },
            {
              "description": "Optional GitLab CI job token to use instead of a personal access token when running inside GitLab CI.",
              "format": "string",
              "isSecret": true,
              "name": "GITLAB_JOB_TOKEN"
            },
            {
              "description": "Optional path to a GitLab authentication cookie file for cookie-based authentication.",
              "format": "filepath",
              "name": "GITLAB_AUTH_COOKIE_PATH"
            },
            {
              "description": "Set to true to start with GitLab OAuth instead of a personal access token, job token, or cookie file.",
              "format": "boolean",
              "name": "GITLAB_USE_OAUTH"
            },
            {
              "description": "GitLab OAuth application ID. When GITLAB_USE_OAUTH=true, set this or GITLAB_OAUTH_TOKEN_SCRIPT.",
              "format": "string",
              "name": "GITLAB_OAUTH_CLIENT_ID"
            },
            {
              "description": "Command that prints an OAuth access token. When GITLAB_USE_OAUTH=true, set this or GITLAB_OAUTH_CLIENT_ID.",
              "format": "string",
              "name": "GITLAB_OAUTH_TOKEN_SCRIPT"
            },
            {
              "default": "https://gitlab.com/api/v4",
              "description": "GitLab API base URL. Use https://gitlab.com/api/v4 for GitLab.com or your self-managed GitLab API URL.",
              "format": "string",
              "name": "GITLAB_API_URL"
            },
            {
              "description": "Optional comma-separated list of GitLab project IDs that this server is allowed to access.",
              "format": "string",
              "name": "GITLAB_ALLOWED_PROJECT_IDS"
            },
            {
              "choices": [
                "readonly",
                "modify",
                "full"
              ],
              "description": "Tool exposure. Allowed values are readonly, modify, and full. Unset uses full. readonly keeps read-only tools. modify blocks delete and teardown tools.",
              "format": "string",
              "name": "GITLAB_PERMISSION_MODE"
            },
            {
              "description": "Optional comma-separated list of toolsets to enable, such as projects, issues, merge_requests, pipelines, releases, users, groups, wiki, or search.",
              "format": "string",
              "name": "GITLAB_TOOLSETS"
            },
            {
              "description": "Optional comma-separated list of individual tool names to add on top of enabled toolsets.",
              "format": "string",
              "name": "GITLAB_TOOLS"
            },
            {
              "description": "Optional regular expression used to hide matching tools from the server.",
              "format": "string",
              "name": "GITLAB_DENIED_TOOLS_REGEX"
            },
            {
              "description": "Optional comma-separated list of tool names that require explicit approval before execution.",
              "format": "string",
              "name": "GITLAB_TOOL_POLICY_APPROVE"
            },
            {
              "description": "Optional comma-separated list of tool names to hide from tools/list.",
              "format": "string",
              "name": "GITLAB_TOOL_POLICY_HIDDEN"
            },
            {
              "description": "Set to 0 only when you intentionally need to connect to a GitLab instance with invalid or self-signed TLS certificates.",
              "format": "string",
              "name": "NODE_TLS_REJECT_UNAUTHORIZED"
            },
            {
              "description": "Optional path to a custom CA certificate file for self-managed GitLab instances.",
              "format": "filepath",
              "name": "GITLAB_CA_CERT_PATH"
            },
            {
              "default": "false",
              "description": "Set to true to mask text tool results and returned errors using built-in or configured rules.",
              "format": "string",
              "name": "GITLAB_MASKING_ENABLED"
            },
            {
              "description": "Optional path to a response-masking JSON configuration file.",
              "format": "filepath",
              "name": "GITLAB_MASKING_CONFIG"
            },
            {
              "description": "Optional protected server-owned JSON file containing managed masking policies.",
              "format": "filepath",
              "name": "GITLAB_MASKING_POLICY_FILE"
            },
            {
              "description": "Directory used to resolve response-masking configuration paths.",
              "format": "filepath",
              "name": "GITLAB_MASKING_WORKSPACE_DIR"
            }
          ],
          "identifier": "@zereight/mcp-gitlab",
          "registryType": "npm",
          "transport": {
            "type": "stdio"
          },
          "version": "2.3.18"
        },
        {
          "environmentVariables": [
            {
              "description": "GitLab personal access token for local stdio use. A non-empty value overrides GITLAB_PERSONAL_ACCESS_TOKEN_FILE. One of this token, GITLAB_PERSONAL_ACCESS_TOKEN_FILE, GITLAB_JOB_TOKEN, GITLAB_AUTH_COOKIE_PATH, or GITLAB_USE_OAUTH=true must be set. Create a token with the GitLab scopes the tools need, such as api or read_api.",
              "format": "string",
              "isSecret": true,
              "name": "GITLAB_PERSONAL_ACCESS_TOKEN"
            },
            {
              "description": "Path to a file that contains the personal access token. Read once at startup and trimmed. Ignored when GITLAB_PERSONAL_ACCESS_TOKEN or --token is non-empty. A missing, unreadable, or empty file stops startup. Does not replace job token, OAuth, cookie, or remote authorization.",
              "format": "filepath",
              "name": "GITLAB_PERSONAL_ACCESS_TOKEN_FILE"
            },
            {
              "description": "Optional GitLab CI job token to use instead of a personal access token when running inside GitLab CI.",
              "format": "string",
              "isSecret": true,
              "name": "GITLAB_JOB_TOKEN"
            },
            {
              "description": "Optional path to a GitLab authentication cookie file for cookie-based authentication.",
              "format": "filepath",
              "name": "GITLAB_AUTH_COOKIE_PATH"
            },
            {
              "description": "Set to true to start with GitLab OAuth instead of a personal access token, job token, or cookie file.",
              "format": "boolean",
              "name": "GITLAB_USE_OAUTH"
            },
            {
              "description": "GitLab OAuth application ID. When GITLAB_USE_OAUTH=true, set this or GITLAB_OAUTH_TOKEN_SCRIPT.",
              "format": "string",
              "name": "GITLAB_OAUTH_CLIENT_ID"
            },
            {
              "description": "Command that prints an OAuth access token. When GITLAB_USE_OAUTH=true, set this or GITLAB_OAUTH_CLIENT_ID.",
              "format": "string",
              "name": "GITLAB_OAUTH_TOKEN_SCRIPT"
            },
            {
              "default": "https://gitlab.com/api/v4",
              "description": "GitLab API base URL. Use https://gitlab.com/api/v4 for GitLab.com or your self-managed GitLab API URL.",
              "format": "string",
              "name": "GITLAB_API_URL"
            },
            {
              "description": "Optional comma-separated list of GitLab project IDs that this server is allowed to access.",
              "format": "string",
              "name": "GITLAB_ALLOWED_PROJECT_IDS"
            },
            {
              "choices": [
                "readonly",
                "modify",
                "full"
              ],
              "description": "Tool exposure. Allowed values are readonly, modify, and full. Unset uses full. readonly keeps read-only tools. modify blocks delete and teardown tools.",
              "format": "string",
              "name": "GITLAB_PERMISSION_MODE"
            },
            {
              "description": "Optional comma-separated list of toolsets to enable, such as projects, issues, merge_requests, pipelines, releases, users, groups, wiki, or search.",
              "format": "string",
              "name": "GITLAB_TOOLSETS"
            },
            {
              "description": "Optional comma-separated list of individual tool names to add on top of enabled toolsets.",
              "format": "string",
              "name": "GITLAB_TOOLS"
            },
            {
              "description": "Optional regular expression used to hide matching tools from the server.",
              "format": "string",
              "name": "GITLAB_DENIED_TOOLS_REGEX"
            },
            {
              "description": "Optional comma-separated list of tool names that require explicit approval before execution.",
              "format": "string",
              "name": "GITLAB_TOOL_POLICY_APPROVE"
            },
            {
              "description": "Optional comma-separated list of tool names to hide from tools/list.",
              "format": "string",
              "name": "GITLAB_TOOL_POLICY_HIDDEN"
            },
            {
              "description": "Set to 0 only when you intentionally need to connect to a GitLab instance with invalid or self-signed TLS certificates.",
              "format": "string",
              "name": "NODE_TLS_REJECT_UNAUTHORIZED"
            },
            {
              "description": "Optional path to a custom CA certificate file for self-managed GitLab instances.",
              "format": "filepath",
              "name": "GITLAB_CA_CERT_PATH"
            },
            {
              "default": "false",
              "description": "Set to true to mask text tool results and returned errors using built-in or configured rules.",
              "format": "string",
              "name": "GITLAB_MASKING_ENABLED"
            },
            {
              "description": "Optional path to a response-masking JSON configuration file.",
              "format": "filepath",
              "name": "GITLAB_MASKING_CONFIG"
            },
            {
              "description": "Optional protected server-owned JSON file containing managed masking policies.",
              "format": "filepath",
              "name": "GITLAB_MASKING_POLICY_FILE"
            },
            {
              "description": "Directory used to resolve response-masking configuration paths.",
              "format": "filepath",
              "name": "GITLAB_MASKING_WORKSPACE_DIR"
            }
          ],
          "identifier": "docker.io/zereight050/gitlab-mcp:2.3.18",
          "registryType": "oci",
          "transport": {
            "type": "stdio"
          }
        }
      ],
      "repository": {
        "source": "github",
        "url": "https://github.com/zereight/gitlab-mcp"
      },
      "title": "GitLab MCP Server",
      "version": "2.3.18",
      "websiteUrl": "https://zereight.github.io/gitlab-mcp/"
    }
  },
  "source": "mcp_registry",
  "summary": "GitLab MCP server for projects, merge requests, issues, pipelines, wiki, releases, and more."
}

What the leaf hashes

{"body":"3662d1a762c3604420f389a2e31edca70f3cc57395d17a618878ce4eb3a10b80","id":1544865,"kind":"listing","method":"sync.mcp_registry/1","observed_us":1793488625875074,"prev":1474705,"subject":"mcp_registry:io.github.zereight/gitlab-mcp","subject_kind":"source_record"}

Proof

Fold these into the leaf in order, hashing each sorted pair with keccak256, to reach the root of (246033 rows).

  1. 0xaede7fb1323cc021875e3408ced315093176f72ab2d91faf923b02f01db2f205
  2. 0xcdf056c1ff714f53b891954f7aa0a5f5ba2017f83e896fcb077303f170b9a9f6
  3. 0xa8a3f84ff544b399880e5ab71947dd651076869f10545d5cd4e587c9c614841c
  4. 0xc297a22884408e623b8447f58083625f3dbee3b4636edc5eff0afb1c97db293b
  5. 0x660d14db4a20112324adc013632f4e6a28cef1b3e97ae07c6b58a73dfe381bf1
  6. 0x80769fe56068aac5e90267c15c8c1543b411739efff2b9892195e58b0050b9f8
  7. 0xdbbb834b433a2fd35302788d01dbc9e3a54c8150cb40892feead93c2a7584b63
  8. 0x3af9017ec5a951fad6bd7ca8e0c2abf79098b1bf491f6eae6e15d2c337e4bc9b
  9. 0x14912e176e72f71bd6040aa7ef32f35fe22917a82dd6bbda280a2c941559efc9
  10. 0xc03d102f4c833be1dc59acfed10a0ab8912a4af795a6829c412600bf521932e9
  11. 0xc1b86bd091d6fd74d4ebd4eabdd8175d4f37b6001507d5783cf126a8d1c3a586
  12. 0x99f245416ba879dd122979c99f59a2cee6bfded7eb430c11db2c1e2b31382629
  13. 0xb09440bf6646ff777d33f0f00bc9aa431a06af5faf5954642c917acff5aa3d78
  14. 0x17b4d08af91ab833713ac6154ec68f498dbe032401780285c2ccdadad6ac27f1
  15. 0x57afe240b626bf60f6af8c76404811e95ea5519f217fac382bd159177a8ec870
  16. 0x2e1cd25ce4079da9bfa6219d7ffec992149add4cd7d5c5b2cfee9908c1c8a5dd
  17. 0x50003b3c3045b653f8be4232e95e80582cf5c54c14c509ba0a9a197b9e5005cb
  18. 0x0504a25438f3c7932125463198ca74c5064f23f71a5c92763b3fc96a98cc8b57
Day root
0x24463725d1c0d9894bd6123691d532547aaa79f0762c0e45aa6a68acf1fd71ab
Chained
0x7d4824ff313dee7252a46f9d5c37b452851deb6c9f24a40c2f74ee0e53c82980
Published
On Arc Testnet, block 70093156: 0xedb7b832f4ebf6781b5ecd2ed241c435b862f4d3761541fa31adc1831b8c44a0

How to check it · This row as JSON