这是一个用于与 GitLab API 交互的 MCP(模型上下文协议)服务器。该服务器提供了一组工具,允许AI客户端对 GitLab 仓库、问题、合并请求等进行操作。所有操作都支持同步和异步执行模式。
# 克隆仓库
git clone https://github.com/Adit-999/gitlab-mcp.git
cd gitlab-mcp
# 使用 uv 安装依赖
uv sync
# 克隆仓库
git clone https://github.com/Adit-999/gitlab-mcp.git
cd gitlab-mcp
# 创建并激活虚拟环境
python -m venv .venv
source .venv/bin/activate # 在 Windows 上:.venv\Scripts\activate
# 安装依赖
pip install -e .
GitLab MCP 服务器需要两个环境变量才能正常工作:
GITLAB_PERSONAL_ACCESS_TOKEN - 用于与 GitLab API 进行身份验证GITLAB_API_URL - GitLab API 的基础 URL在项目根目录创建一个 .env 文件,包含这些变量:
GITLAB_PERSONAL_ACCESS_TOKEN=your_personal_access_token
GITLAB_API_URL=https://gitlab.com
你也可以在你的 MCP JSON 配置文件中配置 MCP 服务器:
{
"mcpServers": {
"gitlab-mcp": {
"command": "uv",
"args": ["run", "--with", "mcp[cli]", "mcp", "run", "/path/to/gitlab-mcp/server.py"],
"env": {
"GITLAB_PERSONAL_ACCESS_TOKEN": "your_personal_access_token",
"GITLAB_API_URL": "https://gitlab.com"
}
}
}
}
uv run mcp install server.py
该项目遵循模块化、领域驱动的架构:
gitlab-mcp/
├── src/ # 源代码
│ ├── api/ # API 交互层
│ │ ├── rest_client.py # GitLab REST API 客户端
│ │ ├── exceptions.py # API 异常定义
│ ├── schemas/ # 数据模型和验证
│ │ ├── base.py # 基础模式类
│ │ ├── repositories.py # 仓库数据模型
│ │ ├── branches.py # 分支数据模型
│ │ ├── issues.py # 问题数据模型
│ │ ├── merge_requests.py # 合并请求数据模型
│ │ ├── groups.py # 组数据模型
│ │ └── search.py # 搜索数据模型
│ ├── services/ # 业务逻辑层
│ │ ├── repositories.py # 仓库操作
│ │ ├── branches.py # 分支操作
│ │ ├── issues.py # 问题操作
│ │ ├── merge_requests.py # 合并请求操作
│ │ ├── groups.py # 组操作
│ │ └── search.py # 搜索操作
│ └── tools/ # MCP 工具实现
│ ├── repositories.py # 仓库工具
│ ├── branches.py # 分支工具
│ ├── issues.py # 问题工具
│ ├── merge_requests.py # 合并请求工具
│ ├── groups.py # 组工具
│ └── search.py # 搜索工具
├── server.py # 主 MCP 服务器入口点
这种架构提供了以下好处:
服务器提供了以下工具来与 GitLab 交互:
create_repository:创建一个新的 GitLab 仓库list_repository_tree:列出仓库树的内容create_branch:在 GitLab 仓库中创建一个新的分支list_branches:列出 GitLab 仓库中的分支get_branch:获取特定 GitLab 分支的详细信息delete_branch:从 GitLab 仓库中删除一个分支delete_merged_branches:从 GitLab 仓库中删除所有已合并的分支protect_branch:保护 GitLab 仓库中的一个分支unprotect_branch:取消 GitLab 仓库中一个分支的保护get_default_branch_ref:获取 GitLab 仓库的默认分支引用create_file:在 GitLab 仓库中创建一个新的文件get_file_contents:从 GitLab 仓库中检索文件内容update_file:更新 GitLab 仓库中的现有文件delete_file:从 GitLab 仓库中删除一个文件create_issue:在 GitLab 仓库中创建一个新的问题list_all_issues:列出认证用户有权访问的所有问题get_issue:获取特定 GitLab 问题的详细信息close_issue:关闭 GitLab 问题delete_issue:从 GitLab 仓库中删除一个问题move_issue:将问题移动到不同的项目comment_on_issue:向 GitLab 问题添加评论list_issue_comments:列出 GitLab 问题的评论create_merge_request:在 GitLab 仓库中创建一个新的合并请求list_merge_requests:列出 GitLab 项目的合并请求get_merge_request:获取特定 GitLab 合并请求的详细信息merge_merge_request:合并 GitLab 合并请求update_merge_request:更新 GitLab 仓库中的现有合并请求delete_merge_request:从 GitLab 仓库中删除一个合并请求merge_request_changes:获取特定合并请求的更改create_merge_request_comment:向 GitLab 合并请求添加评论get_job_logs:获取 GitLab 作业的日志list_groups:列出 GitLab 组get_group:获取特定 GitLab 组get_group_by_project_namespace:根据项目命名空间获取 GitLab 组search_globally:搜索所有 GitLab 资源(当前支持项目和文件/块)search_project:在特定项目内搜索(当前支持项目和文件/块)search_group:在特定组内搜索(当前支持项目和文件/块)GITLAB_PERSONAL_ACCESS_TOKEN 具有必要的权限,并且正确设置在环境变量中。本项目采用 MIT 许可证 - 详情请参阅 LICENSE 文件。