GitLab MCP服务

一个为GitLab设计的模型上下文协议服务器,使AI助手能够以结构化和安全的方式与GitLab API交互。

  • by codyrao
  • Go
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 codyrao/gitlab-mcp-server

使用说明

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 (整数):合并请求IID
  • body (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服务器实施了严格的安全限制,以防止意外修改:

  1. 受保护分支:操作 master, main, test, develop,以及 release 分支被阻塞
  2. 合并操作:无法通过此服务器合并合并请求
  3. 删除操作:所有删除操作都被阻止
  4. 配置变更:无法修改项目设置
  5. 分支创建:阻止创建具有受保护名称的分支

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许可证

贡献

欢迎投稿!请随时提交拉取请求。