使用说明
GitLab MCP
GitLab的一个全面的基于Go的MCP(模型上下文协议)连接器,使Claude等AI助手能够与GitLab存储库、项目和工作流无缝交互。该工具为AI模型提供了一个强大的界面,通过自然语言执行全面的GitLab操作。
为什么
虽然GitLab提供各种API集成,但我们的MCP实现提供 卓越的AI原生交互和全面的工作流管理我们构建了这个连接器,以解决开发人员和项目经理在通过人工智能助手与GitLab合作时面临的真正挑战。
主要优势:
- 全面的GitLab集成:完全访问项目、合并请求、管道、提交、CI/CD作业和用户管理
- AI优化界面:专为与人工智能助手的自然语言交互而设计
- 现实世界工作流焦点:旨在解决实际的日常问题,如代码审查、CI/CD监控和项目管理
- 提高生产率:无缝集成,允许AI在不切换上下文的情况下帮助GitLab操作
- 开发者友好:为实际开发工作流程设计的工具,而不仅仅是基本的API调用
🚀 功能概述
📁 项目和存储库管理
- 列出并探索项目 具有详细的信息和访问级别
- 获取文件内容 来自任何支持分支/提交的存储库
- 浏览存储库结构 并浏览代码库
- 访问项目元数据 包括统计和配置
🔀 合并请求操作
- 列出合并请求 按状态、作者和目标分支进行过滤
- 获取详细的MR信息 包括变更、讨论和批准
- 创建新的合并请求 带有自定义标题和描述
- 对合并请求的评论 并管理讨论
- 监视合并请求状态 并审查进展情况
- 获取MR管道和提交 进行全面审查
- 重新设置合并请求的基础 需要时
🔄 管道和CI/CD管理
- 列出并分析管道 带有状态和持续时间信息
- 获取详细的管道信息 包括作业和工件
- 触发新管道 使用自定义变量
- 监控管道执行 以及作业详细信息
- 跟踪CI/CD性能 跨项目
💼 作业管理
- 列出项目和管道作业 具有过滤功能
- 获取详细的工作信息 包括日志和工件
- 取消正在运行的作业 需要时
- 重试失败的作业 为了快速恢复
- 监控作业状态 跨管道
📝 提交和历史跟踪
- 搜索并列出提交 具有作者、日期和邮件筛选功能
- 获取详细的提交信息 包括变化和统计数据
- 按作者和文件路径搜索提交 用于目标分析
- 对提交的评论 用于代码审查
- 樱桃选择和恢复提交 用于分行管理
- 跟踪存储库历史记录 以及发展进展
🌊 Git流工作流支持
- 创建发布分支 遵循Git Flow约定
- 创建要素分支 具有适当的命名
- 创建修补程序分支 紧急修复
- 完成发布 通过创建合并请求来开发和掌握
- 完成功能 通过创建合并请求来开发
- 完成修补程序 通过向两个分支创建合并请求
- 列出Git流分支 按类型(功能、版本、修补程序)
👥 用户和组管理
- 查看用户贡献事件 和活动流
- 列出组成员 以及他们的角色
- 列出可访问的组 具有过滤选项
- 跟踪用户贡献 跨项目
- 监控团队活动 以及合作
🔐 变量和安全管理
- 列出组变量 有安全信息
- 创建和更新组变量 适当界定范围
- 管理可变安全 (保护、遮蔽、未经处理)
- 删除变量 当不再需要时
- 处理特定于环境的变量
🚀 部署和令牌管理
- 列出部署令牌 针对项目和团体
- 创建部署令牌 具有特定范围
- 管理令牌权限 以及到期
- 删除令牌 当不再需要时
- 处理项目和组级别的令牌
🔍 高级搜索功能
- 全局搜索 跨所有GitLab内容
- 组特定搜索 组织内部
- 项目特定搜索 取得有针对性的结果
- 按范围搜索 (项目、合并请求、提交、用户、代码)
- 专业搜索工具 对于问题、合并请求、提交和代码
🚀 快速入门指南
先决条件
在开始之前,您需要:
- GitLab账号 可以访问您的GitLab实例(GitLab.com或自托管)
- 个人访问令牌 来自GitLab(我们会帮你得到这个)
- Cursor IDE 与Claude整合
第一步:获取您的GitLab个人访问令牌
- 转到您的GitLab实例→ 用户设置 → 访问令牌
- 点击 “添加新令牌”
- 给它起个名字,比如“GitLab MCP连接器”
- 选择范围:
api,read_user,read_repository,write_repository - 设置到期日期(可选)
- 点击 “创建个人访问令牌”
- 复制令牌 (你不会再看到它了!)
步骤2:选择安装方法
我们建议 码头工人 最简单的设置:
🐳 选项A:Docker(推荐)
# Pull the latest image
docker pull ghcr.io/nguyenvanduocit/gitlab-mcp:latest
# Test it works (replace with your details)
docker run --rm \
-e GITLAB_URL=https://gitlab.com \
-e GITLAB_TOKEN=your-personal-access-token \
ghcr.io/nguyenvanduocit/gitlab-mcp:latest
📦 选项B:下载二进制文件
- 首选 GitHub 发布
- 为您的平台下载:
- macOS:
gitlab-mcp_darwin_amd64 - Linux:
gitlab-mcp_linux_amd64 - 视窗:
gitlab-mcp_windows_amd64.exe
- macOS:
- 使其可执行(macOS/Linux):
chmod +x gitlab-mcp_* sudo mv gitlab-mcp_* /usr/local/bin/gitlab-mcp
🛠️ 选项C:从源代码构建
go install github.com/nguyenvanduocit/gitlab-mcp@latest
步骤3:配置游标
- 打开的游标
- 转到“设置” → 特性 → 模型上下文协议
- 添加新的MCP服务器 采用此配置:
对于Docker用户:
{
"mcpServers": {
"gitlab": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"-e", "GITLAB_URL=https://gitlab.com",
"-e", "GITLAB_TOKEN=your-personal-access-token",
"ghcr.io/nguyenvanduocit/gitlab-mcp:latest"
]
}
}
}
对于二进制用户:
{
"mcpServers": {
"gitlab": {
"command": "/usr/local/bin/gitlab-mcp",
"env": {
"GITLAB_URL": "https://gitlab.com",
"GITLAB_TOKEN": "your-personal-access-token"
}
}
}
}
对于自托管GitLab:
替换 https://gitlab.com 使用您的GitLab实例URL(例如。, https://gitlab.yourcompany.com)
步骤4:测试您的设置
- 重新启动游标 完全
- 打开新聊天 与克劳德
- 尝试以下测试命令:
List my GitLab groups
Show me recent merge requests in my projects
What's the status of the latest pipeline?
如果你看到GitLab的数据, 祝贺 🎉 你们都准备好了。
🔧 高级配置
使用环境文件
创建一个 .env 文件以便于管理:
# .env file
GITLAB_URL=https://gitlab.com
GITLAB_TOKEN=your-personal-access-token
然后使用它:
# With binary
gitlab-mcp -env .env
# With Docker
docker run --rm -i --env-file .env ghcr.io/nguyenvanduocit/gitlab-mcp:latest
HTTP开发模式
对于开发和测试,您可以在HTTP模式下运行:
# Start HTTP server on port 3000
gitlab-mcp -env .env -http_port 3000
然后配置Cursor:
{
"mcpServers": {
"gitlab": {
"url": "http://localhost:3000/mcp"
}
}
}
🎯 用法示例
配置后,您可以让Claude使用自然语言帮助完成GitLab任务:
项目和存储库管理
- “显示我的所有GitLab组”
- 在“我的团队”组中列出项目
- “从项目X的主分支获取README文件”
- “Z项目最近有什么变化?”
合并请求操作
- “显示ABC项目中所有打开的合并请求”
- “从功能分支创建合并请求以进行开发”
- “ABC项目中123号MR的状态如何?”
- “在合并请求#456中添加一条注释,说明'LGTM'”
- “显示MR#789的管道状态”
管道和CI/CD管理
- “项目X中最新管道的状态如何?”
- “在开发分支上触发新的管道”
- “显示上周失败的管道”
- “列出项目Y中所有正在运行的作业”
- “取消项目Z中的作业#123”
Git流工作流
- “为1.2.0版本创建发布分支”
- “创建一个名为用户身份验证的功能分支”
- “完成1.2.0版本并创建合并请求”
- “列出项目中的所有功能分支”
搜索与发现
- “在所有项目中搜索包含‘bug修复’的提交”
- “在组X中查找与身份验证相关的合并请求”
- “在项目Y中搜索包含“API_KEY”的代码”
- “显示组Z中的所有用户”
变量和安全管理
- “列出组‘生产’中的所有变量”
- “在组X中创建新变量DATABASE_URL”
- “显示项目Y的部署令牌”
发展见解
- “显示作者约翰最近的作品”
- “今天对主要分支机构做出了哪些承诺?”
- “列出消息中带有'fix'的所有提交”
- “显示开发团队的用户活动”
🛠️ 可用工具参考
项目工具
list_projects-列出组中的项目get_project-获取详细的项目信息
合并请求工具
list_mrs-使用筛选功能列出合并请求get_mr_details-获取详细的MR信息create_mr-创建新的合并请求create_mr_note-添加评论以合并请求list_mr_comments-列出所有MR评论get_mr_pipelines-获取MR管道信息get_mr_commits-获取MR提交历史记录create_mr_pipeline-触发新的MR管道rebase_mr-重新设置合并请求的基础
存储库工具
get_file_content-从存储库获取文件内容list_commits-带有日期过滤的列表提交get_commit_details-获取详细的提交信息search_commits-按作者/路径/日期搜索提交get_commit_comments-获取提交评论post_commit_comment-在提交中添加注释get_commit_merge_requests-获取与提交相关的MRcherry_pick_commit-樱桃采摘承诺其他分支revert_commit-恢复提交
管道工具
list_pipelines-列出项目管道get_pipeline-获取详细的管道信息trigger_pipeline-使用变量触发新管道
作业工具
list_project_jobs-列出所有项目作业list_pipeline_jobs-列出特定管道的作业get_job-获取详细的工作信息cancel_job-取消正在运行的作业retry_job-重试失败的作业
Git流工具
gitflow_create_release-创建发布分支gitflow_finish_release-使用MR完成发布gitflow_create_feature-创建要素分支gitflow_finish_feature-使用MR完成功能gitflow_create_hotfix-创建修补程序分支gitflow_finish_hotfix-使用MR完成修补程序gitflow_list_branches-列出Git流分支
用户和组工具
list_user_contribution_events-列出用户活动list_group_users-列出组成员list_groups-列出可访问的组
可变工具
list_group_variables-列出组变量get_group_variable-获取特定变量的详细信息create_group_variable-创建新变量update_group_variable-更新现有变量remove_group_variable-删除变量
部署工具
list_all_deploy_tokens-列出所有部署令牌(管理员)list_project_deploy_tokens-列出项目部署令牌get_project_deploy_token-获取项目令牌详细信息create_project_deploy_token-创建项目令牌delete_project_deploy_token-删除项目令牌list_group_deploy_tokens-列出组部署令牌get_group_deploy_token-获取组令牌详细信息create_group_deploy_token-创建组令牌delete_group_deploy_token-删除组令牌
搜索工具
search_global-搜索所有GitLabsearch_group-在特定组内搜索search_project-在特定项目中搜索search_issues_global-全球问题搜索search_merge_requests_global-全球MR搜索search_commits_global-全局提交搜索search_code_global-全球代码搜索
🛠️ 故障排除
常见问题
❌ “连接失败”或“身份验证错误”
- 仔细检查你的
GITLAB_URL(应包含https://) - 验证您的个人访问令牌是否正确且未过期
- 确保您的令牌具有所需的作用域(
api,read_user,read_repository,write_repository)
❌ “未找到MCP服务器”
- 添加配置后完全重新启动Cursor
- 检查游标设置中的MCP配置语法
- 验证二进制路径是否正确(对于二进制安装)
❌ “权限被拒绝”错误
- 确保您的GitLab帐户可以访问您尝试访问的项目
- 检查您的个人访问令牌是否具有必要的权限
- 验证您使用的是正确的GitLab实例URL
❌ “超出费率限制”
- GitLab有API速率限制;请稍候,然后重试
- 考虑使用更具体的查询来减少API调用
❌ “缺少必需的环境变量”
- 确保两者
GITLAB_URL和GITLAB_TOKEN已设置 - 检查是否从.env文件中正确加载了环境变量
获取帮助
- 检查日志:跑步
-http_port查看详细的错误消息 - 测试您的凭据:尝试步骤2中的Docker测试命令
- 验证游标配置:应用程序将向您显示要使用的确切配置
- 检查GitLab权限:确保您的令牌可以访问所需的资源
📚 发展
为了地方发展和贡献:
# Clone the repository
git clone https://github.com/nguyenvanduocit/gitlab-mcp.git
cd gitlab-mcp
# Create .env file with your credentials
cp .env.example .env
# Edit .env with your details
# Run in development mode
just dev
# or
go run main.go -env .env
# Build the project
just build
# Install locally
just install
# Test with MCP inspector (if running in HTTP mode)
npx @modelcontextprotocol/inspector http://localhost:3000/mcp
项目结构
gitlab-mcp/
├── bin/ # Compiled binaries
├── tools/ # Tool implementations
│ ├── projects.go # Project management tools
│ ├── merge_requests.go # MR management tools
│ ├── repositories.go # Repository and commit tools
│ ├── pipelines.go # Pipeline management tools
│ ├── job.go # CI/CD job tools
│ ├── flow.go # Git Flow workflow tools
│ ├── users.go # User management tools
│ ├── groups.go # Group management tools
│ ├── variable.go # Variable management tools
│ ├── deploy.go # Deployment token tools
│ └── search.go # Search functionality tools
├── util/ # Utility functions
├── main.go # Application entry point
├── go.mod # Go module definition
├── justfile # Build automation
└── README.md # This file
CLI使用情况
除了MCP服务器之外, gitlab-mcp 提供独立的CLI二进制文件(gitlab-cli)用于直接终端使用——不需要MCP客户端。
安装
just install-cli
# or
go install github.com/nguyenvanduocit/gitlab-mcp/cmd/gitlab-cli@latest
快速开始
export GITLAB_URL=https://gitlab.com
export GITLAB_TOKEN=your-access-token
# or
gitlab-cli --env .env <command> [flags]
命令
| 命令 | 描述 |
|---|---|
list-projects |
列出GitLab项目 |
list-mrs |
列出合并请求 |
list-pipelines |
列出管道 |
list-branches |
列出分支 |
list-jobs |
列出CI/CD作业 |
list-users |
列出组成员 |
list-groups |
列出组 |
manage-variable |
管理CI/CD变量 |
trigger-pipeline |
触发管道 |
search |
在GitLab上搜索 |
示例
# List projects
gitlab-cli list-projects --search my-repo
# List open MRs
gitlab-cli list-mrs --project-id 123 --state opened
# Trigger pipeline
gitlab-cli trigger-pipeline --project-id 123 --ref main
# JSON output
gitlab-cli list-projects --output json | jq '.[].path_with_namespace'
旗帜
每个命令都接受:
--env string--通往.env文件--output string--输出格式:text(默认)或json
🤝 贡献
我们欢迎捐款!以下是如何开始:
- 分叉存储库
- 创建功能分支 (
git checkout -b feature/amazing-feature) - 提交您的更改 (
git commit -m 'feat: add some amazing feature') - 推到分支 (
git push origin feature/amazing-feature) - 打开拉取请求
贡献指南
- 跟随 常规承诺 用于提交消息
- 为新功能添加测试
- 根据需要更新文档
- 提交前确保所有测试通过
📄 许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
需要帮助? 查看我们的 更改日志.md 获取最新更新或在GitHub上发布问题。
安装
自制(macOS/Linux)
brew install nguyenvanduocit/tap/gitlab-mcp