GitLab MCP 服务器
一个用于与 GitLab API 交互的 MCP(Model Context Protocol)服务器。该服务器提供了一套工具,允许 AI 客户端在 GitLab 仓库、问题、合并请求等资源上执行操作。所有操作均支持同步和异步执行模式。
安装
使用 uv(推荐)
使用 pip
配置
GitLab MCP 服务器需要两个环境变量才能正常运行:
GITLAB_PERSONAL_ACCESS_TOKEN
- 用于 GitLab API 的身份验证
GITLAB_API_URL
- GitLab API 的基础 URL
选项 1:环境变量
在项目根目录下创建一个
.env
文件,并添加以下变量:选项 2:MCP 配置
你也可以在 MCP JSON 配置文件中配置 MCP 服务器:
为 Claude Desktop 配置 uv
项目结构
项目采用模块化、领域驱动的架构:
这种架构提供了以下优势:
- 关注点分离:每个模块都有明确的职责
- 类型安全:Pydantic 模型确保数据验证
- 可维护性:领域驱动的组织使代码更易于导航
- 可扩展性:可以通过遵循现有模式添加新功能
- 异步支持:所有操作均提供同步和异步版本
可用工具
服务器提供了以下工具用于与 GitLab 交互:
仓库管理
create_repository
:创建一个新的 GitLab 仓库
list_repository_tree
:列出仓库树的内容
分支操作
create_branch
:在 GitLab 仓库中创建一个新分支
list_branches
:列出 GitLab 仓库中的分支
get_branch
:获取特定 GitLab 分支的详细信息
delete_branch
:从 GitLab 仓库中删除一个分支
delete_merged_branches
:删除 GitLab 仓库中所有已合并的分支
protect_branch
:保护 GitLab 仓库中的分支
unprotect_branch
:移除 GitLab 仓库中分支的保护
get_default_branch_ref
:获取 GitLab 仓库的默认分支引用
文件操作
create_file
:在 GitLab 仓库中创建一个新文件
get_file_contents
:从 GitLab 仓库中检索文件内容
get_raw_file_contents
:从 GitLab 仓库中检索文件的原始内容
update_file
:更新 GitLab 仓库中的现有文件
delete_file
:从 GitLab 仓库中删除一个文件
get_file_blame
:检索 GitLab 仓库中文件的 blame 信息
问题管理
create_issue
:在 GitLab 仓库中创建一个新问题
update_issue
:更新 GitLab 仓库中的现有问题
list_issues
:列出 GitLab 项目中的问题
list_all_issues
:列出认证用户有权访问的所有问题
list_group_issues
:列出 GitLab 群组中的问题
get_issue
:获取特定 GitLab 问题的详细信息
close_issue
:关闭一个 GitLab 问题
delete_issue
:从 GitLab 仓库中删除一个问题
move_issue
:将问题移动到不同的项目
comment_on_issue
:在 GitLab 问题上添加评论
list_issue_comments
:列出 GitLab 问题的评论
create_issue_link
:创建问题之间的链接
list_issue_links
:列出与问题相关的链接
get_issue_link
:获取问题链接的详细信息
delete_issue_link
:删除问题之间的链接
合并请求操作
create_merge_request
:在 GitLab 仓库中创建一个新的合并请求
list_merge_requests
:列出 GitLab 项目中的合并请求
get_merge_request
:获取特定 GitLab 合并请求的详细信息
merge_merge_request
:合并一个 GitLab 合并请求
流水线管理
list_project_pipelines
:列出 GitLab 项目中的流水线
get_single_pipeline
:通过 ID 获取 GitLab 项目中的单个流水线
get_latest_pipeline
:获取特定 ref 上最新提交的最新流水线
任务操作
get_job
:从 GitLab 项目中获取特定任务
get_job_logs
:获取 GitLab 任务的日志
get_job_failure_info
:获取 GitLab 任务失败的详细信息,包括日志中的错误信息
群组操作
list_groups
:列出 GitLab 群组
get_group
:获取特定的 GitLab 群组
get_group_by_project_namespace
:基于项目命名空间获取 GitLab 群组
搜索工具
search_global
:跨所有 GitLab 资源进行搜索(项目、问题、合并请求、里程碑、用户等)
search_project
:在特定项目内搜索(问题、合并请求、代码内容、Wiki 内容等)
search_group
:在特定群组内搜索(项目、问题、合并请求、里程碑等)
故障排除
常见问题
- GitLab API 认证错误:确保你的
GITLAB_PERSONAL_ACCESS_TOKEN
具有必要的权限,并在环境变量中正确设置。
- NoneType 错误:某些函数在处理空结果时可能会遇到问题。如果遇到这些错误,请提供详细的复现步骤进行报告。
许可证
本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。
- Author:waytomcp
- URL:https://www.waytomcp.com/article/Adit-999/gitlab-mcp
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!