初版gitlab合并test mcp

This commit is contained in:
zhangguoyun committed 2025-11-14 16:37:43 +08:00
1 parent 227d77f586
commit 0ccc8b625b
6 files changed
+2866 -35

No files matched your search

+87
View File
@@ -0,0 +1,87 @@
# 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 的客户端中运行它。服务器将通过标准输入/输出与客户端通信。