内容
# gitlab-mcp-server
用于管理 GitLab 仓库的 MCP 服务器 — 合并请求、流水线、分支和文件操作 — 通过 [模型上下文协议](https://modelcontextprotocol.io)。
## 功能
- **合并请求** — 创建、列出、获取、审查差异和评论
- **流水线** — 列出、获取、重试和取消
- **分支** — 创建、删除、列出和检查
- **文件** — 推送(创建/更新/删除/移动)和读取文件内容
- **企业支持** — 与任何 GitLab 实例配合使用(设置 `GITLAB_URL`)
## 安装
```bash
pip install gitlab-mcp-server
```
或从源代码安装:
```bash
git clone https://github.com/hhldiniz/gitlabmcp.git
cd gitlabmcp
pip install -e .
```
用于测试:
```bash
pip install -e ".[test]"
```
## 配置
设置以下环境变量:
| 变量 | 是否必需 | 默认值 | 描述 |
|---|---|---|---|
| `GITLAB_TOKEN` | 是 | — | GitLab 个人访问令牌 |
| `GITLAB_URL` | 否 | `https://gitlab.com` | GitLab 实例 URL |
## 用法
### 作为独立的 MCP 服务器运行(标准输入/输出)
```bash
export GITLAB_TOKEN=glpat-your-token
python -m gitlab_mcp_server
```
### 与 MCP 客户端配置
添加到您的 MCP 客户端配置(例如 `claude_desktop_config.json`):
```json
{
"mcpServers": {
"gitlab": {
"command": "python",
"args": ["-m", "gitlab_mcp_server"],
"env": {
"GITLAB_TOKEN": "glpat-your-token",
"GITLAB_URL": "https://gitlab.com"
}
}
}
}
```
## 工具
| 工具 | 描述 |
|---|---|
| `create_mr` | 创建合并请求 |
| `list_mrs` | 列出合并请求(按状态过滤) |
| `get_mr` | 获取合并请求详情 |
| `review_code` | 获取代码审查的合并请求差异/更改 |
| `comment_on_mr` | 在合并请求上添加注释 |
| `list_pipelines` | 列出流水线(按引用过滤) |
| `get_pipeline` | 获取流水线详情 |
| `retry_pipeline` | 重试失败的流水线 |
| `cancel_pipeline` | 取消正在运行的流水线 |
| `create_branch` | 从引用创建新分支 |
| `delete_branch` | 删除分支 |
| `list_branches` | 列出仓库分支 |
| `get_branch` | 获取分支详情 |
| `push_files` | 在单个提交中创建/更新/删除/移动文件 |
| `get_file` | 从仓库读取文件 |
## 运行测试
```bash
python -m pytest tests -v
```
## 项目结构
```
gitlabmcp/
├── pyproject.toml
├── .env.example
├── client.py # 示例 MCP 客户端
├── src/
│ └── gitlab_mcp_server/
│ ├── __init__.py
│ ├── __main__.py
│ ├── gitlab_client.py # GitLab API 包装器
│ ├── tools.py # MCP 工具定义 + 调度
│ └── server.py # MCP 服务器(标准输入/输出传输)
└── tests/
├── conftest.py # 固定装置和模拟
├── test_gitlab_client.py
├── test_tools.py
└── test_server.py
```