关于 mcp-gitlab-server
mcp-gitlab-server 是基于 python-gitlab 的 GitLab MCP 服务,目前仍处于开发阶段。它提供项目与仓库访问、代码读取、合并请求列表及周期分析,并支持令牌认证和自托管 GitLab 实例。
主要功能
- 01浏览项目与群组
- 02搜索仓库并查看详情
- 03筛选读取仓库代码和文件
- 04列出并筛选合并请求
- 05分析合并请求周期
- 06支持个人访问令牌或 OAuth2
适用场景
- 01检查项目和群组仓库
- 02读取指定分支或提交中的文件与目录
- 03按状态或日期查看合并请求
- 04衡量合并请求处理时长
MCP 相关
该 MCP 服务将 GitLab 项目、仓库、代码读取和合并请求操作作为工具提供。支持 GitLab.com,以及通过 GITLAB_URL 配置的自托管实例。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
mcp-gitlab-server
⚠️ 开发阶段提示
此项目目前处于开发阶段。功能和 API 可能会在不另行通知的情况下变更。在生产环境中使用时请谨慎。
基于 python-gitlab 的 GitLab MCP 服务。
安装
使用个人访问令牌(最常见)
{
"mcpServers": {
"GitLab": {
"command": "uvx",
"args": [
"gitlab-mcp-server"
],
"env": {
"GITLAB_TOKEN": "<your GitLab personal access token>",
"GITLAB_URL": "https://gitlab.com"
}
}
}
}
使用 OAuth2 令牌
{
"mcpServers": {
"GitLab": {
"command": "uvx",
"args": [
"gitlab-mcp-server"
],
"env": {
"GITLAB_OAUTH_TOKEN": "<your GitLab OAuth2 token>",
"GITLAB_URL": "https://gitlab.com"
}
}
}
}
对于自托管的 GitLab 实例,请将 GITLAB_URL 设置为你的 GitLab 实例 URL(例如,https://gitlab.example.com)。如果未设置,默认值为 https://gitlab.com。
身份验证
此 MCP 服务支持两种身份验证方式:
方式 1:个人访问令牌(推荐大多数用户使用)
-
创建 GitLab 个人访问令牌:
- 前往 GitLab → 用户设置 → 访问令牌
- 创建一个具有
read_api范围的令牌(最低要求)
-
将
GITLAB_TOKEN环境变量设置为你的令牌值
方式 2:OAuth2 令牌(适用于 OAuth2 应用)
- 如果你通过 GitLab OAuth2 应用流程获得了 OAuth2 令牌
- 将
GITLAB_OAUTH_TOKEN环境变量设置为你的 OAuth2 令牌值
创建 OAuth2 应用:
- 前往 GitLab → 用户设置 → 应用程序
- 创建一个具有适当范围的新应用程序(最低要求为
read_api) - 使用 OAuth2 流程获取访问令牌
- 将该令牌用作
GITLAB_OAUTH_TOKEN
环境变量
GITLAB_TOKEN- 你的 GitLab 个人访问令牌(使用个人令牌身份验证时)GITLAB_OAUTH_TOKEN- 你的 GitLab OAuth2 令牌(使用 OAuth2 身份验证时)GITLAB_URL- GitLab 实例 URL(默认为https://gitlab.com)
注意: 服务会先检查 GITLAB_OAUTH_TOKEN;如果未找到,则使用 GITLAB_TOKEN。只需设置其中一个即可。
工具
仓库与项目管理
- list_projects - 列出经过身份验证的用户可访问的 GitLab 项目(支持按所属项目或已加星标项目筛选,并支持分页)
- list_groups - 列出经过身份验证的用户可访问的 GitLab 群组
- list_group_projects - 列出指定 GitLab 群组中的所有项目
- get_user_info - 获取经过身份验证的用户信息
- search_repositories - 按名称、描述或关键词搜索 GitLab 仓库
- get_repository_details - 获取指定仓库的详细信息
代码访问
- read_repository_code - 通过筛选选项读取仓库的完整代码结构和内容
- read_repository_file - 读取仓库中特定文件的内容
合并请求分析
- list_merge_requests - 列出仓库的合并请求,支持按状态筛选、排序和分页
- get_merge_request_analytics - 计算全面的合并请求生命周期统计数据,包括从创建到合并的平均耗时
仓库代码读取功能
此 MCP 服务提供强大的代码读取功能:
read_repository_code
通过高级筛选功能读取整个仓库的结构和文件内容:
- 选择性读取:使用 glob 模式包含或排除文件(例如,
*.py,*.js,或排除*.log,node_modules/*) - 大小限制:控制要读取的最大文件数和文件大小限制,避免响应过大
- 分支/标签支持:从任意分支、标签或提交 SHA 读取
- 目录筛选:专注于仓库中的特定目录
- 智能筛选:自动排除常见的构建产物、日志和二进制文件
使用示例:
- 仅读取 Python 文件:
include_patterns: "*.py" - 排除测试文件:
exclude_patterns: "*test*,*spec*" - 读取指定目录:
path: "src/" - 使用其他分支:
ref: "develop"
read_repository_file
读取仓库中的单个文件:
- 单文件访问:快速获取特定文件的内容
- 包含元数据:文件大小、编码、最后一次提交信息
- 二进制文件检测:安全处理二进制文件
- 灵活引用:支持分支、标签或提交 SHA
限制与安全性:
- 默认:最多 50 个文件,每个文件 100KB
- 可配置限制以避免超时
- 自动检测二进制文件
- 妥善处理大型仓库中的错误
合并请求分析功能
MCP 服务提供全面的合并请求分析功能:
list_merge_requests
使用高级筛选和排序功能列出合并请求:
- 状态筛选:按状态筛选(
opened、closed、merged、all) - 灵活排序:按创建日期、更新日期或标题排序
- 丰富的元数据:包含作者、指派人员、审阅者、标签和投票信息
- 支持分页:控制返回结果的数量
get_merge_request_analytics
计算详细的合并请求生命周期统计数据:
- 生命周期分析:从创建到合并的平均、中位、最短和最长耗时
- 统计分布:第 25、75 和 90 百分位分析
- 时间范围控制:分析过去 N 天的 MR(默认:90 天)
- 详细分类:包含各个 MR 的详细信息及精确的生命周期计算
- 多种时间单位:结果同时以小时和天为单位提供
可回答的问题示例:
- “acapulco 仓库中 MR 的平均生命周期是多少?”
- “合并请求通常需要多长时间才能合并?”
- “合并请求的生命周期分布情况如何?”
- “哪些合并请求花费了最长时间才合并?”
分析输出:
- 平均、中位、最短、最长合并耗时
- 百分位分析(第 25、75、90 百分位)
- 带有各自生命周期的示例合并请求
- 可供进一步分析的完整数据集
开发
# Clone the repository
git clone <repo-url>
cd gitlab-mcp-server
# Install dependencies
uv sync
# Run in development mode
uv run python -m mcp_gitlab_server
测试配置
出于开发和测试目的,你可以使用本地 wheel 文件进行安装:
用于测试的 MCP 配置:
{
"mcpServers": {
"GitLab": {
"command": "uvx",
"args": [
"--from", "/path/to/your/gitlab-mcp-server/dist/mcp_gitlab_server-0.1.0-py3-none-any.whl",
"gitlab-mcp-server"
],
"env": {
"GITLAB_TOKEN": "your-gitlab-token-here",
"GITLAB_URL": "https://gitlab.com"
}
}
}
}
构建和测试步骤:
# Build the wheel file
uv build
# Test with MCP client (like Claude Desktop)
# Update your MCP configuration with the local wheel path
# The wheel file will be in ./dist/ directory
# For quick testing, verify the server starts:
uv run python -m mcp_gitlab_server
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。