项目简介
GitLab Zero-Leak MCP Server 是一个基于 Model Context Protocol (MCP) 构建的应用后端,专为 Claude Desktop 或其他 LLM 应用设计。它作为一个安全增强的 GitLab API 接口,允许 LLM 安全地与自托管的 GitLab 实例交互,同时最大限度地减少源代码泄露的风险。该服务器默认禁用所有读取源代码的操作,并通过项目级白名单来控制数据访问,确保敏感代码的安全。
主要功能点
- 安全加固: 默认禁用 'get_file_contents' 等源代码读取操作,防止 LLM 客户端访问源代码。
- 零读取策略: 默认情况下,所有读取操作都被禁用,需要显式配置允许读取的项目。
- 项目级白名单: 通过 'ALLOWED_READ_PROJECTS' 环境变量配置允许读取的项目白名单,细粒度控制数据访问权限。
- 工具集成: 提供一系列预定义的工具,允许 LLM 执行 GitLab 操作,如创建/更新文件、搜索仓库、创建 Issue 和 Merge Request 等。
- Docker 部署: 支持 Docker 容器化部署,方便快捷地进行本地或服务器部署。
- 兼容 Claude/Desktop: 作为 MCP 服务器实现,可直接与 Claude Desktop 等 LLM 客户端集成。
- 审计日志: 提供全面的操作审计日志,记录所有工具调用和访问控制决策,方便安全审计和问题排查。
安装步骤
-
克隆仓库:
git clone https://github.com/JerryR7/gitlab-zero-leak-mcp.git cd gitlab-zero-leak-mcp -
配置环境变量: 复制 '.env.example' 文件并创建 '.env' 文件,根据需要修改以下环境变量:
GITLAB_PERSONAL_ACCESS_TOKEN=your_token_here # 替换为你的 GitLab Personal Access Token GITLAB_API_URL=https://gitlab.com/api/v4 # GitLab API 地址,通常为 https://gitlab.com/api/v4 或你的自托管 GitLab 实例地址 DISABLED_HANDLERS=get_file_contents # 默认禁用 get_file_contents,可根据需要添加其他禁用的工具,用逗号分隔 ALLOWED_READ_PROJECTS=your-group/public-repo # 允许读取的项目,用逗号分隔注意:
- 'GITLAB_PERSONAL_ACCESS_TOKEN' 需要具有访问 GitLab API 的权限,建议使用最小权限原则创建 Token。
- 'ALLOWED_READ_PROJECTS' 配置允许 'get_file_contents' 等读取操作访问的项目,如果不需要读取操作,可以留空。
- 请勿将 '.env' 文件提交到版本控制系统,避免泄露敏感信息。
-
Docker 构建和运行:
docker build -t gitlab-zero-leak-mcp . docker run -i --env-file .env gitlab-zero-leak-mcp或者使用 Docker Compose 部署:
docker-compose up -d
服务器配置 (MCP 客户端配置)
要将 GitLab Zero-Leak MCP Server 集成到 MCP 客户端(例如 Claude Desktop),您需要配置 MCP 服务器的启动命令和参数。以下是两种常用的配置方式,您可以根据您的部署方式选择合适的配置:
Docker 部署配置 (推荐):
{ "mcpServers": { "gitlab-zero-leak": { // 服务器名称,可以自定义 "command": "docker", // 启动命令,使用 docker "args": [ // 启动参数 "run", "--rm", // 容器退出后自动删除 "-i", // 保持 STDIN 打开 "-e", "GITLAB_PERSONAL_ACCESS_TOKEN=<YOUR_TOKEN>", // 传递 GitLab Token 环境变量,请替换 <YOUR_TOKEN> 为您的 Token "-e", "GITLAB_API_URL=https://gitlab.com/api/v4", // 传递 GitLab API URL 环境变量,如果使用自托管 GitLab,请修改为您的实例地址 "-e", "DISABLED_HANDLERS=get_file_contents", // 传递禁用 handlers 环境变量,默认禁用 get_file_contents "-e", "ALLOWED_READ_PROJECTS=your-org/public-repo,your-org/docs-repo", // 传递允许读取项目环境变量,请根据需要配置 "gitlab-zero-leak-mcp" // Docker 镜像名称,与 docker build 命令中指定的名称一致 ] } } }
NPX 部署配置:
如果您选择使用 'npx' 运行服务器 (需要 Node.js 环境),可以使用以下配置:
{ "mcpServers": { "gitlab-zero-leak": { // 服务器名称,可以自定义 "command": "npx", // 启动命令,使用 npx "args": [ // 启动参数 "-y", // 自动确认安装 "gitlab-zero-leak-mcp" // 使用 npx 运行 gitlab-zero-leak-mcp ], "env": { // 环境变量配置 "GITLAB_PERSONAL_ACCESS_TOKEN": "<YOUR_TOKEN>", // 传递 GitLab Token 环境变量,请替换 <YOUR_TOKEN> 为您的 Token "GITLAB_API_URL": "https://gitlab.com/api/v4", // 传递 GitLab API URL 环境变量,如果使用自托管 GitLab,请修改为您的实例地址 "DISABLED_HANDLERS": "get_file_contents", // 传递禁用 handlers 环境变量,默认禁用 get_file_contents "ALLOWED_READ_PROJECTS": "your-org/public-repo,your-org/docs-repo" // 传递允许读取项目环境变量,请根据需要配置 } } } }
配置说明:
- 'mcpServers': MCP 客户端服务器配置的根节点。
- 'gitlab-zero-leak': 您为该 MCP 服务器定义的名称,在客户端中引用时使用。
- 'command': 启动服务器的命令,例如 'docker' 或 'npx'。
- 'args': 传递给启动命令的参数,例如 Docker 镜像名称、环境变量等。
- 'env': (仅 NPX 配置) 以键值对形式定义的环境变量。
请将以上 JSON 配置添加到您的 MCP 客户端配置文件中 (例如 Claude Desktop 的 'claude_desktop_config.json'),并根据您的实际情况修改 '<YOUR_TOKEN>' 和其他环境变量的值。
基本使用方法
配置完成后,您的 LLM 客户端 (如 Claude Desktop) 即可通过 MCP 协议与 GitLab Zero-Leak MCP Server 通信,并调用预定义的工具来执行 GitLab 操作。具体的使用方法取决于您的 LLM 客户端的功能和界面。通常,您可以在 LLM 的配置或设置中找到 MCP 服务器的配置选项,并根据客户端的提示进行操作。
例如,在 Claude Desktop 中,您可以在 "Preferences" -> "MCP Servers" 中添加和配置 GitLab Zero-Leak MCP Server。配置完成后,您可以在与 Claude 的对话中使用工具,例如让 Claude 创建 Issue、搜索仓库或更新文件等。
示例工具:
- 'search_repositories': 搜索 GitLab 仓库,例如:'搜索关于 "自然语言处理" 的仓库'
- 'create_issue': 在指定 GitLab 项目中创建 Issue,例如:'在项目 "your-group/your-project" 中创建一个标题为 "修复 Bug" 的 Issue'
- 'create_or_update_file': 在指定 GitLab 项目中创建或更新文件,例如:'在项目 "your-group/your-project" 的 "main" 分支的 "README.md" 文件中添加 "欢迎使用!"'
请参考仓库的 README.md 文件和源代码,了解更多工具的详细信息和使用方法。
信息
分类
开发者工具