GitLab MCP服务器

GitLab MCP服务器是一个支持动态API URL和连接池的GitLab API代理服务,提供多种认证方式和丰富的工具集。

  • by rokrokss
  • TypeScript
  • 混合部署
  • 更新于
在 GitHub 查看 rokrokss/gitlab-mcp

使用说明

GitLab MCP服务器

新功能:动态GitLab API URL支持与连接池!看 动态API URL文档 了解详情。

@zereight/mcp gitlab

GitLab MCP(模型上下文协议)服务器。 包括对原始GitLab MCP服务器的错误修复和改进。

用法

与Claude Code、Codex、Antigravity、OpenCode、Copilot、Cline、Roo Code、Cursor、Kilo Code、Amp Code一起使用

使用Claude应用程序时,您需要直接设置API密钥和URL。

认证方法

服务器支持两种身份验证方法:

  1. 个人访问令牌 (传统方法)
  2. OAuth2 (建议使用以提高安全性)

使用OAuth2身份验证

OAuth2使用基于浏览器的身份验证提供了更安全的身份验证流。启用后,服务器将:

  1. 打开浏览器访问GitLab的授权页面
  2. 等待您批准访问
  3. 安全地存储令牌以备将来使用
  4. 令牌过期时自动刷新令牌

有关OAuth2设置的详细说明,请参阅 OAuth设置指南.

快速设置-首先创建一个GitLab OAuth应用程序:

  1. 转到您的GitLab实例: Settings → Applications
  2. 使用以下内容创建新应用程序:
    • 名字: GitLab MCP Server (或您喜欢的任何名称)
    • 重定向URI: http://127.0.0.1:8888/callback
    • 范围:选择 api (提供对API的完整读/写访问)
  3. 复制 应用标识符 (这是您的客户ID)

然后使用OAuth配置MCP服务器:

{
  "mcpServers": {
    "gitlab": {
      "command": "npx",
      "args": ["-y", "@zereight/mcp-gitlab"],
      "env": {
        "GITLAB_USE_OAUTH": "true",
        "GITLAB_OAUTH_CLIENT_ID": "your_oauth_client_id",
        "GITLAB_OAUTH_CLIENT_SECRET": "your_oauth_client_secret", // Required for Confidential apps only
        "GITLAB_OAUTH_REDIRECT_URI": "http://127.0.0.1:8888/callback",
        "GITLAB_API_URL": "your_gitlab_api_url",
        "GITLAB_PROJECT_ID": "your_project_id", // Optional: default project
        "GITLAB_ALLOWED_PROJECT_IDS": "", // Optional: comma-separated list of allowed project IDs
        "GITLAB_READ_ONLY_MODE": "false",
        "USE_GITLAB_WIKI": "false", // use wiki api?
        "USE_MILESTONE": "false", // use milestone api?
        "USE_PIPELINE": "false" // use pipeline api?
      }
    }
  }
}

使用个人访问令牌(传统)

{
  "mcpServers": {
    "gitlab": {
      "command": "npx",
      "args": ["-y", "@zereight/mcp-gitlab"],
      "env": {
        "GITLAB_PERSONAL_ACCESS_TOKEN": "your_gitlab_token",
        "GITLAB_API_URL": "your_gitlab_api_url",
        "GITLAB_PROJECT_ID": "your_project_id", // Optional: default project
        "GITLAB_ALLOWED_PROJECT_IDS": "", // Optional: comma-separated list of allowed project IDs
        "GITLAB_READ_ONLY_MODE": "false",
        "USE_GITLAB_WIKI": "false", // use wiki api?
        "USE_MILESTONE": "false", // use milestone api?
        "USE_PIPELINE": "false" // use pipeline api?
      }
    }
  }
}

使用CLI参数(适用于有env-var问题的客户端)

一些MCP客户端(如GitHub Copilot CLI)在环境变量方面存在问题。请改用CLI参数:

{
  "mcpServers": {
    "gitlab": {
      "command": "npx",
      "args": [
        "-y",
        "@zereight/mcp-gitlab",
        "--token=YOUR_GITLAB_TOKEN",
        "--api-url=https://gitlab.com/api/v4"
      ],
      "tools": ["*"]
    }
  }
}

