GitLab MCP Server 🦊
GitLab MCP Server 是一个基于 Model Context Protocol (MCP) 的服务器,提供与 GitLab API 的无缝集成,为开发者和 AI 工具在 GitLab 生态系统中实现高级自动化和交互功能。
使用场景 ✨
- 自动化 GitLab 工作流和流程(例如,管理问题、合并请求)。
- 从 GitLab 项目和群组中提取和分析数据。
- 构建与 GitLab 交互的 AI 驱动工具和应用程序。
先决条件 ⚙️
- Docker: 为了在容器中轻松运行服务器,需要安装并运行 Docker。(或者,您可以从源代码构建——见下文)。
- GitLab 访问令牌: 您需要一个 GitLab 访问令牌来与 API 进行身份验证。您可以创建:
所需的 权限范围 取决于您计划使用的工具(例如,
api
范围授予广泛访问权限,或选择更细粒度的范围,如 read_repository
、write_repository
、read_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
键)以共享设置。在 Claude Desktop 中使用
(示例结构,根据需要适配 Claude Desktop 配置)
从源代码构建
如果您不想使用 Docker,可以直接构建二进制文件:
- 克隆仓库。
- 导航到仓库根目录。
- 构建服务器:
go build -o gitlab-mcp-server ./cmd/gitlab-mcp-server
- 配置您的 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 ) | ㅤ |
指定工具集
传递所需工具集的允许列表(逗号分隔):
- 使用命令行参数(直接运行二进制文件时):
- 使用环境变量:
(环境变量
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 许可证 下发布。
- Author:waytomcp
- URL:https://www.waytomcp.com/article/LuisCusihuaman/gitlab-mcp-server
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!