使用说明
GitLab MCP服务器
一个模型上下文协议(MCP)服务器,为Claude等人工智能助手提供GitLab API集成。此服务器使AI代理能够与GitLab存储库交互、管理分支、创建合并请求和执行文件操作。
特性
- 库管理:列出并获取GitLab项目的详细信息
- 转移操作:创建、列出和删除分支
- 合并请求:创建、列出和合并拉取请求
- 文件操作:读取、创建、更新和删除存储库文件
- 安全认证:使用GitLab API进行基于令牌的身份验证
安装
- 克隆存储库:
git clone <repository-url>
cd gitlab-mcp-server
- 安装依赖项:
npm install
- 设置环境变量:
cp .env.example .env
# Edit .env with your GitLab credentials
配置
创建一个 .env 包含以下变量的文件:
GITLAB_TOKEN=your_gitlab_personal_access_token
GITLAB_URL=https://gitlab.com/api/v4
DEFAULT_PROJECT_ID=your_default_project_id
环境变量
GITLAB_TOKEN:您的GitLab个人访问令牌(必填)GITLAB_URL:GitLab API基本URL(默认为https://gitlab.com/api/v4)DEFAULT_PROJECT_ID:操作的默认项目ID(可选)
Claude代码配置
要将此MCP服务器与Claude Code一起使用,您需要在MCP设置中对其进行配置。创建或更新MCP配置文件:
选项1:项目特定配置
创建一个 mcp.json 项目目录中的文件:
{
"mcpServers": {
"gitlab": {
"command": "node",
"args": ["/path/to/gitlab-mcp-server/dist/index.js"],
"env": {
"GITLAB_TOKEN": "your_gitlab_personal_access_token",
"GITLAB_URL": "https://gitlab.com/api/v4",
"DEFAULT_PROJECT_ID": "your_project_id"
}
}
}
}
选项2:全局配置
添加到全局Claude Code配置文件(通常在 ~/.config/claude-code/mcp.json 或类似):
{
"mcpServers": {
"gitlab": {
"command": "node",
"args": ["/path/to/gitlab-mcp-server/dist/index.js"],
"env": {
"GITLAB_TOKEN": "your_gitlab_personal_access_token",
"GITLAB_URL": "https://gitlab.com/api/v4"
}
}
}
}
备注:替换 /path/to/gitlab-mcp-server 使用克隆此存储库的实际路径。
改用环境变量
为了提高安全性,您可以在 mcp.json:
{
"mcpServers": {
"gitlab": {
"command": "node",
"args": ["/path/to/gitlab-mcp-server/dist/index.js"],
"env": {
"GITLAB_TOKEN": "${GITLAB_TOKEN}",
"GITLAB_URL": "${GITLAB_URL}",
"DEFAULT_PROJECT_ID": "${DEFAULT_PROJECT_ID}"
}
}
}
}
然后在shell配置文件中设置这些环境变量(~/.bashrc, ~/.zshrc等等)。
用法
发展模式
npm run dev
生产模式
npm run build
npm start
监视模式(更改后自动重新启动)
npm run watch
可用工具
存储库工具
list_projects:列出可访问的GitLab项目get_project:获取特定项目的详细信息
分支工具
list_branches:列出存储库中的所有分支create_branch:从现有分支创建新分支delete_branch:从存储库中删除分支
合并请求工具
create_merge_request:创建新的合并请求list_merge_requests:列出具有筛选选项的合并请求merge_merge_request:合并已批准的合并请求
文件工具
get_file:从存储库读取文件内容create_file:在存储库中创建新文件update_file:更新现有文件内容delete_file:从存储库中删除文件
使用Claude代码
此MCP服务器旨在与Claude Code和其他MCP兼容的AI助手无缝协作。以下是一些示例用例:
示例1:创建特征分支和合并请求
You: "Create a new feature branch called 'add-user-auth' from main, then create a merge request for it"
Claude (using this MCP server):
1. Uses create_branch tool to create 'add-user-auth' branch from 'main'
2. Uses create_merge_request tool to create a merge request
3. Provides you with the merge request URL and details
示例2:文件操作
You: "Add a new configuration file config/database.yml to the repository"
Claude (using this MCP server):
1. Uses create_file tool to add the new file
2. Commits the change with an appropriate message
3. Confirms the file was created successfully
示例3:代码审查工作流
You: "List all open merge requests and show me the files changed in MR #42"
Claude (using this MCP server):
1. Uses list_merge_requests tool to get open MRs
2. Uses get_file tool to show changed files in the specific MR
3. Provides a summary of the changes for review
建筑
服务器采用模块化架构:
src/index.ts:主服务器入口点和MCP设置src/gitlab-client.ts:GitLab API客户端包装器src/tools/:单个工具实施repository.ts:项目管理工具branches.ts:分行操作工具merge-requests.ts:合并请求工具files.ts:文件操作工具
发展
项目结构
├── src/
│ ├── index.ts # Main server entry point
│ ├── gitlab-client.ts # GitLab API client
│ └── tools/ # MCP tool implementations
│ ├── repository.ts
│ ├── branches.ts
│ ├── merge-requests.ts
│ └── files.ts
├── dist/ # Compiled JavaScript output
├── package.json
├── tsconfig.json
└── README.md
建筑
npm run build
测试
可以通过将服务器连接到任何兼容MCP的客户端或使用MCP调试工具来测试服务器。
认证
此服务器使用GitLab个人访问令牌进行身份验证。要创建令牌,请执行以下操作:
- 转到您的GitLab配置文件设置
- 导航到“访问令牌”
- 创建具有适当作用域的新令牌:
api:完全访问APIread_user:读取用户信息read_repository:读取存储库内容write_repository:写入存储库
安全说明
- 将您的GitLab令牌安全地存储在环境变量中
- 从不将令牌提交到版本控制
- 为您的令牌使用所需的最小权限
- 定期轮换您的访问令牌
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交合并请求
许可证
MIT许可证-有关详细信息,请参阅许可证文件。
支持
对于问题和功能请求,请在GitLab存储库中创建问题。