可用CLI参数:

  • --token -GitLab个人访问令牌(替换 GITLAB_PERSONAL_ACCESS_TOKEN)
  • --api-url -GitLab API URL(替换 GITLAB_API_URL)
  • --read-only=true -启用只读模式(替换 GITLAB_READ_ONLY_MODE)
  • --use-wiki=true -启用wiki API(替换 USE_GITLAB_WIKI)
  • --use-milestone=true -启用里程碑API(替换 USE_MILESTONE)
  • --use-pipeline=true -启用管道API(替换 USE_PIPELINE)

CLI参数优先于环境变量。

vscode.vcode/mcp.json

使用OAuth2(非机密-推荐):

{
  "servers": {
    "GitLab-MCP": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@zereight/mcp-gitlab"],
      "env": {
        "GITLAB_USE_OAUTH": "true",
        "GITLAB_OAUTH_CLIENT_ID": "your_oauth_client_id",
        "GITLAB_OAUTH_REDIRECT_URI": "http://127.0.0.1:8888/callback",
        "GITLAB_API_URL": "https://gitlab.com/api/v4",
        "GITLAB_READ_ONLY_MODE": "false",
        "USE_GITLAB_WIKI": "false",
        "USE_MILESTONE": "false",
        "USE_PIPELINE": "false"
      }
    }
  }
}

使用OAuth2(机密):

{
  "inputs": [
    {
      "type": "promptString",
      "id": "gitlab-oauth-secret",
      "description": "GitLab OAuth Client Secret",
      "password": true
    }
  ],
  "servers": {
    "GitLab-MCP": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@zereight/mcp-gitlab"],
      "env": {
        "GITLAB_USE_OAUTH": "true",
        "GITLAB_OAUTH_CLIENT_ID": "your_oauth_client_id",
        "GITLAB_OAUTH_CLIENT_SECRET": "${input:gitlab-oauth-secret}",
        "GITLAB_OAUTH_REDIRECT_URI": "http://127.0.0.1:8888/callback",
        "GITLAB_API_URL": "https://gitlab.com/api/v4",
        "GITLAB_READ_ONLY_MODE": "false"
      }
    }
  }
}

使用个人访问令牌:

{
  "inputs": [
    {
      "type": "promptString",
      "id": "gitlab-token",
      "description": "GitLab Personal Access Token",
      "password": true
    }
  ],
  "servers": {
    "GitLab-MCP": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@zereight/mcp-gitlab"],
      "env": {
        "GITLAB_PERSONAL_ACCESS_TOKEN": "${input:gitlab-token}",
        "GITLAB_API_URL": "https://gitlab.com/api/v4",
        "GITLAB_READ_ONLY_MODE": "false",
        "USE_GITLAB_WIKI": "false",
        "USE_MILESTONE": "false",
        "USE_PIPELINE": "false"
      }
    }
  }
}

Strands代理SDK(MCP工具)

env_vars = {
        "GITLAB_PERSONAL_ACCESS_TOKEN": gitlab_access_token,
        "GITLAB_API_URL": gitlab_api_url,
        "USE_GITLAB_WIKI": use_gitlab_wiki
        # ......the rest of the optional parameters
}

stdio_gitlab_mcp_client = MCPClient(
        lambda: stdio_client(
            StdioServerParameters(
                command="npx",
                args=["-y", "@zereight/mcp-gitlab"],
                env=env_vars,
            )
        )
    )

码头工人

备注:对于Docker部署, 建议使用个人访问令牌OAuth需要基于浏览器的身份验证和本地回调服务器,这在容器化环境中无法正常工作。

使用个人访问令牌(stdio)-建议:

