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

@zereight/mcp gitlab
面向AI客户端的全面GitLab MCP服务器。通过stdio、SSE和Streamable HTTP管理项目、合并请求、问题、管道、wiki、发布、标签、里程碑等。
支持PAT、OAuth、只读模式、动态API URL,以及VS Code、Claude、Cursor、Copilot和其他MCP客户端的远程授权。
为什么要使用GitLab MCP?
- 广泛的GitLab覆盖范围——项目、存储库浏览、合并请求、问题、管道、维基、发布、标签、标记、里程碑等
- 灵活的身份验证——个人访问令牌、本地OAuth2浏览器流、MCP OAuth代理和按请求远程授权
- 多种传输方式——stdio用于本地客户端,SSE用于传统客户端,Streamable HTTP用于现代远程部署
- 客户端友好的设置——Claude Code、Codex、Antigravity、OpenCode、Copilot、Cline、Roo Code、Cursor、Kilo Code和Amp Code的示例
- Self-hosted就绪-与自定义GitLab实例、代理设置和动态API URL路由配合使用
快速入门:选择下面的个人访问令牌或OAuth2设置并使用 @zereight/mcp-gitlab 在您的MCP客户端配置中。
客户端设置指南
- Claude代码设置指南
- VS代码设置指南
- Codex设置指南
- 光标设置指南
- 基于JSON的MCP客户端设置指南 -适用于Factory AI Droid、OpenClaw和OpenCode风格的客户端
- OAuth2身份验证设置指南
- 环境变量引用
- 无状态模式——多吊舱HPA
- 自定义代理和多PAT设置
用法
安装概述
身份验证方法
服务器支持四种身份验证方法:
用于本地/桌面使用 (最常见):
- 个人访问令牌 (
GITLAB_PERSONAL_ACCESS_TOKEN)--最简单的设置 - OAuth2--本地浏览器 (
GITLAB_USE_OAUTH)--建议使用以提高安全性
用于服务器/远程部署:
- OAuth2-MCP代理 (
GITLAB_MCP_OAUTH)--用于远程MCP客户端,如Claude.ai - 远程授权 (
REMOTE_AUTHORIZATION)--多用户部署,每个调用者提供自己的令牌
快速设置路径
- 克劳德代码:参见 Claude代码设置指南
- VS Code:参见 VS代码设置指南
- GitHub Copilot:参见
- 法典:参见 Codex设置指南
- 光标:参见 光标设置指南
- 工厂AI Droid/OpenClaw/OpenCode风格客户端:参见 基于JSON的MCP客户端设置指南
- OAuth浏览器流详细信息:参见 OAuth2身份验证设置指南
对于最简单的本地设置,请从个人访问令牌开始。对于基于浏览器的本地身份验证,请使用OAuth2。对于远程或多用户部署,请继续阅读本自述文件后面的MCP OAuth和远程授权部分。
使用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参数优先于环境变量。
- 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 REMOTE_AUTHORIZATION=true \
-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",
"headers": {
"Authorization": "Bearer glpat-..."
}
}
}
}使用MCP OAuth代理(GITLAB_MCP_OAUTH)
仅适用于服务器/远程部署。 此模式要求使用可公开访问的HTTPS URL部署MCP服务器。有关本地/桌面使用,请参阅 GITLAB_USE_OAUTH 上面。适用于支持MCP OAuth规范的远程MCP客户端(例如Claude.ai)。 服务器充当一个完整的OAuth 2.0授权服务器——未经身份验证的请求 收到一个 401 + WWW-Authenticate 响应,触发OAuth浏览器流 在客户端自动。
远程MCP客户端,如OpenCode、MCPJam和Claude.ai,可以发送自己的 授权期间的回调URL。如果您无法注册每个客户端回调 GitLab中的URL,启用 GITLAB_OAUTH_CALLBACK_PROXY=true.使用回调代理 模式下,GitLab只需要一个注册的重定向URI: {MCP_SERVER_URL}/callback.
GITLAB_OAUTH_REDIRECT_URI 适用于本地OAuth(GITLAB_USE_OAUTH)只有。确实如此 不覆盖远程MCP OAuth客户端回调URL,也不应用于修复 远程 Unregistered redirect_uri 错误。
此变量存在是因为本地OAuth流在相同的服务器上启动浏览器 机器作为MCP服务器,并在本地HTTP服务器上监听回调, 例如 http://127.0.0.1:8888/callback.
远程MCP OAuth是不同的。在 GITLAB_MCP_OAUTH=true 模式,MCP客户端 在以下过程中提供自己的回调URL /authorize. GITLAB_OAUTH_REDIRECT_URI 不会替换客户端提供的URL。
| 模式 | 启用 | 回调变量 | GitLab重定向URI |
|---|---|---|---|
| 本地OAuth | GITLAB_USE_OAUTH=true | GITLAB_OAUTH_REDIRECT_URI | http://127.0.0.1:8888/callback 或您的本地回拨 |
| 远程MCP OAuth | GITLAB_MCP_OAUTH=true | GITLAB_OAUTH_CALLBACK_PROXY=true | {MCP_SERVER_URL}/callback |
使用 GITLAB_OAUTH_REDIRECT_URI 仅当MCP服务器本身拥有本地 浏览器回调。使用 GITLAB_OAUTH_CALLBACK_PROXY=true 当远程MCP客户端 拥有回调URL。
运作原理:您将此MCP服务器部署到具有公共HTTPS URL的某个位置。MCP 客户端连接到 {MCP_SERVER_URL}/mcp服务器处理OAuth 2.0流, 代表客户端与GitLab交换凭据。
先决条件:
- 可公开访问的HTTPS服务器URL(
MCP_SERVER_URL)--使用 吸烟 用于本地测试 - 预先注册的GitLab OAuth应用程序
api(或read_api)范围
首选 Admin area → Applications,将重定向URI设置为 {MCP_SERVER_URL}/callback
| 环境变量 | 必填 | 说明 |
|---|---|---|
GITLAB_MCP_OAUTH | ✅ | 设为 true 以启用 |
GITLAB_API_URL | ✅ | GitLab API基础URL |
GITLAB_OAUTH_APP_ID | ✅ | GitLab OAuth应用程序ID |
MCP_SERVER_URL | ✅ | 此MCP服务器的公共HTTPS URL |
STREAMABLE_HTTP | ✅ | 必须 true |
GITLAB_OAUTH_CALLBACK_PROXY | 可选 | 设置为 true 使用MCP服务器的固定 /callback URL |
GITLAB_OAUTH_SCOPES | 可选 | 逗号分隔范围(默认值: api,read_api,read_user) |
当 STREAMABLE_HTTP=true,服务器端 GITLAB_PERSONAL_ACCESS_TOKEN 或 GITLAB_JOB_TOKEN 需要 REMOTE_AUTHORIZATION=true 或 GITLAB_MCP_OAUTH=true.
故障排除Unregistered redirect_uri检查redirect_uri在浏览器URL中。如果它指向客户端回调 例如http://127.0.0.1:xxxxx/.../callback,启用: ``env GITLAB_OAUTH_CALLBACK_PROXY=true`不要通过更改来修复远程MCP OAuthGITLAB_OAUTH_REDIRECT_URI那 变量用于本地OAuth(GITLAB_USE_OAUTH`)只有。
docker run -i --rm \
-e HOST=0.0.0.0 \
-e GITLAB_MCP_OAUTH=true \
-e GITLAB_OAUTH_CALLBACK_PROXY=true \
-e STREAMABLE_HTTP=true \
-e MCP_SERVER_URL=https://your-server.example.com \
-e GITLAB_API_URL="https://gitlab.com/api/v4" \
-e GITLAB_OAUTH_APP_ID=your_app_id \
-p 3000:3002 \
zereight050/gitlab-mcpMCP客户端配置:
{
"mcpServers": {
"gitlab": {
"type": "http",
"url": "https://your-server.example.com/mcp"
}
}
}使用远程授权(REMOTE_AUTHORIZATION)
仅适用于服务器/远程部署。 每个HTTP调用者直接在请求头中提供自己的GitLab令牌,不涉及OAuth流。
适用于多用户或多租户部署,其中每个调用者都提供自己的 HTTP请求头中的GitLab令牌。没有OAuth流——MCP服务器转发 代表调用者将令牌发送到GitLab。
标题优先级: Private-Token > JOB-TOKEN > Authorization: Bearer
| 环境变量 | 必填 | 说明 |
|---|---|---|
REMOTE_AUTHORIZATION | ✅ | 设为 true 以启用 |
STREAMABLE_HTTP | ✅ | 必须 true |
ENABLE_DYNAMIC_API_URL | 可选项 | 允许每次请求通过GitLab URL X-GitLab-API-URL 头球 |
请求标头示例:
Private-Token: glpat-xxxxxxxxxxxxxxxxxxxx或使用Bearer令牌:
Authorization: Bearer glpat-xxxxxxxxxxxxxxxxxxxx⚠️REMOTE_AUTHORIZATION是 不兼容 SSE运输。STREAMABLE_HTTP=true是必需的。
环境变量
使用完整环境变量列表的专用参考:
大多数用户只需要以下启动集之一:
- 本地PAT:
GITLAB_PERSONAL_ACCESS_TOKEN,GITLAB_API_URL - 本地OAuth:
GITLAB_USE_OAUTH=true,GITLAB_OAUTH_CLIENT_ID,GITLAB_OAUTH_REDIRECT_URI,GITLAB_API_URL - 远程多用户HTTP:
STREAMABLE_HTTP=true,REMOTE_AUTHORIZATION=true,HOST,PORT - 多吊舱HPA(无状态):以上+
OAUTH_STATELESS_MODE=true,OAUTH_STATELESS_SECRET(所有吊舱都一样)。看 无状态模式.
常用变量:
GITLAB_API_URLGITLAB_PERSONAL_ACCESS_TOKENGITLAB_USE_OAUTHREMOTE_AUTHORIZATIONGITLAB_MCP_OAUTHGITLAB_OAUTH_CALLBACK_PROXYOAUTH_STATELESS_MODEOAUTH_STATELESS_SECRET
参考文件还包括:
- auth和OAuth变量
- MCP OAuth代理变量
- 项目和工具过滤变量
- 通过以下方式进行动态工具发现
discover_tools(按需工具集激活) - 传输和会话变量
- 代理和TLS变量
有关回调代理模式的详细信息,请参阅 GitLab MCP OAuth回调代理.
远程授权设置(多用户支持)
使用时 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):///mcp",
"headers": {
"Authorization": "Bearer glpat-..."
}
}
}
}重要提示:
- 远程授权 仅适用于流式HTTP传输
- 每个会话都是隔离的-来自一个会话的令牌无法访问另一个会话中的数据
会话结束时,令牌会自动清理
- 会话超时: 身份验证令牌在以下时间过期
SESSION_TIMEOUT_SECONDS(默认1小时)不活动。超时后,客户端必须再次发送身份验证标头。传输会话仍处于活动状态。 - 每个请求都会重置该会话的超时计时器
- 速率限制: 每次会议仅限于
MAX_REQUESTS_PER_MINUTE每分钟请求数(默认值60) - 容量限制: 服务器最多可接受
MAX_SESSIONS并发会话(默认值1000)
MCP OAuth设置(Claude.ai原生OAuth)
使用时 GITLAB_MCP_OAUTH=true,服务器充当GitLab的OAuth代理 例子Claude.ai(以及任何符合MCP规范的客户端)处理整个浏览器 身份验证流程自动进行,无需手动管理个人访问令牌。
先决条件:
A. 预先注册的GitLab OAuth应用程序 是必需的。GitLab动态限制 向 mcp 范围,这对于API来说是不够的 呼叫(需要 api 或 read_api).
- 转到您的GitLab实例→ 管理区域>应用程序 (实例范围)或 用户设置>应用程序 (个人)
- 使用以下内容创建新应用程序:
- 机密:未选中 - 范围: api, read_api, read_user (或您打算通过以下方式请求的任何范围 GITLAB_OAUTH_SCOPES)
- 保存并复制 应用标识符 --这是你的
GITLAB_OAUTH_APP_ID
它是如何工作的:
- 用户在Claude.ai中添加您的MCP服务器URL
- Claude.ai通过以下方式发现OAuth端点
/.well-known/oauth-authorization-server - Claude.ai通过动态客户端注册进行注册(
POST /register)--由MCP服务器本地处理(每个客户端都有一个虚拟客户端ID) - Claude.ai使用预先注册的OAuth应用程序将用户的浏览器重定向到GitLab的登录页面
- 用户认证;GitLab重定向回
https://claude.ai/api/mcp/auth_callback - Claude.ai发送
Authorization: Bearer在每个MCP请求上 - 服务器使用GitLab验证令牌,并在每个会话中存储它
服务器设置:
docker run -d \
-e STREAMABLE_HTTP=true \
-e GITLAB_MCP_OAUTH=true \
-e GITLAB_OAUTH_APP_ID="your-gitlab-oauth-app-client-id" \
-e GITLAB_API_URL="https://gitlab.example.com/api/v4" \
-e MCP_SERVER_URL="https://your-mcp-server.example.com" \
-p 3002:3002 \
zereight050/gitlab-mcp对于本地开发(允许HTTP):
MCP_DANGEROUSLY_ALLOW_INSECURE_ISSUER_URL=true \
STREAMABLE_HTTP=true \
GITLAB_MCP_OAUTH=true \
GITLAB_OAUTH_APP_ID=your-gitlab-oauth-app-client-id \
MCP_SERVER_URL=http://localhost:3002 \
GITLAB_API_URL=https://gitlab.com/api/v4 \
node build/index.js第.ai条配置:
{
"mcpServers": {
"GitLab": {
"url": "https://your-mcp-server.example.com/mcp"
}
}
}不 headers 字段是必需的——Claude.ai通过OAuth自动获取令牌。
环境变量:
| 变量 | 必填 | 描述 |
|---|---|---|
GITLAB_MCP_OAUTH | 是 | 设置为 true 以启用 |
GITLAB_OAUTH_APP_ID | 是 | 预先注册的GitLab OAuth应用程序的客户端ID |
MCP_SERVER_URL | 是 | MCP服务器的公共HTTPS URL |
GITLAB_API_URL | 是 | 您的GitLab实例API URL(例如。 https://gitlab.com/api/v4) |
STREAMABLE_HTTP | 是 | 必须是 true (不支持SSE) |
GITLAB_OAUTH_SCOPES | 否 | 请求逗号分隔的GitLab作用域(例如。 api,read_user).默认为 api (或 read_api 当 GITLAB_READ_ONLY_MODE=true).预注册的应用程序必须至少配置这些作用域。 |
MCP_DANGEROUSLY_ALLOW_INSECURE_ISSUER_URL | 否 | 设置 true 仅适用于本地HTTP开发 |
重要提示:
- MCP OAuth 仅适用于流式HTTP传输 (
SSE=true不兼容) - 每个用户会话都存储自己的OAuth令牌——会话是完全隔离的
- 会话超时、速率限制和容量限制同样适用于
REMOTE_AUTHORIZATION 模式(SESSION_TIMEOUT_SECONDS, MAX_REQUESTS_PER_MINUTE, MAX_SESSIONS)
- 标头身份验证回退: 当
Private-Token或JOB-TOKEN请求标头为
目前,跳过OAuth验证,直接使用原始令牌进行验证 会议。这允许PAT和CI作业令牌与OAuth流一起使用 相同的服务器实例。 Authorization: Bearer 始终被视为OAuth 令牌--使用 Private-Token 用于基于PAT的报头认证。
特工技能档案
预构建的技能文件可在 skills/gitlab-mcp/ 用于支持技能/指令加载的AI代理(Claude Code、GitHub Copilot、Cursor等)。
使用安装 skills CLI:
npx skills add zereight/gitlab-mcp --skill gitlab-mcp-skill在您的AI客户端中注册技能目录,以获得最佳的工具使用指南,而无需仅依赖完整的ListTools响应。
工具🛠️
Click to expand
merge_merge_request-在GitLab项目中合并合并请求create_or_update_file-在GitLab项目中创建或更新单个文件search_repositories-搜索GitLab项目create_repository-创建一个新的GitLab项目get_file_contents-从GitLab项目中获取文件或目录的内容push_files-在一次提交中将多个文件推送到GitLab项目中create_issue-在GitLab项目中创建新问题create_merge_request-在GitLab项目中创建新的合并请求fork_repository-将GitLab项目分叉到您的帐户或指定的命名空间create_branch-在GitLab项目中创建一个新分支get_merge_request-使用精简部署摘要、落后计数、提交添加摘要和审批摘要获取合并请求的详细信息(必须提供mergeRequestIid或branchName)get_merge_request_diffs-获取合并请求的更改/差异(必须提供mergeRequestIid或branchName)list_merge_request_diffs-列出具有分页支持的合并请求差异(必须提供mergeRequestIid或branchName)get_merge_request_conflicts-获取GitLab项目中合并请求的冲突list_merge_request_changed_files-代码审查工作流程的第一步。仅返回合并请求中更改的文件路径列表,不包括差异内容。首先调用此函数以获取文件路径,然后在一次批处理调用中使用多个文件调用get_meme_request_file_diff(建议每次调用3-5个文件)。支持使用正则表达式进行excluded_file_patterns过滤。(必须提供mergeRequestIid或branchName)get_merge_request_file_diff-代码审查工作流程的第二步。从合并请求中获取一个或多个文件的差异。首先调用list_merge_request_changed_files,然后将它们作为数组传递,以便高效地获取差异。支持批处理多个文件(建议3-5个)。(必须提供mergeRequestIid或branchName)list_merge_request_versions-列出合并请求的所有版本get_merge_request_version-获取合并请求的特定版本get_branch_diffs-获取GitLab项目中两个分支或提交之间的更改/差异update_merge_request-更新合并请求(必须提供mergeRequestIid或branchName)create_note-为问题或合并请求创建新注释(注释)create_merge_request_thread-在合并请求上创建新线程mr_discussions-列出合并请求的讨论项resolve_merge_request_thread-解析合并请求上的线程update_merge_request_note-修改现有的合并请求线程注释create_merge_request_note-向现有合并请求线程添加新注释delete_merge_request_discussion_note-删除合并请求中的讨论说明update_merge_request_discussion_note-更新合并请求的讨论说明create_merge_request_discussion_note-向现有合并请求线程添加新的讨论注释delete_merge_request_note-删除现有的合并请求注释get_merge_request_note-获取合并请求的特定注释get_merge_request_notes-列出合并请求的注释get_draft_note-从合并请求中获取单个草稿笔记list_draft_notes-列出合并请求的草稿注释create_draft_note-为合并请求创建草稿注释update_draft_note-更新现有的说明草稿delete_draft_note-删除草稿注释publish_draft_note-发布单个草稿注释bulk_publish_draft_notes-发布合并请求的所有草稿注释list_merge_requests-在全局或特定GitLab项目中列出合并请求,并带有过滤选项(project_id现在是可选的)approve_merge_request-批准合并请求(需要适当的权限)unapprove_merge_request-取消批准以前批准的合并请求get_merge_request_approval_state-获取合并请求审批详细信息,包括审批人(使用approval_state如果可用,则回退到approvals)update_issue_note-修改现有问题线索注释create_issue_note-向现有问题线程添加新注释list_issues-列出问题(默认值:仅由当前用户创建;对所有可访问的问题使用范围=“全部”)my_issues-列出分配给已验证用户的问题(默认为未解决问题)get_issue-获取GitLab项目中特定问题的详细信息update_issue-更新GitLab项目中的问题delete_issue-从GitLab项目中删除问题list_todos-列出当前用户的GitLab待办事项mark_todo_done-将GitLab待办事项标记为已完成mark_all_todos_done-将当前用户的所有待处理GitLab待办事项标记为已完成list_issue_links-列出特定问题的所有问题链接list_issue_discussions-列出GitLab项目中某个问题的讨论get_issue_link-获取特定问题链接create_issue_link-在两个问题之间创建问题链接delete_issue_link-删除问题链接list_namespaces-列出当前用户可用的所有命名空间get_namespace-通过ID或路径获取命名空间的详细信息verify_namespace-验证命名空间路径是否存在get_project-获取特定项目的详细信息list_projects-列出当前用户可访问的项目list_project_members-列出GitLab项目的成员list_group_projects-列出GitLab组中具有筛选选项的项目list_group_iterations-列出具有过滤选项的组迭代list_labels-列出项目的标签get_label-从项目中获取单个标签create_label-在项目中创建新标签update_label-更新项目中的现有标签delete_label-从项目中删除标签list_pipelines-列出GitLab项目中带有过滤选项的管道get_pipeline-获取GitLab项目中特定管道的详细信息list_pipeline_jobs-列出特定管道中的所有作业list_pipeline_trigger_jobs-列出特定管道中触发下游管道的所有触发作业(桥)get_pipeline_job-获取GitLab管道作业号的详细信息get_pipeline_job_output-使用可选分页获取GitLab管道作业的输出/跟踪,以限制上下文窗口的使用validate_ci_lint-验证为项目提供的GitLab CI/CD YAML内容validate_project_ci_lint-验证现有.gitlab-ci.yml项目的配置create_pipeline-为分支或标记创建新管道retry_pipeline-重试失败或取消的管道cancel_pipeline-取消正在运行的管道play_pipeline_job-运行手动管道作业retry_pipeline_job-重试失败或取消的管道作业cancel_pipeline_job-取消正在运行的管道作业list_deployments-列出GitLab项目中具有过滤选项的部署get_deployment-获取GitLab项目中特定部署的详细信息list_environments-列出GitLab项目中的环境get_environment-获取GitLab项目中特定环境的详细信息list_job_artifacts-列出作业工件存档中的工件文件。返回文件名、路径、类型和大小download_job_artifacts-将作业的整个工件存档(zip)下载到本地路径。返回保存的文件路径get_job_artifact_file-通过存档中的路径从作业的工件中获取单个文件的内容list_milestones-列出GitLab项目中具有过滤选项的里程碑get_milestone-获取特定里程碑的详细信息create_milestone-在GitLab项目中创建新的里程碑edit_milestone-编辑GitLab项目中的现有里程碑delete_milestone-从GitLab项目中删除里程碑get_milestone_issue-获取与特定里程碑相关的问题get_milestone_merge_requests-获取与特定里程碑关联的合并请求promote_milestone-将里程碑推进到下一阶段get_milestone_burndown_events-获取特定里程碑的烧毁事件list_wiki_pages-列出GitLab项目中的wiki页面get_wiki_page-获取特定wiki页面的详细信息create_wiki_page-在GitLab项目中创建一个新的wiki页面update_wiki_page-更新GitLab项目中的现有wiki页面delete_wiki_page-从GitLab项目中删除wiki页面list_group_wiki_pages-列出GitLab组中的wiki页面get_group_wiki_page-获取特定组wiki页面的详细信息create_group_wiki_page-在GitLab组中创建一个新的wiki页面update_group_wiki_page-更新GitLab组中的现有wiki页面delete_group_wiki_page-从GitLab组中删除wiki页面get_repository_tree-获取GitLab项目的存储库树(列出文件和目录)list_commits-列出带有筛选选项的存储库提交get_commit-获取特定提交的详细信息get_commit_diff-获取特定提交的更改/差异list_commit_statuses-列出特定提交的状态create_commit_status-创建或更新特定提交的状态list_releases-列出项目的所有版本get_release-按标签名称获取发布create_release-在GitLab项目中创建新版本update_release-更新GitLab项目中的现有版本delete_release-从GitLab项目中删除一个版本(不删除关联的标签)create_release_evidence-为现有版本创建发布证据(仅限GitLab Premium/Ultimate)download_release_asset-通过直接资产路径下载发布资产文件list_tags-列出支持过滤和分页的存储库标签get_tag-获取特定存储库标签的详细信息create_tag-在存储库中创建新标记delete_tag-从存储库中删除标记get_tag_signature-获取已签名标签的签名get_users-按用户名获取GitLab用户详细信息list_events-列出当前已验证用户的所有事件get_project_events-列出指定项目的所有可见事件upload_markdown-将文件上传到GitLab项目以用于markdown内容download_attachment-通过secret和filename从GitLab项目下载上传的文件get_work_item-获取一个包含完整详细信息的单个工作项,包括状态、层次结构(父/子)、类型、标签、受让人和所有小部件list_work_items-使用筛选器(类型、状态、搜索、受让人、标签)列出项目中的工作项。返回具有状态和层次结构信息的项目create_work_item-创建一个新的工作项(问题、任务、事件、test_case、epic、key_result、目标、需求、票证)。支持设置标题、描述、标签、受让人、体重、父母、健康状况、开始/到期日期、里程碑和机密性update_work_item-更新工作项。可以修改标题、描述、标签、受让人、重量、状态、状态、父层次结构、子项、健康状态、开始/到期日期、里程碑、机密性、链接项目和自定义字段convert_work_item_type-将工作项转换为其他类型(例如问题到任务、任务到事件)list_work_item_statuses-列出项目中工作项类型的可用状态。需要具有可配置状态的GitLab Premium/Ultimatelist_custom_field_definitions-列出项目中工作项类型的可用自定义字段定义。返回通过update_work_item设置自定义字段所需的字段名、类型和IDmove_work_item-将工作项(问题、任务等)移动到其他项目。使用GitLab GraphQL issueMove变异list_work_item_notes-列出工作项目的注释和讨论。返回带有作者、正文、时间戳和系统/内部标志的线程讨论create_work_item_note-向工作项添加注释/评论。支持Markdown、内部注释和线程回复get_timeline_events-列出事件的时间线事件。返回按时间顺序排列的事件,包括注释、时间戳和标签create_timeline_event-为事件创建时间线事件。支持标签:“开始时间”、“结束时间”、”检测到影响“、”启动响应“、”减轻影响“、“确定原因”list_webhooks-列出GitLab项目或组的所有已配置的Webhook。提供project_id或group_idlist_webhook_events-列出项目或组webhook的最近webhook事件(过去7天)。使用摘要模式进行概述,然后使用get_webhook_event获取完整详细信息get_webhook_event-按ID获取特定webhook事件的完整详细信息,包括请求/响应有效载荷search_code-在GitLab实例上的所有项目中搜索代码(需要启用高级搜索或精确代码搜索)search_project_code-在特定的GitLab项目中搜索代码(需要启用高级搜索或精确代码搜索)search_group_code-在特定的GitLab组中搜索代码(需要启用高级搜索或精确代码搜索)execute_graphql-执行GitLab GraphQL查询list_merge_request_pipelines-列出具有分页支持的合并请求的管道
测试🧪
该项目包括全面的测试覆盖,包括远程授权:
# 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凭据。

