使用说明
mcp gitlab服务器
⚠️ 开发阶段通知
该项目目前正在进行中 发展阶段。功能和API可能会更改,恕不另行通知。在生产环境中小心使用。
基于GitLab MCP服务器 python gitlab.
安装
使用个人访问令牌(最常见)
{
"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_项目 -列出经过身份验证的用户可以访问的GitLab项目(支持按拥有/星号和分页进行过滤)
- list_groups -列出经过身份验证的用户可访问的GitLab组
- list_group_projects -列出特定GitLab组中的所有项目
- get_user_info -获取已验证用户的信息
- search_repositories -按名称、描述或关键字搜索GitLab存储库
- get_pository_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