{
  "mcpServers": {
    "gitlab": {
      "command": "docker",
      "args": [
        "run",
        "-i",
        "--rm",
        "-e",
        "GITLAB_PERSONAL_ACCESS_TOKEN",
        "-e",
        "GITLAB_API_URL",
        "-e",
        "GITLAB_READ_ONLY_MODE",
        "-e",
        "USE_GITLAB_WIKI",
        "-e",
        "USE_MILESTONE",
        "-e",
        "USE_PIPELINE",
        "zereight050/gitlab-mcp"
      ],
      "env": {
        "GITLAB_PERSONAL_ACCESS_TOKEN": "your_gitlab_token",
        "GITLAB_API_URL": "https://gitlab.com/api/v4",
        "GITLAB_READ_ONLY_MODE": "false",
        "USE_GITLAB_WIKI": "true",
        "USE_MILESTONE": "true",
        "USE_PIPELINE": "true"
      }
    }
  }
}
  • SSE
docker run -i --rm \
  -e HOST=0.0.0.0 \
  -e GITLAB_PERSONAL_ACCESS_TOKEN=your_gitlab_token \
  -e GITLAB_API_URL="https://gitlab.com/api/v4" \
  -e GITLAB_READ_ONLY_MODE=true \
  -e USE_GITLAB_WIKI=true \
  -e USE_MILESTONE=true \
  -e USE_PIPELINE=true \
  -e SSE=true \
  -p 3333:3002 \
  zereight050/gitlab-mcp
{
  "mcpServers": {
    "gitlab": {
      "type": "sse",
      "url": "http://localhost:3333/sse"
    }
  }
}
  • 可流式传输http
docker run -i --rm \
  -e HOST=0.0.0.0 \
  -e GITLAB_PERSONAL_ACCESS_TOKEN=your_gitlab_token \
  -e GITLAB_API_URL="https://gitlab.com/api/v4" \
  -e GITLAB_READ_ONLY_MODE=true \
  -e USE_GITLAB_WIKI=true \
  -e USE_MILESTONE=true \
  -e USE_PIPELINE=true \
  -e STREAMABLE_HTTP=true \
  -p 3333:3002 \
  zereight050/gitlab-mcp
{
  "mcpServers": {
    "gitlab": {
      "type": "streamable-http",
      "url": "http://localhost:3333/mcp"
    }
  }
}

环境变量

验证配置

  • GITLAB_PERSONAL_ACCESS_TOKEN:您的GitLab个人访问令牌。 标准模式下需要;未在以下情况下使用 REMOTE_AUTHORIZATION=true 或者在使用OAuth时。
  • GITLAB_USE_OAUTH:设置为 true 启用OAuth2身份验证,而不是个人访问令牌。
  • GITLAB_OAUTH_CLIENT_ID:GitLab OAuth应用程序中的客户端ID。使用OAuth时需要。
  • GITLAB_OAUTH_CLIENT_SECRET:GitLab OAuth应用程序中的客户端密码。仅适用于机密应用程序。
  • GITLAB_OAUTH_REDIRECT_URI:OAuth回调URL。默认值: http://127.0.0.1:8888/callback
  • GITLAB_OAUTH_TOKEN_PATH:存储OAuth令牌的自定义路径。违约: ~/.gitlab-mcp-token.json
  • REMOTE_AUTHORIZATION:设置为“true”时,通过HTTP标头启用远程每会话授权。在此模式下:
    • 服务器接受来自HTTP标头的GitLab PAT令牌(Authorization: Bearer <token>, Private-Token: <token> 或 Job-Token: <token>)按每节课计算
    • GITLAB_PERSONAL_ACCESS_TOKEN 环境变量为 不需要 并被忽略
    • 仅适用于 可流式HTTP传输 (STREAMABLE_HTTP=true)因为会话管理已经由传输层处理
    • SSE传输已禁用 -尝试使用具有远程授权的SSE将导致服务器退出并出错
    • 每个客户端会话都可以使用不同的令牌,从而通过安全的会话隔离实现多用户支持
    • 令牌按会话存储,并在会话关闭或超时时自动清理
  • SESSION_TIMEOUT_SECONDS:会话身份验证令牌超时(秒)。违约: 3600 (1小时)。有效范围:1-86400秒(建议:60+)。在此不活动期后,身份验证令牌将被删除,但传输会话仍处于活动状态。客户端必须在下次请求时再次提供身份验证标头。仅适用于以下情况 REMOTE_AUTHORIZATION=true.

