gitlab-mcp
gitlab-mcp 是一款专为 GitLab 打造的模型上下文协议(MCP)服务器,旨在让各类 AI 编程助手(如 Claude Code、Cursor、Copilot 等)能够直接理解并操作你的 GitLab 项目。它有效解决了大语言模型无法直接访问私有代码仓库、难以自动化执行代码审查或流水线管理等痛点,将 AI 的能力延伸至完整的 DevOps 工作流中。
这款工具特别适合需要提升研发效率的开发者、技术团队及 DevOps 工程师使用。无论是日常代码管理、Issue 追踪,还是复杂的 CI/CD 流水线控制,用户都能通过自然语言指令让 AI 代为完成。相比早期版本,gitlab-mcp 不仅修复了已知缺陷,还引入了多项实用特性:支持动态配置 GitLab API 地址以适应不同部署环境,具备连接池优化以提升响应速度,并提供多种灵活的身份验证方式。其中,基于浏览器的 OAuth2 认证流程兼顾了安全性与便捷性,而针对远程多用户场景的代理授权模式则满足了企业级部署需求。此外,它还允许通过环境变量或命令行参数精细控制对 Wiki、里程碑及流水线等特定功能的访问权限,确保集成过程既强大又安全可控。
使用场景
某后端开发团队在每日站会前,需要快速汇总 GitLab 上多个微服务项目的代码合并请求(MR)状态、流水线执行结果及最新里程碑进度,以便同步给产品经理。
没有 gitlab-mcp 时
- 开发者需手动切换浏览器标签页,逐个登录不同项目页面查看 MR 列表,耗时且容易遗漏关键评论。
- 获取流水线失败原因时,必须点击进具体作业日志逐行排查,无法直接在对话上下文中关联错误代码。
- 统计里程碑完成度依赖人工复制粘贴数据到 Excel 或文档,不仅效率低下,还常因版本不同步导致数据失真。
- 若使用个人访问令牌配置本地脚本,面临密钥硬编码的安全风险,且难以适配多用户协作场景。
- 遇到 GitLab 实例地址变更或动态路由时,传统静态配置工具往往失效,需反复修改配置文件重启服务。
使用 gitlab-mcp 后
- 开发者直接在 IDE 或 AI 助手对话框中指令“列出所有未合并的 MR",gitlab-mcp 即时聚合多项目数据并高亮阻塞点。
- 询问“为什么构建失败”时,gitlab-mcp 自动拉取对应流水线日志并定位错误行,结合代码上下文给出修复建议。
- 输入“生成本周里程碑报告”,gitlab-mcp 实时调用 API 提取进度数据,自动生成结构化摘要供团队直接复用。
- 团队利用 OAuth2 浏览器认证模式,无需管理敏感 Token,既保障了本地开发安全,又支持远程成员无缝接入。
- 借助动态 API URL 连接池特性,即使后端 GitLab 地址频繁变动,gitlab-mcp 也能自适应连接,确保持续集成不中断。
gitlab-mcp 将分散的 DevOps 操作转化为自然语言交互,让研发团队从繁琐的界面点击中解放,专注于核心逻辑交付。
运行环境要求
- Linux
- macOS
- Windows
未说明
未说明

