使用说明
GitLab MCP服务器
GitLab的模型上下文协议(MCP)服务器,使AI助手能够以结构化和安全的方式与GitLab API进行交互。
特性
- 多种运输支持:Stdio、SSE(服务器发送事件)和Streamable
- 安全操作:限制操作,防止意外修改受保护的分支
- GitLab集成:完全支持常见的GitLab操作
- Docker支持:使用Docker轻松部署
支持的操作
读取操作(始终允许)
- 列出项目
- 获取项目详细信息
- 列出合并请求
- 获取合并请求详细信息
- 获取文件内容
- 列表提交
- 列出管道
- 列出问题
写入操作(有限制)
- 创建合并请求注释(在MR上发表评论)
- 创建合并请求(源/目标不能为主/测试)
受限操作
- 合并代码(已阻止)
- 推送到主/测试分支(已阻塞)
- 修改配置(已阻止)
- 删除操作(已阻止)
安装
来源
git clone https://github.com/yourusername/gitlab-mcp-server.git
cd gitlab-mcp-server
go build -o gitlab-mcp-server ./cmd/server
使用Docker
# Build the image
docker build -t gitlab-mcp-server .
# Run with environment variables
docker run -e GITLAB_TOKEN="your-token" \
-e GITLAB_HOST="https://gitlab.com" \
gitlab-mcp-server
从Docker Hub拉取
docker pull codyrao/gitlab-mcp-server:latest
docker run -e GITLAB_TOKEN="your-token" \
-e GITLAB_HOST="https://gitlab.com" \
codyrao/gitlab-mcp-server:latest
配置
配置文件(config.yaml)
server:
host: "0.0.0.0"
port: 8080
transport: "stdio"
gitlab:
host: "https://gitlab.com"
token: "your-gitlab-token-here"
logging:
level: "info"
环境变量
| 变量 | 描述 | 默认值 |
|---|---|---|
| GITLAB_TOKEN | GITLAB个人访问令牌 | 必填 |
| GITLAB_HOST | GITLAB实例URL | https://gitlab.com |
| GITLAB_MCP_TRANSPORT | 传输类型(stdio、sse) | stdio |
| GITLAB_MCP_PORT | SSE传输端口 | 8080 |
用法
STDIO传输(默认)
对于Claude Desktop或其他MCP客户:
{
"mcpServers": {
"gitlab": {
"command": "docker run --rm -i -e GITLAB_TOKEN codyrao/gitlab-mcp-server:latest",
"args": ["-transport", "stdio"]
}
}
}
或者使用本地二进制:
{
"mcpServers": {
"gitlab": {
"command": "./gitlab-mcp-server",
"args": ["-config", "config.yaml", "-transport", "stdio"]
}
}
}
苏格兰和南方能源公司运输
# Using config file
./gitlab-mcp-server -config config.yaml -transport sse -port 8080
# Using environment variables
docker run -p 8080:8080 \
-e GITLAB_TOKEN="your-token" \
-e GITLAB_MCP_TRANSPORT="sse" \
-e GITLAB_MCP_PORT="8080" \
codyrao/gitlab-mcp-server:latest
然后配置您的MCP客户端以连接到:
- 上海证券交易所
http://localhost:8080/connect
可用工具
gitlab_list_项目
列出经过身份验证的用户的GitLab项目。
参数:
membership(boolean):仅限于经过身份验证的用户是成员的项目owned(boolean):仅限于经过身份验证的用户拥有的项目search(string):按名称搜索项目per_page(整数):每页结果数
gitlab_get-project
获取GitLab项目的详细信息。
参数:
project_id(string):项目ID或路径(例如,“组/项目”)
gitlab_list_mrs
列出GitLab项目中的合并请求。
参数:
project_id(string):项目ID或路径state(string):按状态筛选(打开、关闭、合并、全部)per_page(整数):每页结果数
gitlab_get_mr_details
获取合并请求的详细信息。
参数:
project_id(string):项目ID或路径mr_iid(整数):合并请求IID
gitlab_create_MR_note
对合并请求创建注释。
参数:
project_id(string):项目ID或路径mr_iid(整数):合并请求IIDbody(string):评论文本
gitlab_get_file_content
从GitLab存储库获取文件内容。
参数:
project_id(string):项目ID或路径file_path(string):存储库中文件的路径ref(string):分支、标记或提交引用
gitlab_list_commits
列出GitLab项目中的提交。
参数:
project_id(string):项目ID或路径ref_name(string):分支或标记名称per_page(整数):每页结果数
gitlab_list_pipelines
列出GitLab项目中的管道。
参数:
project_id(string):项目ID或路径per_page(整数):每页结果数
gitlab_create_mr
创建新的合并请求。无法在主/测试分支之间创建MR。
参数:
project_id(string):项目ID或路径source_branch(string):源分支名称target_branch(string):目标分支名称(不能是master或test)title(string):合并请求标题description(string):合并请求描述
gitlab_list_问题
列出GitLab项目中的问题。
参数:
project_id(string):项目ID或路径state(string):按状态过滤(打开、关闭、全部)per_page(整数):每页结果数
安全限制
此MCP服务器实施了严格的安全限制,以防止意外修改:
- 受保护分支:操作
master,main,test,develop,以及release分支被阻塞 - 合并操作:无法通过此服务器合并合并请求
- 删除操作:所有删除操作都被阻止
- 配置变更:无法修改项目设置
- 分支创建:阻止创建具有受保护名称的分支
GitLab令牌权限
您的GitLab个人访问令牌需要以下权限:
api:API完全访问read_api:读取API访问权限read_repository:读取存储库访问权限write_repository:写入存储库访问权限(用于创建MR操作)
发展
本地运行
# Install dependencies
go mod download
# Run the server
go run ./cmd/server -config config.yaml -transport stdio
Docker构建
# Build the image
docker build -t gitlab-mcp-server .
# Push to Docker Hub
docker login -u codyrao
docker tag gitlab-mcp-server codyrao/gitlab-mcp-server:latest
docker push codyrao/gitlab-mcp-server:latest
许可证
MIT许可证
贡献
欢迎投稿!请随时提交拉取请求。
