使用说明
GitLab MCP 服务器
一个基于模型上下文协议(MCP)构建的全面GitLab自动化服务器,旨在简化项目管理和开发工作流自动化。
概述
GitLab MCP服务器提供了一套强大的工具,用于自动化GitLab操作,能够实现与开发工作流的无缝集成、智能任务分配以及分层项目管理。它支持管理员模式和非管理员模式,并根据用户权限提供不同的功能集。
特点/功能
核心能力
- 问题管理利用智能自动化创建、分配、关闭并重新开启问题
- 用户管理全面的用户操作与基于角色的访问控制
- 项目管理项目全生命周期管理,包括成员管理
安装
先决条件
- Python 3.8 或更高版本
- 具有API访问权限的GitLab实例
- 具有适当权限的GitLab个人访问令牌
设置步骤
-
克隆或下载服务器文件:
# Files needed: # - gitlab-mcp-server.py # - gitlab-mcp-config.json -
安装Python依赖项:
pip install mcp -
配置服务器: 编辑
gitlab-mcp-config.json附上您的 GitLab 实例详细信息:
{
"gitlab_url": "https://your-gitlab-instance.com",
"access_token": "your-gitlab-token",
"default_project_id": 1,
"default_user_id": 1
}
-
设置环境变量(可选):
export DEFAULT_GITLAB_PROJECT_ID=1 export DEFAULT_GITLAB_USER_ID=1 export GITLAB_MCP_ADMIN_MODE=false注:
gitlab_url并且access_token必须在……中进行配置gitlab-mcp-config.json文件,而非环境变量。
MCP配置
要将此GitLab MCP服务器与您的开发环境集成,请在MCP设置文件中添加以下配置(该文件通常位于 ~/.cline/mcp-settings.json 或者在你的集成开发环境(IDE)的MCP配置中:
{
"mcpServers": {
"gitlab": {
"command": "python",
"args": [
"<base-directory>\\gitlab-mcp-server.py"
],
"env": {
"GITLAB_TOKEN": "your-gitlab-token-here",
"GITLAB_URL": "http://localhost",
"DEFAULT_GITLAB_PROJECT_ID": "4",
"DEFAULT_GITLAB_USER_ID": "5",
"GITLAB_MCP_ADMIN_MODE": "false"
},
"autoApprove": [
"list_gitlab_users",
"list_project_issues",
"list_assignee_open_tasks"
],
"disabled": false,
"timeout": 60
}
}
}
额外的MCP服务器
该配置还支持额外的MCP服务器以增强功能:
Git 服务器
"github.com/modelcontextprotocol/servers/tree/main/src/git": {
"command": "python",
"args": ["-m", "mcp_server_git"],
"autoApprove": [],
"disabled": false,
"timeout": 60
}
搜索服务器
"github.com/NightTrek/Serper-search-mcp": {
"command": "node",
"args": ["d:/Projects/mcp/serper-search-server/build/index.js"],
"env": {
"SERPER_API_KEY": "your-serper-api-key",
"OPENROUTER_API_KEY": "your-openrouter-api-key"
},
"autoApprove": [],
"disabled": false,
"timeout": 60
}
配置选项
- 自动批准无需手动审批即可执行的工具名称列表
- 残疾的设置为
true禁用服务器 - 超时请求超时(秒)
- **环境(env 为 environment 的缩写)**传递给服务器进程的环境变量
配置
基本配置(gitlab-mcp-config.json)
| 字段 | 描述 | 必填 |
|---|---|---|
gitlab_url |
您的GitLab实例URL | 是 |
access_token |
GitLab 个人访问令牌 | 是 |
default_project_id |
操作的默认项目 | 否 |
default_user_id |
分配任务的默认用户 | 否 |
访问令牌权限
为了实现全部功能,您的GitLab个人访问令牌应具备:
read_api- 读取API访问权限read_user- 读取用户信息read_repository- 读取仓库数据write_repository- 写入仓库数据api- 完全API访问权限(用于管理员操作)
管理员模式与非管理员模式
管理员模式 (admin_mode: true):
- 完全访问所有工具
- 可以删除问题
- 能够管理所有项目和用户
- 可以执行批量操作
非管理员模式 (admin_mode: false):
- 仅限于与受让人相关的操作
- 只能处理分配给我的问题
- 无法删除问题
- 无法访问用户管理工具
可用工具
问题管理工具
list_open_issues
获取分配给特定用户的未解决问题。
{
"project_id": 4,
"user_id": 5
}
list_closed_issues
获取分配给特定用户的已关闭问题。
{
"project_id": 4,
"user_id": 5
}
close_issue
关闭特定问题,并可选地添加评论。
{
"project_id": 4,
"issue_iid": 123,
"comment": "Issue resolved successfully"
}
reopen_issue
重新打开一个已关闭的问题,并可选择添加评论。
{
"project_id": 4,
"issue_iid": 123,
"comment": "Reopening for additional work"
}
create_bug
创建一个新的错误报告,并以“BUG: ”作为前缀。
{
"project_id": 4,
"title": "Login button not working",
"description": "Users cannot log in when clicking the login button",
"labels": ["bug", "urgent"],
"assignee_id": 5
}
delete_all_project_issues (仅限管理员)
删除项目中的所有问题。
{
"project_id": 4
}
用户管理工具(仅限管理员)
list_gitlab_users
获取GitLab实例中的所有用户。
list_project_issues
获取项目中的所有问题。
使用示例
创建错误报告
# Using the MCP server to create a bug
{
"tool": "create_bug",
"arguments": {
"title": "Authentication failure on mobile devices",
"description": "Users are experiencing login issues when accessing the application from mobile browsers.",
"labels": ["bug", "mobile", "authentication"],
"assignee_id": 5
}
}
管理问题生命周期
# Close an issue with a comment
{
"tool": "close_issue",
"arguments": {
"issue_iid": 123,
"comment": "Fixed in commit abc123. Tested on multiple browsers."
}
}
获取用户分配
# List all open issues for a specific user
{
"tool": "list_open_issues",
"arguments": {
"user_id": 5
}
}
开发工作流程
- 项目规划创建结构化的问题,并使用标签和里程碑进行组织
- 任务分配将问题分配给合适的团队成员
- 进度跟踪监控问题状态及完成情况
- 质量保证使用标签和里程碑进行组织
错误处理
服务器为以下情况提供全面的错误处理:
- 网络问题与GitLab API的连接问题
- 认证错误无效或过期的令牌
- 权限错误操作权限不足
- 验证错误无效参数或缺少必填字段
安全考虑因素
- 安全地存储访问令牌(建议使用环境变量)
- 为令牌使用最小必要权限
- 仅在必要时启用管理员模式
- 定期更换访问令牌
- 监控API使用情况和速率限制
故障排除
常见问题
GitLab API 未配置
- 确保
gitlab_url并且access_token在配置中设置 - 验证令牌是否具有所需的权限
“未提供项目ID”
- 设置
default_project_id在配置中或在工具参数中提供 - 验证项目是否存在且可访问
“权限被拒绝”
- 检查访问令牌权限
- 验证用户是否可以访问指定项目
- 考虑管理员模式的要求
调试模式
通过设置环境变量来启用调试日志记录:
export GITLAB_MCP_DEBUG=true
做出贡献
为服务器添加新工具以进行扩展:
- 在(相应位置)添加工具定义
handle_list_tools() - 实现工具逻辑于
handle_call_tool() - 如有需要,请更新配置模式
- 添加测试和文档
许可证
MIT 许可证 - 欢迎在您的应用程序中自由使用此项目。
支持
对于问题和疑问:
- 查看故障排除部分
- 验证您的GitLab实例配置
- 确保所有先决条件都已满足
- 审查访问令牌权限