首页/版本控制/gitlab-mcp-server

gitlab-mcp-server

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

GitLab MCP服务器,提供与GitLab API的无缝集成,支持自动化工作流和AI工具交互。

GitLab MCP Server 🦊

GitLab MCP Server 是一个基于 Model Context Protocol (MCP) 的服务器,提供与 GitLab API 的无缝集成,为开发者和 AI 工具在 GitLab 生态系统中实现高级自动化和交互功能。

使用场景 ✨

  • 自动化 GitLab 工作流和流程(例如,管理问题、合并请求)。
  • 从 GitLab 项目和群组中提取和分析数据。
  • 构建与 GitLab 交互的 AI 驱动工具和应用程序。

先决条件 ⚙️

  1. Docker: 为了在容器中轻松运行服务器,需要安装并运行 Docker(或者,您可以从源代码构建——见下文)。
  1. GitLab 访问令牌: 您需要一个 GitLab 访问令牌来与 API 进行身份验证。您可以创建:
    1. 所需的 权限范围 取决于您计划使用的工具(例如,api 范围授予广泛访问权限,或选择更细粒度的范围,如 read_repositorywrite_repositoryread_api)。仅授予您认为适合 AI 工具的权限。

安装 🚀

在 VS Code 中使用(代理模式)

将以下 JSON 块添加到您的用户设置(JSON)文件中(Preferences: Open User Settings (JSON)Ctrl+Shift+P)。这将配置 VS Code 在激活代理模式时使用 Docker 运行服务器。
(注意:将 "your-docker-registry/gitlab-mcp-server:latest" 替换为实际发布的镜像路径。)
您还可以在您的工作区中的 .vscode/mcp.json 文件中添加类似的配置(不带顶层的 mcp 键)以共享设置。
有关在 VS Code 代理模式下使用 MCP 服务器工具的更多信息,请参阅 代理模式文档

在 Claude Desktop 中使用

(示例结构,根据需要适配 Claude Desktop 配置)

从源代码构建

如果您不想使用 Docker,可以直接构建二进制文件:
  1. 克隆仓库。
  1. 导航到仓库根目录。
  1. 构建服务器:go build -o gitlab-mcp-server ./cmd/gitlab-mcp-server
  1. 配置您的 MCP 客户端(例如,VS Code 用户设置 JSON)以使用构建的可执行文件:

工具配置 🛠️

GitLab MCP Server 支持通过 --toolsets 标志或 GITLAB_TOOLSETS 环境变量启用或禁用特定功能组(工具集)。这允许对暴露给 AI 工具的 GitLab API 功能进行细粒度控制。仅启用必要的工具集可以改进 LLM 工具选择并减少上下文大小。

可用工具集

以下是计划中的工具集(如果未设置 GITLAB_TOOLSETS 或设置为 "all",则默认启用所有工具集):
工具集
描述
projects
项目详情、仓库操作(文件、分支、提交、标签)。
issues
问题管理(增删改查、评论、标签、里程碑)。
merge_requests
合并请求操作(增删改查、评论、批准、差异、状态检查)。
security
访问安全扫描结果(SAST、秘密检测等)。
users
用户信息查找,可能包括当前用户详情。
search
利用 GitLab 的范围搜索功能(项目、问题、合并请求、代码)。
(未来可能支持:ci_cd, groups, epics)

指定工具集

传递所需工具集的允许列表(逗号分隔):
  1. 使用命令行参数(直接运行二进制文件时):
    1. 使用环境变量
      1. (环境变量 GITLAB_TOOLSETS 优先于标志。)

    在 Docker 中使用工具集

    运行容器时通过环境变量传递工具集:

    "all" 工具集

    使用特殊值 all 显式启用所有可用工具集:

    动态工具发现 💡

    (此功能可能会在以后实现,遵循 github-mcp-server 的模式)
    与从固定工具集开始不同,动态工具集发现允许 MCP 主机(如 VS Code 或 Claude)列出可用工具集并根据用户需求选择性启用它们。这可以防止最初向语言模型提供过多工具。

    使用动态工具发现

    如果实现,可以通过以下方式启用:
    • 标志: ./gitlab-mcp-server stdio --dynamic-toolsets
    • 环境变量: export GITLAB_DYNAMIC_TOOLSETS=1
    • Docker: docker run -i --rm -e GITLAB_TOKEN=... -e GITLAB_DYNAMIC_TOOLSETS=1 ...
    启用后,服务器最初仅暴露最少的工具,包括用于动态列出和启用其他工具集的工具。

    GitLab 自托管实例 🏢

    要连接到自托管的 GitLab 实例而不是 gitlab.com,请使用 --gitlab-host 标志或 GITLAB_HOST 环境变量。提供您实例的基本 URL(例如,https://gitlab.example.com)。
    • 标志: ./gitlab-mcp-server stdio --gitlab-host https://gitlab.example.com
    • 环境变量: export GITLAB_HOST="https://gitlab.example.com"
    • Docker: docker run -i --rm -e GITLAB_TOKEN=... -e GITLAB_HOST="https://gitlab.example.com" ...
    如果变量/标志为空或省略,服务器默认为 https://gitlab.com

    国际化 / 覆盖描述 🌍

    工具名称和描述可以自定义或翻译。在与服务器二进制文件相同目录中创建一个 gitlab-mcp-server-config.json 文件(或将其挂载到容器中)。
    该文件应包含一个 JSON 对象,将内部翻译键(对应于工具名称/描述)映射到您所需的字符串。
    示例 gitlab-mcp-server-config.json
    您可以通过运行带有 --export-translations 标志的服务器生成包含所有当前翻译键的模板文件:
    此标志保留现有覆盖,同时添加服务器中引入的任何新键。

    贡献与许可 🤝

    欢迎贡献!详情请参阅 CONTRIBUTING.md。
    本项目在 MIT 许可证 下发布。
    上一篇
    Vulnerable-file-reader-server
    下一篇
    git-mcp-server