87 lines
2.6 KiB
Markdown
87 lines
2.6 KiB
Markdown
# GitLab MCP 服务器
|
||
|
||
这是一个 Model Context Protocol (MCP) 服务器,专门用于与 GitLab 交互,主要功能包括创建和合并 Merge Request。
|
||
|
||
## 功能
|
||
|
||
- `create_merge_request`: 在指定的 GitLab 项目中创建一个新的 Merge Request
|
||
- `merge_merge_request`: 合并指定的 GitLab Merge Request
|
||
- `get_merge_request`: 获取指定 Merge Request 的详细信息
|
||
- `close_merge_request`: 关闭指定的 GitLab Merge Request 而不合并
|
||
|
||
## 环境变量
|
||
|
||
- `GITLAB_ACCESS_TOKEN`: 用于访问 GitLab API 的访问令牌
|
||
- `GITLAB_API_BASE_URL`: GitLab API 的基础 URL(默认为 `https://gitlab.com/api/v4`)
|
||
|
||
## 安装和运行
|
||
|
||
1. 首先,确保你已经安装了 Node.js 和 npm。
|
||
2. 安装依赖:
|
||
```bash
|
||
npm install
|
||
```
|
||
3. 设置环境变量:
|
||
```bash
|
||
export GITLAB_ACCESS_TOKEN="your_gitlab_access_token"
|
||
export GITLAB_API_BASE_URL="https://your-gitlab-instance.com/api/v4" # 可选,仅当使用自托管的 GitLab 时
|
||
```
|
||
4. 运行 GitLab MCP 服务器:
|
||
```bash
|
||
npm run gitlab
|
||
```
|
||
|
||
## 架构
|
||
|
||
该项目使用一个封装的 `gitlabApiClient` 对象来处理所有与 GitLab API 的交互,这使得代码更模块化和可维护。API 客户端包含以下方法:
|
||
|
||
- `createMergeRequest`: 创建 Merge Request
|
||
- `mergeMergeRequest`: 合并 Merge Request
|
||
- `getMergeRequest`: 获取 Merge Request 详情
|
||
- `closeMergeRequest`: 关闭 Merge Request
|
||
|
||
## 工具详情
|
||
|
||
### create_merge_request
|
||
|
||
创建一个新的 Merge Request。
|
||
|
||
参数:
|
||
- `projectId`: GitLab 项目的 ID 或 URL 编码的路径
|
||
- `sourceBranch`: 源分支名称
|
||
- `targetBranch`: 目标分支名称
|
||
- `title`: Merge Request 的标题
|
||
- `description`: (可选) Merge Request 的描述
|
||
- `assigneeId`: (可选) 负责人 ID
|
||
- `reviewerIds`: (可选) 审阅者 ID 数组
|
||
|
||
### merge_merge_request
|
||
|
||
合并一个 Merge Request。
|
||
|
||
参数:
|
||
- `projectId`: GitLab 项目的 ID 或 URL 编码的路径
|
||
- `mrIid`: Merge Request 的内部 ID
|
||
- `mergeCommitMessage`: (可选) 合并提交的消息
|
||
- `shouldRemoveSourceBranch`: (可选) 是否在合并后删除源分支
|
||
- `mergeWhenPipelineSucceeds`: (可选) 是否在 CI 管道成功后合并
|
||
|
||
### get_merge_request
|
||
|
||
获取 Merge Request 的详细信息。
|
||
|
||
参数:
|
||
- `projectId`: GitLab 项目的 ID 或 URL 编码的路径
|
||
- `mrIid`: Merge Request 的内部 ID
|
||
|
||
### close_merge_request
|
||
|
||
关闭一个 Merge Request 而不合并。
|
||
|
||
参数:
|
||
- `projectId`: GitLab 项目的 ID 或 URL 编码的路径
|
||
- `mrIid`: Merge Request 的内部 ID
|
||
|
||
## 使用示例
|
||
|
||
要使用此 MCP 服务器,你需要在支持 Model Context Protocol 的客户端中运行它。服务器将通过标准输入/输出与客户端通信。 |