常规配置

  • GITLAB_API_URL:您的GitLab API URL。(默认值: https://gitlab.com/api/v4)

  • GITLAB_PROJECT_ID:默认项目ID。如果已设置,则在发出API请求时覆盖此值。

  • GITLAB_ALLOWED_PROJECT_IDS:允许的项目ID的可选逗号分隔列表。当设置为单个值时,将作为默认项目(如旧的“锁定”模式)。当设置为多个值时,仅限制对这些项目的访问。示例:

    • 单一值 123:MCP服务器只能访问项目123并将其用作默认值
    • 多个值 123,456,789:MCP服务器可以访问项目123、456和789,但在请求中需要明确的项目ID
  • GITLAB_READ_ONLY_MODE:设置为“true”时,限制服务器仅公开只读操作。对于增强安全性或不需要写访问时很有用。对于与游标一起使用也很有用,它有40个工具限制。

  • GITLAB_DENIED_TOOLS_REGEX:当设置为正则表达式时,它将排除匹配工具。

  • USE_GITLAB_WIKI:传统旗帜。Wiki功能现在默认启用。当设置为“true”时,即使 wiki 工具集未在中明确列出 GITLAB_TOOLSETS.

  • USE_MILESTONE:传统旗帜。里程碑功能现在默认启用。当设置为“true”时,确保包括与里程碑相关的工具,即使 milestones 工具集未在中明确列出 GITLAB_TOOLSETS.

  • USE_PIPELINE:传统旗帜。默认情况下,管道功能现在已启用。当设置为“true”时,确保包括与管道相关的工具,即使 pipelines 工具集未在中明确列出 GITLAB_TOOLSETS.

  • GITLAB_TOOLSETS:要启用的工具集ID的逗号分隔列表。当为空或未设置时,将使用默认工具集。吃起来 "all" 以启用每个工具集。可用工具集(默认工具集标记为 *):

    • merge_requests*--MR操作、注释、讨论、草稿注释、线程(31个工具)
    • issues*--发布CRUD、注释、链接、讨论(14个工具)
    • repositories*--搜索、创建、文件内容、推送、分叉、树(7个工具)
    • branches*--分支创建、提交、差异(4个工具)
    • projects*--项目/名称空间信息、组项目、迭代(8个工具)
    • labels*--标签CRUD(5个工具)
    • pipelines*--管道和作业操作(19个工具)
    • milestones*--里程碑CRUD、问题、MR、烧毁(9个工具)
    • wiki*--Wiki页面CRUD(5个工具)
    • releases*--发布CRUD、证据、资产下载(7个工具)
    • users*--用户信息、事件、降价上传、附件(5个工具)

    注: execute_graphql 不在任何工具集中,必须通过单独添加 GITLAB_TOOLS 如果需要的话。 公开任意GraphQL将允许绕过工具集边界(例如,通过wiki或管道等工具集查询用户有意禁用的数据),这是一个安全和权限控制问题。保持 execute_graphql 在所有工具集中,需要通过以下方式明确选择加入 GITLAB_TOOLS=execute_graphql 是有意与该原则保持一致,而不是为了向后兼容性。 CLI参数: --toolsets

  • GITLAB_TOOLS:逗号分隔的单个工具名称列表,可添加到已启用的工具集(附加工具)之上。适用于在不启用整个工具集的情况下挑选特定工具。例子: GITLAB_TOOLS="list_pipelines,execute_graphql".CLI参数: --tools

    组合逻辑: final tools = (tools from enabled toolsets) ∪ (GITLAB_TOOLS) ∪ (legacy flag overrides)

    示例:

    # Default behavior (unchanged)
    GITLAB_PERSONAL_ACCESS_TOKEN=xxx npx @zereight/mcp-gitlab
    
    # Only issues and repositories
    GITLAB_TOOLSETS="issues,repositories" npx @zereight/mcp-gitlab
    
    # All toolsets
    GITLAB_TOOLSETS="all" npx @zereight/mcp-gitlab
    
    # Default toolsets + one extra pipeline tool
    GITLAB_TOOLS="list_pipelines" npx @zereight/mcp-gitlab
    
    # Specific toolsets + individual tools
    GITLAB_TOOLSETS="issues,merge_requests" GITLAB_TOOLS="list_pipelines,get_pipeline" npx @zereight/mcp-gitlab
    
    # Legacy flags still work (backward compatible)
    USE_PIPELINE=true npx @zereight/mcp-gitlab
    
  • GITLAB_AUTH_COOKIE_PATH:需要基于cookie的身份验证的GitLab实例的身份验证cookie文件的路径。一旦提供,cookie将包含在所有GitLab API请求中。

  • SSE:设置为“true”时,启用服务器发送事件传输。

  • STREAMABLE_HTTP:设置为“true”时,启用流式HTTP传输。如果两者都有 上海证券交易所 和 STREAMABLE_HTTP 如果设置为“true”,服务器将优先考虑Streamable HTTP而不是SSE传输。

  • GITLAB_COMMIT_FILES_PER_PAGEGitLab为提交差异返回的每页文件数。此值应与服务器端的GitLab设置匹配。如果您的GitLab实例对提交差异使用自定义的每页值,请调整此设置。

  • GITLAB_REPO_FILE_ENCODING:存储库文件创建/更新以及发送到GitLab API的相关提交有效负载的编码。使用 text (默认)或 base64等效CLI: --repo-file-encoding=text|base64.

性能和安全配置

  • HOST:服务器主机地址。违约: 127.0.0.1 (仅限本地主机)。吃起来 0.0.0.0 允许外部连接(Docker需要端口转发)。
  • MAX_SESSIONS:允许的最大并发会话数。违约: 1000.有效范围:1-10000。当达到限制时,使用HTTP 503拒绝新连接。
  • MAX_REQUESTS_PER_MINUTE:每会话的速率限制(每分钟请求数)。违约: 60.有效范围:1-1000。超出的请求返回HTTP 429。
  • PORT:服务器端口。默认值: 3002。有效范围:1-65535。
  • HTTP_PROXY:传出请求的HTTP代理服务器URL。例子: http://proxy.example.com:8080.支持HTTP/HTTPS和SOCKS代理(URL以开头 socks:// 或 socks5://).CLI参数: --http-proxy
  • HTTPS_PROXY:传出请求的HTTPS代理服务器URL。例子: https://proxy.example.com:8080支持HTTP/HTTPS和SOCKS代理。CLI参数: --https-proxy
  • NO_PROXY:以逗号分隔的应绕过代理的主机列表。支持:
    • 主机名完全匹配(例如。, localhost, gitlab.internal.com)
    • 域后缀匹配(例如。, .internal.com 匹配任何子域)
    • IP地址(例如。, 127.0.0.1, 192.168.1.1)
    • 端口特定匹配(例如。, example.com:443)
    • 通配符 * 绕过所有主机的代理
    • 例子: NO_PROXY=localhost,127.0.0.1,.internal.com
    • CLI参数: --no-proxy

监控端点

使用Streamable HTTP传输时,以下端点可用:

  • /health:健康检查端点返回服务器状态、活动会话计数和正常运行时间。
  • /metrics:详细指标包括:
    • 活动会话数和总会话数
    • 身份验证指标(失败、过期)
    • 速率限制统计
    • 资源使用情况(内存、正常运行时间)
    • 配置摘要

远程授权设置(多用户支持)

使用时 REMOTE_AUTHORIZATION=true,MCP服务器可以支持多个用户,每个用户都有自己的GitLab令牌通过HTTP标头传递。这有助于:

  • 共享MCP服务器实例,每个用户都需要自己的GitLab访问权限
  • IDE集成,可以将用户特定的令牌注入MCP请求

设置示例:

# Start server with remote authorization
docker run -d \
  -e HOST=0.0.0.0 \
  -e STREAMABLE_HTTP=true \
  -e REMOTE_AUTHORIZATION=true \
  -e GITLAB_API_URL="https://gitlab.com/api/v4" \
  -e GITLAB_READ_ONLY_MODE=true \
  -e SESSION_TIMEOUT_SECONDS=3600 \
  -p 3333:3002 \
  zereight050/gitlab-mcp

客户端配置:

您的IDE或MCP客户端必须在每次请求时发送以下标头之一:

Authorization: Bearer glpat-xxxxxxxxxxxxxxxxxxxx

或

Private-Token: glpat-xxxxxxxxxxxxxxxxxxxx

令牌按会话存储(由标识 mcp-session-id header),并在同一会话中重复用于后续请求。

带游标的远程授权客户端配置示例

{
  "mcpServers": {
    "GitLab": {
      "url": "http(s)://<your_mcp_gitlab_server>/mcp",
      "headers": {
        "Authorization": "Bearer glpat-..."
      }
    }
  }
}

重要提示:

  • 远程授权 仅适用于流式HTTP传输
  • 每个会话都是隔离的-来自一个会话的令牌无法访问另一个会话中的数据 会话结束时,令牌会自动清理
  • 会话超时: 身份验证令牌在以下时间过期 SESSION_TIMEOUT_SECONDS (默认1小时)不活动。超时后,客户端必须再次发送身份验证标头。传输会话仍处于活动状态。
  • 每个请求都会重置该会话的超时计时器
  • 速率限制: 每次会议仅限于 MAX_REQUESTS_PER_MINUTE 每分钟请求数(默认值60)
  • 容量限制: 服务器最多可接受 MAX_SESSIONS 并发会话(默认值1000)

工具🛠️

Click to expand
  1. merge_merge_request -在GitLab项目中合并合并请求
  2. create_or_update_file -在GitLab项目中创建或更新单个文件
  3. search_repositories -搜索GitLab项目
  4. create_repository -创建一个新的GitLab项目
  5. get_file_contents -从GitLab项目中获取文件或目录的内容
  6. push_files -在一次提交中将多个文件推送到GitLab项目中
  7. create_issue -在GitLab项目中创建新问题
  8. create_merge_request -在GitLab项目中创建新的合并请求
  9. fork_repository -将GitLab项目分叉到您的帐户或指定的命名空间
  10. create_branch -在GitLab项目中创建一个新分支
  11. get_merge_request -使用精简部署摘要、落后计数、提交添加摘要和审批摘要获取合并请求的详细信息(必须提供mergeRequestIid或branchName)
  12. get_merge_request_diffs -获取合并请求的更改/差异(必须提供mergeRequestIid或branchName)
  13. list_merge_request_diffs -列出具有分页支持的合并请求差异(必须提供mergeRequestIid或branchName)
  14. get_branch_diffs -获取GitLab项目中两个分支或提交之间的更改/差异
  15. update_merge_request -更新合并请求(必须提供mergeRequestIid或branchName)
  16. create_note -为问题或合并请求创建新注释(注释)
  17. create_merge_request_thread -在合并请求上创建新线程
  18. mr_discussions -列出合并请求的讨论项
  19. update_merge_request_note -修改现有的合并请求线程注释
  20. create_merge_request_note -向现有合并请求线程添加新注释
  21. get_draft_note -从合并请求中获取单个草稿笔记
  22. list_draft_notes -列出合并请求的草稿注释
  23. create_draft_note -为合并请求创建草稿注释
  24. update_draft_note -更新现有的说明草稿
  25. delete_draft_note -删除草稿注释
  26. publish_draft_note -发布单个草稿注释
  27. bulk_publish_draft_notes -发布合并请求的所有草稿注释
  28. update_issue_note -修改现有问题线索注释
  29. create_issue_note -向现有问题线程添加新注释
  30. list_issues -列出问题(默认值:仅由当前用户创建;对所有可访问的问题使用范围=“全部”)
  31. my_issues -列出分配给已验证用户的问题(默认为未解决问题)
  32. get_issue -获取GitLab项目中特定问题的详细信息
  33. update_issue -更新GitLab项目中的问题
  34. delete_issue -从GitLab项目中删除问题
  35. list_issue_links -列出特定问题的所有问题链接
  36. list_issue_discussions -列出GitLab项目中某个问题的讨论
  37. get_issue_link -获取特定问题链接
  38. create_issue_link -在两个问题之间创建问题链接
  39. delete_issue_link -删除问题链接
  40. list_namespaces -列出当前用户可用的所有命名空间
  41. get_namespace -通过ID或路径获取命名空间的详细信息
  42. verify_namespace -验证命名空间路径是否存在
  43. get_project -获取特定项目的详细信息
  44. list_projects -列出当前用户可访问的项目
  45. list_project_members -列出GitLab项目的成员
  46. list_labels -列出项目的标签
  47. get_label -从项目中获取单个标签
  48. create_label -在项目中创建新标签
  49. update_label -更新项目中的现有标签
  50. delete_label -从项目中删除标签
  51. list_group_projects -列出GitLab组中具有筛选选项的项目
  52. list_wiki_pages -列出GitLab项目中的wiki页面
  53. get_wiki_page -获取特定wiki页面的详细信息
  54. create_wiki_page -在GitLab项目中创建一个新的wiki页面
  55. update_wiki_page -更新GitLab项目中的现有wiki页面
  56. delete_wiki_page -从GitLab项目中删除wiki页面
  57. get_repository_tree -获取GitLab项目的存储库树(列出文件和目录)
  58. list_pipelines -列出GitLab项目中带有过滤选项的管道
  59. get_pipeline -获取GitLab项目中特定管道的详细信息
  60. list_pipeline_jobs -列出特定管道中的所有作业
  61. list_pipeline_trigger_jobs -列出特定管道中触发下游管道的所有触发作业(桥)
  62. get_pipeline_job -获取GitLab管道作业号的详细信息
  63. get_pipeline_job_output -使用可选分页获取GitLab管道作业的输出/跟踪,以限制上下文窗口的使用
  64. create_pipeline -为分支或标记创建新管道
  65. retry_pipeline -重试失败或取消的管道
  66. cancel_pipeline -取消正在运行的管道
  67. play_pipeline_job -运行手动管道作业
  68. retry_pipeline_job -重试失败或取消的管道作业
  69. cancel_pipeline_job -取消正在运行的管道作业
  70. list_merge_requests -在全局或特定GitLab项目中列出合并请求,并带有过滤选项(project_id现在是可选的)
  71. list_milestones -列出GitLab项目中具有过滤选项的里程碑
  72. get_milestone -获取特定里程碑的详细信息
  73. create_milestone -在GitLab项目中创建新的里程碑
  74. edit_milestone -编辑GitLab项目中的现有里程碑
  75. delete_milestone -从GitLab项目中删除里程碑
  76. get_milestone_issue -获取与特定里程碑相关的问题
  77. get_milestone_merge_requests -获取与特定里程碑关联的合并请求
  78. promote_milestone -将里程碑推进到下一阶段
  79. get_milestone_burndown_events -获取特定里程碑的烧毁事件
  80. get_users -按用户名获取GitLab用户详细信息
  81. list_commits -列出带有筛选选项的存储库提交
  82. get_commit -获取特定提交的详细信息
  83. get_commit_diff -获取特定提交的更改/差异
  84. list_group_iterations -列出具有过滤选项的组迭代
  85. upload_markdown -将文件上传到GitLab项目以用于markdown内容
  86. download_attachment -通过secret和filename从GitLab项目下载上传的文件
  87. list_events -列出当前已验证用户的所有事件
  88. get_project_events -列出指定项目的所有可见事件
  89. list_releases -列出项目的所有版本
  90. get_release -按标签名称获取发布
  91. create_release -在GitLab项目中创建新版本
  92. update_release -更新GitLab项目中的现有版本
  93. delete_release -从GitLab项目中删除一个版本(不删除关联的标签)
  94. create_release_evidence -为现有版本创建发布证据(仅限GitLab Premium/Ultimate)
  95. download_release_asset -通过直接资产路径下载发布资产文件
  96. approve_merge_request -批准合并请求(需要适当的权限)
  97. unapprove_merge_request -取消批准以前批准的合并请求
  98. get_merge_request_approval_state -获取合并请求审批详细信息,包括审批人(使用 approval_state 如果可用,则回退到 approvals)

测试🧪

该项目包括全面的测试覆盖,包括远程授权:

# Run all tests (API validation + remote auth)
npm test

# Run only remote authorization tests
npm run test:remote-auth

# Run all tests including readonly MCP tests
npm run test:all

# Run only API validation
npm run test:integration

所有远程授权测试都使用模拟的GitLab服务器,不需要实际的GitLab凭据。