快速开始
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 密钥和 URLs。
认证方式
该服务器支持四种认证方式:
适用于本地/桌面使用(最常见):
- 个人访问令牌 (
GITLAB_PERSONAL_ACCESS_TOKEN) — 最简单的设置 - OAuth2 — 本地浏览器 (
GITLAB_USE_OAUTH) — 推荐用于更高的安全性
适用于服务器/远程部署:
- OAuth2 — MCP 代理 (
GITLAB_MCP_OAUTH) — 用于远程 MCP 客户端,例如 Claude.ai - 远程授权 (
REMOTE_AUTHORIZATION) — 多用户部署,每个调用者提供自己的令牌
使用 OAuth2 认证
OAuth2 提供了一种更安全的基于浏览器的身份验证流程。启用后,服务器将:
- 打开您的浏览器到 GitLab 的授权页面
- 等待您批准访问权限
- 安全地存储令牌以供将来使用
- 在令牌过期时自动刷新令牌
有关详细的 OAuth2 设置说明,请参阅 OAuth 设置指南。
快速设置 - 首先创建一个 GitLab OAuth 应用程序:
- 前往您的 GitLab 实例:
管理区域→应用程序 - 创建一个新应用程序,设置如下:
- 名称:
GitLab MCP 服务器(或您喜欢的任何名称) - 重定向 URI:
http://127.0.0.1:8888/callback - 作用域:选择
api(提供对 API 的完整读写访问权限)
- 名称:
- 复制 应用程序 ID(即您的客户端 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", // 仅限机密应用
"GITLAB_OAUTH_REDIRECT_URI": "http://127.0.0.1:8888/callback",
"GITLAB_API_URL": "your_gitlab_api_url",
"GITLAB_PROJECT_ID": "your_project_id", // 可选:默认项目
"GITLAB_ALLOWED_PROJECT_IDS": "", // 可选:允许的项目 ID 列表,用逗号分隔
"GITLAB_READ_ONLY_MODE": "false",
"USE_GITLAB_WIKI": "false", // 是否使用 wiki API?
"USE_MILESTONE": "false", // 是否使用里程碑 API?
"USE_PIPELINE": "false" // 是否使用流水线 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", // 可选:默认项目
"GITLAB_ALLOWED_PROJECT_IDS": "", // 可选:允许的项目 ID 列表,用逗号分隔
"GITLAB_READ_ONLY_MODE": "false",
"USE_GITLAB_WIKI": "false", // 是否使用 wiki API?
"USE_MILESTONE": "false", // 是否使用里程碑 API?
"USE_PIPELINE": "false" // 是否使用流水线 API?
}
}
}
}
使用 CLI 参数(适用于环境变量有问题的客户端)
一些 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 .vscode/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 客户端秘密",
"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 个人访问令牌",
"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 Agents SDK(MCP 工具)
env_vars = {
"GITLAB_PERSONAL_ACCESS_TOKEN": gitlab_access_token,
"GITLAB_API_URL": gitlab_api_url,
"USE_GITLAB_WIKI": use_gitlab_wiki
# ......其余可选参数
}
stdio_gitlab_mcp_client = MCPClient(
lambda: stdio_client(
StdioServerParameters(
command="npx",
args=["-y", "@zereight/mcp-gitlab"],
env=env_vars,
)
)
)
Docker
注意: 对于 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"
}
}
}
- streamable-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"
}
}
}
使用 MCP OAuth 代理 (GITLAB_MCP_OAUTH)
仅适用于服务器/远程部署。此模式要求 MCP 服务器部署在一个可公开访问的 HTTPS URL 上。对于本地/桌面使用,请参阅上面的
GITLAB_USE_OAUTH。
适用于支持 MCP OAuth 规范的远程 MCP 客户端(例如 Claude.ai)。
该服务器充当完整的 OAuth 2.0 授权服务器——未经身份验证的请求会收到 401 + WWW-Authenticate 响应,从而在客户端自动触发 OAuth 浏览器流程。
工作原理: 您将此 MCP 服务器部署在具有公共 HTTPS URL 的位置。MCP 客户端连接到 {MCP_SERVER_URL}/mcp。服务器会处理 OAuth 2.0 流程,并代表客户端与 GitLab 进行凭据交换。
先决条件:
- 一个可公开访问的 HTTPS 服务器 URL (
MCP_SERVER_URL) — 可使用 ngrok 进行本地测试 - 已预先注册的 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_SCOPES |
可选 | 逗号分隔的范围(默认:api,read_api,read_user) |
docker run -i --rm \
-e HOST=0.0.0.0 \
-e GITLAB_MCP_OAUTH=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-mcp
MCP 客户端配置:
{
"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 |
可选 | 允许通过 X-GitLab-API-URL 头部指定每请求的 GitLab URL |
示例请求头:
Private-Token: glpat-xxxxxxxxxxxxxxxxxxxx
或者使用 Bearer 令牌:
Authorization: Bearer glpat-xxxxxxxxxxxxxxxxxxxx
⚠️
REMOTE_AUTHORIZATION不兼容 SSE 传输。必须设置STREAMABLE_HTTP=true。
环境变量
认证配置
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 令牌(
GITLAB_MCP_OAUTH: 设置为true以启用服务器端 MCP OAuth 代理模式。详情请参见 MCP OAuth 设置。GITLAB_OAUTH_APP_ID: 预注册 GitLab OAuth 应用程序的客户端 ID。当GITLAB_MCP_OAUTH=true时必填。GITLAB_OAUTH_SCOPES: 在 MCP OAuth 流程中请求的 GitLab 作用域列表,以逗号分隔(例如api,read_user)。默认值为api(或当GITLAB_READ_ONLY_MODE=true时为read_api)。仅在GITLAB_MCP_OAUTH=true时使用。预注册的应用程序必须至少配置这些作用域。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时,服务器仅暴露只读操作。这有助于增强安全性,或在不需要写入权限时使用。也适用于与 Cursor 及其 40 个工具限制一起使用。GITLAB_DENIED_TOOLS_REGEX: 当设置为正则表达式时,将排除匹配的工具。USE_GITLAB_WIKI: 遗留标志。Wiki 功能现已默认启用。当设置为true时,即使wiki工具集未在GITLAB_TOOLSETS中显式列出,也会确保包含 Wiki 相关工具。USE_MILESTONE: 遗留标志。里程碑功能现已默认启用。当设置为true时,即使milestones工具集未在GITLAB_TOOLSETS中显式列出,也会确保包含里程碑相关工具。USE_PIPELINE: 遗留标志。流水线功能现已默认启用。当设置为true时,即使pipelines工具集未在GITLAB_TOOLSETS中显式列出,也会确保包含流水线相关工具。GITLAB_TOOLSETS: 以逗号分隔的要启用的工具集 ID 列表。如果为空或未设置,则使用默认工具集。设置为"all"可启用所有工具集。可用工具集如下(默认工具集以*标记):merge_requests* — MR 操作、评论、讨论、草稿评论、线程、版本、文件差异、冲突(34 个工具)issues* — 问题的 CRUD 操作、评论、链接、讨论(14 个工具)repositories* — 搜索、创建、文件内容、推送、分支、树结构(7 个工具)branches* — 分支创建、提交、差异比较(4 个工具)projects* — 项目/命名空间信息、组内项目、迭代(8 个工具)labels* — 标签的 CRUD 操作(5 个工具)pipelines* — 流水线、作业、部署、环境及制品相关操作(19 个工具)milestones* — 里程碑的 CRUD 操作、关联的问题和 MR、燃尽图(9 个工具)wiki* — 项目和组级别的 Wiki 页面 CRUD 操作(10 个工具)releases* — 发布物的 CRUD 操作、证据、资产下载(7 个工具)users* — 用户信息、事件、Markdown 上传、附件(5 个工具)workitems— 通过 GraphQL 进行工作项的 CRUD 操作、类型转换、状态、自定义字段、评论、时间线事件(12 个工具,需单独启用)webhooks— Webhook 列表及事件检查(3 个工具,需单独启用)search— 跨项目、跨组或全局代码搜索(3 个工具,需启用高级搜索或精确代码搜索)
注意:
execute_graphql不属于任何工具集,如需使用,必须通过GITLAB_TOOLS单独添加。公开任意 GraphQL 查询可能会绕过工具集限制(例如查询用户通过工具集有意禁用的数据,如 Wiki 或流水线),这将带来安全和权限隔离方面的风险。因此,将execute_graphql排除在所有工具集之外,并要求通过GITLAB_TOOLS=execute_graphql显式启用,正是为了遵循这一原则,而非出于向后兼容性的考虑。命令行参数:--toolsetsGITLAB_TOOLS: 以逗号分隔的单个工具名称列表,用于在已启用工具集的基础上进一步添加(累加方式)。可用于仅选择特定工具,而不必启用整个工具集。示例:GITLAB_TOOLS="list_pipelines,execute_graphql"。命令行参数:--tools综合逻辑:
最终工具 = (已启用工具集中的工具) ∪ (GITLAB_TOOLS) ∪ (遗留标志的覆盖)示例:
# 默认行为(不变) GITLAB_PERSONAL_ACCESS_TOKEN=xxx npx @zereight/mcp-gitlab # 仅限问题和仓库 GITLAB_TOOLSETS="issues,repositories" npx @zereight/mcp-gitlab # 启用所有工具集 GITLAB_TOOLSETS="all" npx @zereight/mcp-gitlab # 默认工具集 + 额外一个流水线工具 GITLAB_TOOLS="list_pipelines" npx @zereight/mcp-gitlab # 特定工具集 + 单个工具 GITLAB_TOOLSETS="issues,merge_requests" GITLAB_TOOLS="list_pipelines,get_pipeline" npx @zereight/mcp-gitlab
旧版标志仍有效(向后兼容)
USE_PIPELINE=true npx @zereight/mcp-gitlab
- `GITLAB_AUTH_COOKIE_PATH`: 用于需要基于 Cookie 认证的 GitLab 实例的认证 Cookie 文件路径。提供此参数后,该 Cookie 将被包含在所有 GitLab API 请求中。
- `SSE`: 设置为 'true' 时,启用服务器发送事件传输。
- `STREAMABLE_HTTP`: 设置为 'true' 时,启用可流式 HTTP 传输。如果 **SSE** 和 **STREAMABLE_HTTP** 均设置为 'true',服务器将优先使用可流式 HTTP 而不是 SSE 传输。
- `GITLAB_COMMIT_FILES_PER_PAGE`: GitLab 返回的提交差异每页文件数量。此值应与服务器端 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 代理(以 `socks://` 或 `socks5://` 开头的 URL)。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`。
#### 监控端点
使用可流式 HTTP 传输时,以下端点可用:
- `/health`: 健康检查端点,返回服务器状态、活动会话数和运行时间。
- `/metrics`: 详细指标包括:
- 活动和总会话数
- 认证指标(失败、过期)
- 速率限制统计
- 资源使用情况(内存、运行时间)
- 配置摘要
### 远程授权设置(多用户支持)
当使用 `REMOTE_AUTHORIZATION=true` 时,MCP 服务器可以支持多个用户,每个用户通过 HTTP 头传递各自的 GitLab 令牌。这适用于以下场景:
- 共享的 MCP 服务器实例,其中每个用户需要自己的 GitLab 访问权限
- IDE 集成,可以将用户特定的令牌注入到 MCP 请求中
**设置示例:**
```bash
# 启动带有远程授权的服务器
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 头标识),并在同一会话中的后续请求中重复使用。
使用 Cursor 的远程授权客户端配置示例
{
"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 个)。
MCP OAuth 设置(Claude.ai 原生 OAuth)
当使用 GITLAB_MCP_OAUTH=true 时,服务器会充当您 GitLab 实例的 OAuth 代理。Claude.ai(以及任何符合 MCP 规范的客户端)会自动处理整个浏览器认证流程——无需手动管理个人访问令牌。
先决条件:
需要一个预先注册的 GitLab OAuth 应用程序。GitLab 会将动态注册的(未验证的)应用程序限制在 mcp 范围内,而这个范围不足以进行 API 调用(需要 api 或 read_api)。
- 前往您的 GitLab 实例 → 管理员区域 > 应用程序(实例级别)或 用户设置 > 应用程序(个人级别)
- 创建一个新的应用程序,配置如下:
- 保密性:取消勾选
- 作用域:
api、read_api、read_user(或者您打算通过GITLAB_OAUTH_SCOPES请求的其他作用域)
- 保存并复制应用 ID——这就是您的
GITLAB_OAUTH_APP_ID
工作原理:
- 用户在 Claude.ai 中添加您的 MCP 服务器 URL
- Claude.ai 通过
/.well-known/oauth-authorization-server发现 OAuth 端点 - Claude.ai 通过动态客户端注册(
POST /register)自行注册——由 MCP 服务器本地处理(每个客户端都会获得一个虚拟客户端 ID) - Claude.ai 使用预先注册的 OAuth 应用程序将用户的浏览器重定向到 GitLab 的登录页面
- 用户完成身份验证;GitLab 重定向回
https://claude.ai/api/mcp/auth_callback - Claude.ai 在每次 MCP 请求中发送
Authorization: Bearer <token> - 服务器向 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
Claude.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(或当 GITLAB_READ_ONLY_MODE=true 时为 read_api)。预先注册的应用程序必须至少配置这些作用域。 |
MCP_DANGEROUSLY_ALLOW_INSECURE_ISSUER_URL |
否 | 仅用于本地 HTTP 开发时设置为 true |
重要提示:
- MCP OAuth 仅适用于 Streamable 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 令牌——如果需要基于 PAT 的头部认证,请使用Private-Token。
工具 🛠️
点击展开
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 项目 fork 到您的账户或指定的命名空间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_merge_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- 列出问题(默认仅显示当前用户创建的问题;使用 scope='all' 可查看所有可访问的问题)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_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 流水线作业的输出/跟踪日志,可选择分页以限制上下文窗口的使用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 项目中的维基页面get_wiki_page- 获取特定维基页面的详细信息create_wiki_page- 在 GitLab 项目中创建新维基页面update_wiki_page- 更新 GitLab 项目中的现有维基页面delete_wiki_page- 从 GitLab 项目中删除维基页面list_group_wiki_pages- 列出 GitLab 组中的维基页面get_group_wiki_page- 获取特定组维基页面的详细信息create_group_wiki_page- 在 GitLab 组中创建新维基页面update_group_wiki_page- 更新 GitLab 组中的现有维基页面delete_group_wiki_page- 从 GitLab 组中删除维基页面get_repository_tree- 获取 GitLab 项目的仓库树(列出文件和目录)list_commits- 列出仓库提交,并提供过滤选项get_commit- 获取特定提交的详细信息get_commit_diff- 获取特定提交的更改/差异list_releases- 列出项目的全部发布get_release- 根据标签名称获取发布create_release- 在 GitLab 项目中创建新发布update_release- 更新 GitLab 项目中的现有发布delete_release- 从 GitLab 项目中删除发布(不会删除关联的标签)create_release_evidence- 为现有发布创建发布证据(仅限 GitLab Premium/Ultimate 版本)download_release_asset- 根据资产直接路径下载发布资产文件get_users- 根据用户名获取 GitLab 用户的详细信息list_events- 列出当前已认证用户的全部事件get_project_events- 列出指定项目中所有可见的事件upload_markdown- 将文件上传到 GitLab 项目,用于 Markdown 内容download_attachment- 根据密钥和文件名从 GitLab 项目中下载上传的文件get_work_item- 获取单个工作项的完整详细信息,包括状态、层级关系(父级/子级)、类型、标签、负责人以及所有小部件list_work_items- 列出项目中的工作项,并提供筛选条件(类型、状态、搜索、负责人、标签)。返回包含状态和层级信息的工作项create_work_item- 创建新的工作项(问题、任务、事件、测试用例、史诗、关键结果、目标、需求、工单)。支持设置标题、描述、标签、负责人、权重、父级、健康状况、开始/截止日期、里程碑和保密级别update_work_item- 更新工作项。可以修改标题、描述、标签、负责人、权重、状态、健康状况、父级层级、子级、开始/截止日期、里程碑、保密级别、关联项目以及自定义字段convert_work_item_type- 将工作项转换为不同类型(例如,问题转为任务,任务转为事件)list_work_item_statuses- 列出项目中某类工作项的可用状态。需要 GitLab Premium/Ultimate 版本,并支持自定义状态list_custom_field_definitions- 列出项目中某类工作项的可用自定义字段定义。返回设置自定义字段所需的字段名称、类型和 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 的近期事件(过去 7 天)。可先使用概览模式查看,再调用 get_webhook_event 获取详细信息get_webhook_event- 根据 ID 获取特定 Webhook 事件的完整详细信息,包括请求和响应负载search_code- 在 GitLab 实例的所有项目中搜索代码(需要启用高级搜索或精确代码搜索功能)search_project_code- 在特定 GitLab 项目中搜索代码(需要启用高级搜索或精确代码搜索功能)search_group_code- 在特定 GitLab 组中搜索代码(需要启用高级搜索或精确代码搜索功能)execute_graphql- 执行 GitLab GraphQL 查询
测试 🧪
该项目包含全面的测试覆盖,包括远程授权测试:
# 运行所有测试(API 验证 + 远程认证)
npm test
# 仅运行远程授权测试
npm run test:remote-auth
# 运行所有测试,包括只读 MCP 测试
npm run test:all
# 仅运行 API 验证
npm run test:integration
所有远程授权测试都使用模拟的 GitLab 服务器,无需真实的 GitLab 凭据。
版本历史
v2.0.362026/04/05v2.0.352026/03/31v2.0.342026/03/22v2.0.332026/03/17v2.0.322026/03/15v2.0.302026/02/18v2.0.282026/02/17v2.0.252026/02/08v2.0.242026/01/18v2.0.232026/01/14v2.0.222026/01/04v2.0.212025/12/20v2.0.202025/12/20v2.0.192025/12/20v2.0.182025/12/20v2.0.172025/12/19v2.0.142025/12/19v2.0.132025/11/24v2.0.122025/11/23v2.0.112025/11/06常见问题
相似工具推荐
openclaw
OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你
stable-diffusion-webui
stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。
everything-claude-code
everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上
ComfyUI
ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。
LLMs-from-scratch
LLMs-from-scratch 是一个基于 PyTorch 的开源教育项目,旨在引导用户从零开始一步步构建一个类似 ChatGPT 的大型语言模型(LLM)。它不仅是同名技术著作的官方代码库,更提供了一套完整的实践方案,涵盖模型开发、预训练及微调的全过程。 该项目主要解决了大模型领域“黑盒化”的学习痛点。许多开发者虽能调用现成模型,却难以深入理解其内部架构与训练机制。通过亲手编写每一行核心代码,用户能够透彻掌握 Transformer 架构、注意力机制等关键原理,从而真正理解大模型是如何“思考”的。此外,项目还包含了加载大型预训练权重进行微调的代码,帮助用户将理论知识延伸至实际应用。 LLMs-from-scratch 特别适合希望深入底层原理的 AI 开发者、研究人员以及计算机专业的学生。对于不满足于仅使用 API,而是渴望探究模型构建细节的技术人员而言,这是极佳的学习资源。其独特的技术亮点在于“循序渐进”的教学设计:将复杂的系统工程拆解为清晰的步骤,配合详细的图表与示例,让构建一个虽小但功能完备的大模型变得触手可及。无论你是想夯实理论基础,还是为未来研发更大规模的模型做准备
Deep-Live-Cam
Deep-Live-Cam 是一款专注于实时换脸与视频生成的开源工具,用户仅需一张静态照片,即可通过“一键操作”实现摄像头画面的即时变脸或制作深度伪造视频。它有效解决了传统换脸技术流程繁琐、对硬件配置要求极高以及难以实时预览的痛点,让高质量的数字内容创作变得触手可及。 这款工具不仅适合开发者和技术研究人员探索算法边界,更因其极简的操作逻辑(仅需三步:选脸、选摄像头、启动),广泛适用于普通用户、内容创作者、设计师及直播主播。无论是为了动画角色定制、服装展示模特替换,还是制作趣味短视频和直播互动,Deep-Live-Cam 都能提供流畅的支持。 其核心技术亮点在于强大的实时处理能力,支持口型遮罩(Mouth Mask)以保留使用者原始的嘴部动作,确保表情自然精准;同时具备“人脸映射”功能,可同时对画面中的多个主体应用不同面孔。此外,项目内置了严格的内容安全过滤机制,自动拦截涉及裸露、暴力等不当素材,并倡导用户在获得授权及明确标注的前提下合规使用,体现了技术发展与伦理责任的平衡。
