项目简介
'GitLab MCP' 是一个实现了Model Context Protocol (MCP) 的后端服务,旨在将GitLab的功能无缝集成到LLM(大型语言模型)应用中。通过提供一系列标准化的“工具”,LLM客户端可以请求和执行GitLab操作,例如管理议题、合并请求、标签以及项目描述和话题。它通过JSON-RPC协议与LLM客户端通信,尤其兼容Claude Code。
主要功能点
- 议题管理: 列出、创建和更新GitLab项目的议题,支持添加标题、描述、标签和指派人。
- 标签管理: 列出项目所有标签,支持按名称过滤并显示相关计数。
- 评论与通知: 为现有议题添加评论或说明。
- 合并请求管理: 创建新的合并请求,可配置源/目标分支、标题、描述、指派人、评审人、标签和里程碑。
- 项目信息管理: 获取和更新项目描述及话题(标签)。
- 路径访问: 直接通过项目路径(例如 'namespace/project-name')进行操作,无需项目ID。
- 标签验证: 创建议题时可选择验证标签是否存在,避免无效操作。
安装步骤
方法一:使用Homebrew (macOS/Linux推荐)
# 添加tap源并安装 brew tap sgaunet/homebrew-tools brew install sgaunet/tools/gitlab-mcp
方法二:从GitHub Releases下载
访问 最新发布页面,下载适用于您操作系统的预编译二进制文件,并将其放置到系统PATH中(例如 '/usr/local/bin/gitlab-mcp'),确保其可执行。
方法三:从源代码构建
- 克隆仓库:
git clone https://github.com/sgaunet/gitlab-mcp.git cd gitlab-mcp - 构建项目:
task build # 如果您安装了Task工具 # 或者手动构建 go build -o gitlab-mcp - 安装到PATH:
sudo mv gitlab-mcp /usr/local/bin/ # 将二进制文件移动到PATH中
服务器配置
MCP服务器需要通过环境变量配置GitLab访问凭据。请确保在启动MCP服务器进程的环境中设置以下变量:
- 'GITLAB_TOKEN': 必填,您的GitLab个人访问令牌,需要 'api', 'read_api', 'write_api' 等适当的权限。
- 'GITLAB_URI': 可选,您的自托管GitLab实例URI,默认为 'https://gitlab.com'。
- 'GITLAB_VALIDATE_LABELS': 可选,是否在创建议题时验证标签是否存在(默认为 'true')。设置为 'false' 可禁用验证。
这些环境变量通常需要添加到您的shell配置文件(如 '~/.bashrc' 或 '~/.zshrc')中,以确保当Claude Code启动MCP服务器时它们可用。
在MCP客户端中配置此MCP服务器的示例(JSON格式): (请注意,MCP客户端只需要提供服务器的启动命令和参数,无需了解Go代码或详细的内部实现。)
{ "server_name": "gitlab-mcp", "command": "/usr/local/bin/gitlab-mcp", // 替换为gitlab-mcp可执行文件的实际路径,请根据您的安装位置调整 "args": [], // 此服务器不接受额外的命令行参数,主要通过环境变量进行配置 "description": "提供GitLab项目管理功能的MCP服务器,可用于列出、创建和更新GitLab议题、合并请求、标签和项目描述。", "tools": [ "list_issues", "create_issues", "update_issues", "list_labels", "add_issue_note", "create_merge_request", "get_project_description", "update_project_description", "get_project_topics", "update_project_topics" ] }
基本使用方法
安装并配置好环境变量后,使用MCP客户端(如Claude Code CLI)添加此服务器。例如,如果 'gitlab-mcp' 可执行文件在 '/usr/local/bin/':
claude mcp add gitlab-mcp -s user -- /usr/local/bin/gitlab-mcp
一旦添加到Claude Code,您就可以通过自然语言提示来调用GitLab工具。例如:
- “列出'my-org/my-project'项目中所有已打开的议题。”
- “在'my-org/my-project'中创建一个名为‘修复登录bug’的新议题,描述为‘用户无法登录’。”
- “关闭'my-org/my-project'项目中的议题'#123'。”
- “为'my-org/my-project'项目从'feature-branch'分支创建到'main'分支的合并请求,标题为‘实现新功能A’。”
信息
分类
开发者工具