首页/版本控制/gitlab-mcp

gitlab-mcp

查看源码
2025-5-11
Words 1641Read Time 5 min
Score:85

用于与GitLab API交互的MCP服务器,支持AI客户端操作GitLab资源。

GitLab MCP 服务器

一个用于与 GitLab API 交互的 MCP(Model Context Protocol)服务器。该服务器提供了一套工具,允许 AI 客户端在 GitLab 仓库、问题、合并请求等资源上执行操作。所有操作均支持同步和异步执行模式。

安装

使用 uv(推荐)

使用 pip

配置

GitLab MCP 服务器需要两个环境变量才能正常运行:
  1. GITLAB_PERSONAL_ACCESS_TOKEN - 用于 GitLab API 的身份验证
  1. 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 文件。
上一篇
rust-mcp-filesystem
下一篇
trade_mcp