使用说明
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。
认证方法
服务器支持两种身份验证方法:
- 个人访问令牌 (传统方法)
- OAuth2 (建议使用以提高安全性)
使用OAuth2身份验证
OAuth2使用基于浏览器的身份验证提供了更安全的身份验证流。启用后,服务器将:
- 打开浏览器访问GitLab的授权页面
- 等待您批准访问
- 安全地存储令牌以备将来使用
- 令牌过期时自动刷新令牌
有关OAuth2设置的详细说明,请参阅 OAuth设置指南.
快速设置-首先创建一个GitLab OAuth应用程序:
- 转到您的GitLab实例:
Settings→Applications - 使用以下内容创建新应用程序:
- 名字:
GitLab MCP Server(或您喜欢的任何名称) - 重定向URI:
http://127.0.0.1:8888/callback - 范围:选择
api(提供对API的完整读/写访问)
- 名字:
- 复制 应用标识符 (这是您的客户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/callbackGITLAB_OAUTH_TOKEN_PATH:存储OAuth令牌的自定义路径。违约:~/.gitlab-mcp-token.jsonREMOTE_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将导致服务器退出并出错
- 每个客户端会话都可以使用不同的令牌,从而通过安全的会话隔离实现多用户支持
- 令牌按会话存储,并在会话关闭或超时时自动清理
- 服务器接受来自HTTP标头的GitLab PAT令牌(
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-proxyHTTPS_PROXY:传出请求的HTTPS代理服务器URL。例子:https://proxy.example.com:8080支持HTTP/HTTPS和SOCKS代理。CLI参数:--https-proxyNO_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
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_branch_diffs-获取GitLab项目中两个分支或提交之间的更改/差异update_merge_request-更新合并请求(必须提供mergeRequestIid或branchName)create_note-为问题或合并请求创建新注释(注释)create_merge_request_thread-在合并请求上创建新线程mr_discussions-列出合并请求的讨论项update_merge_request_note-修改现有的合并请求线程注释create_merge_request_note-向现有合并请求线程添加新注释get_draft_note-从合并请求中获取单个草稿笔记list_draft_notes-列出合并请求的草稿注释create_draft_note-为合并请求创建草稿注释update_draft_note-更新现有的说明草稿delete_draft_note-删除草稿注释publish_draft_note-发布单个草稿注释bulk_publish_draft_notes-发布合并请求的所有草稿注释update_issue_note-修改现有问题线索注释create_issue_note-向现有问题线程添加新注释list_issues-列出问题(默认值:仅由当前用户创建;对所有可访问的问题使用范围=“全部”)my_issues-列出分配给已验证用户的问题(默认为未解决问题)get_issue-获取GitLab项目中特定问题的详细信息update_issue-更新GitLab项目中的问题delete_issue-从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_labels-列出项目的标签get_label-从项目中获取单个标签create_label-在项目中创建新标签update_label-更新项目中的现有标签delete_label-从项目中删除标签list_group_projects-列出GitLab组中具有筛选选项的项目list_wiki_pages-列出GitLab项目中的wiki页面get_wiki_page-获取特定wiki页面的详细信息create_wiki_page-在GitLab项目中创建一个新的wiki页面update_wiki_page-更新GitLab项目中的现有wiki页面delete_wiki_page-从GitLab项目中删除wiki页面get_repository_tree-获取GitLab项目的存储库树(列出文件和目录)list_pipelines-列出GitLab项目中带有过滤选项的管道get_pipeline-获取GitLab项目中特定管道的详细信息list_pipeline_jobs-列出特定管道中的所有作业list_pipeline_trigger_jobs-列出特定管道中触发下游管道的所有触发作业(桥)get_pipeline_job-获取GitLab管道作业号的详细信息get_pipeline_job_output-使用可选分页获取GitLab管道作业的输出/跟踪,以限制上下文窗口的使用create_pipeline-为分支或标记创建新管道retry_pipeline-重试失败或取消的管道cancel_pipeline-取消正在运行的管道play_pipeline_job-运行手动管道作业retry_pipeline_job-重试失败或取消的管道作业cancel_pipeline_job-取消正在运行的管道作业list_merge_requests-在全局或特定GitLab项目中列出合并请求,并带有过滤选项(project_id现在是可选的)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-获取特定里程碑的烧毁事件get_users-按用户名获取GitLab用户详细信息list_commits-列出带有筛选选项的存储库提交get_commit-获取特定提交的详细信息get_commit_diff-获取特定提交的更改/差异list_group_iterations-列出具有过滤选项的组迭代upload_markdown-将文件上传到GitLab项目以用于markdown内容download_attachment-通过secret和filename从GitLab项目下载上传的文件list_events-列出当前已验证用户的所有事件get_project_events-列出指定项目的所有可见事件list_releases-列出项目的所有版本get_release-按标签名称获取发布create_release-在GitLab项目中创建新版本update_release-更新GitLab项目中的现有版本delete_release-从GitLab项目中删除一个版本(不删除关联的标签)create_release_evidence-为现有版本创建发布证据(仅限GitLab Premium/Ultimate)download_release_asset-通过直接资产路径下载发布资产文件approve_merge_request-批准合并请求(需要适当的权限)unapprove_merge_request-取消批准以前批准的合并请求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凭据。
