# 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 服务器 ``` json { "mcpServers": { "gitlab-mcp-server": { "command": "node", "args": [ "/your/code/path/index-gitlab.js" ], "env": { "GITLAB_API_BASE_URL": "https://git.ifengqun.com/api/v4", "GITLAB_ACCESS_TOKEN": "your_gitlab_token" } } } } ```