gitlab mcp

by zereight
Verified
MIT License
1,270
57
  • Linux
  • Apple

remote-capable server

The server can be hosted and run remotely because it primarily relies on remote services or has no dependency on the local environment.

Integrations

  • Allows interaction with GitLab repositories including creating/updating files, pushing multiple files, searching repositories, creating repositories, getting file contents, creating issues, creating merge requests, forking repositories, creating branches, getting merge request details and diffs, updating merge requests, and creating notes/comments.

更好的 GitLab MCP 服务器

@zereight/mcp-gitlab

GitLab MCP(模型上下文协议)服务器。包含对原始 GitLab MCP 服务器的错误修复和改进。

用法

与 Claude App、Cline、Roo Code、Cursor 一起使用

当使用 Claude App 时,您需要直接设置您的 API 密钥和 URL。

{ "mcpServers": { "GitLab communication server": { "command": "npx", "args": ["-y", "@zereight/mcp-gitlab"], "env": { "GITLAB_PERSONAL_ACCESS_TOKEN": "your_gitlab_token", "GITLAB_API_URL": "your_gitlab_api_url", "GITLAB_READ_ONLY_MODE": "true" } } } }

环境变量

  • GITLAB_PERSONAL_ACCESS_TOKEN :您的 GitLab 个人访问令牌。
  • GITLAB_API_URL :您的 GitLab API URL。(默认值: https://gitlab.com/api/v4
  • GITLAB_READ_ONLY_MODE :设置为“true”时,限制服务器仅公开只读操作。适用于增强安全性或不需要写入权限的情况。也适用于与 Cursor 配合使用,并限制其 40 个工具的使用数量。

工具🛠️

  1. create_or_update_file
    • 在 GitLab 项目中创建或更新单个文件。📝
    • 输入:
      • project_id (字符串):项目 ID 或命名空间/project_path
      • file_path (字符串):创建/更新文件的路径
      • content (字符串):文件内容
      • commit_message (字符串):提交消息
      • branch (字符串):创建/更新文件的分支
      • previous_path (可选字符串):重命名文件时的先前文件路径
    • 返回:文件内容和提交详细信息
  2. push_files
    • 在一次提交中推送多个文件。📤
    • 输入:
      • project_id (字符串):项目 ID 或命名空间/project_path
      • branch (字符串):要推送到的分支
      • files (数组):要推送的文件数组,每个文件都具有file_pathcontent属性
      • commit_message (字符串):提交消息
    • 返回:更新的分支参考
  3. search_repositories
    • 搜索 GitLab 项目。🔍
    • 输入:
      • search (字符串):搜索查询
      • page (可选数字):页码(默认值:1)
      • per_page (可选数字):每页结果数(默认值:20,最大值:100)
    • 返回:项目搜索结果
  4. create_repository
    • 创建一个新的 GitLab 项目。➕
    • 输入:
      • name (字符串):项目名称
      • description (可选字符串):项目描述
      • visibility (可选字符串):项目可见性级别(公共、私有、内部)
      • initialize_with_readme (可选布尔值): 使用 README 初始化
    • 返回:创建项目的详细信息
  5. get_file_contents
    • 获取文件或目录的内容。📂
    • 输入:
      • project_id (字符串):项目 ID 或命名空间/project_path
      • file_path (字符串):文件/目录的路径
      • ref (可选字符串):分支、标签或提交 SHA(默认值:默认分支)
    • 返回:文件/目录内容
  6. create_issue
    • 创建新问题。🐛
    • 输入:
      • project_id (字符串):项目 ID 或命名空间/project_path
      • title (字符串):问题标题
      • description (字符串):问题描述
      • assignee_ids ID 数组
      • milestone_id (可选数字):里程碑 ID
      • labels (可选字符串[]):标签数组
    • 返回:创建问题的详细信息
  7. create_merge_request
    • 创建一个新的合并请求。🚀
    • 输入:
      • project_id (字符串):项目 ID 或命名空间/project_path
      • title (字符串):合并请求标题
      • description (字符串):合并请求描述
      • source_branch (字符串):有变更的分支
      • target_branch (字符串):要合并的分支
      • allow_collaboration (可选布尔值):允许协作者将提交推送到源分支
      • draft (可选布尔值):创建为合并请求草稿
    • 返回:创建的合并请求的详细信息
  8. fork_repository
    • 派生一个项目。🍴
    • 输入:
      • project_id (字符串):要分叉的项目 ID 或 namespace/project_path
      • namespace (可选字符串):要分叉的命名空间(默认值:用户命名空间)
    • 返回:分叉项目的详细信息
  9. create_branch
    • 创建一个新分支。🌿
    • 输入:
      • project_id (字符串):项目 ID 或命名空间/project_path
      • name (字符串):新分支名称
      • ref (可选字符串):创建分支的 Ref(分支、标签、提交 SHA,默认值:默认分支)
    • 返回:创建的分支引用
  10. get_merge_request
  • 获取合并请求的详细信息。ℹ️
  • 输入:
    • project_id (字符串):项目 ID 或命名空间/project_path
    • merge_request_iid (number): 合并请求 IID
  • 返回:合并请求详细信息
  1. get_merge_request_diffs
  • 获取合并请求的更改(差异)。diff
  • 输入:
    • project_id (字符串):项目 ID 或命名空间/project_path
    • merge_request_iid (number): 合并请求 IID
    • view (可选字符串):差异视图类型('内联'或'并行')
  • 返回:合并请求差异信息数组
  1. update_merge_request
  • 更新合并请求。🔄
  • 输入:
    • project_id (字符串):项目 ID 或命名空间/project_path
    • merge_request_iid (number): 合并请求 IID
    • title (可选字符串):新标题
    • description (字符串):新描述
    • target_branch (可选字符串):新的目标分支
    • state_event (可选字符串):合并请求状态改变事件('close','reopen')
    • remove_source_branch (可选布尔值):合并后删除源分支
    • allow_collaboration (可选布尔值):允许协作者将提交推送到源分支
  • 返回:更新的合并请求详细信息
  1. create_note
  • 为问题或合并请求创建新注释(评论)。💬
  • 输入:
    • project_id (字符串):项目 ID 或命名空间/project_path
    • noteable_type (字符串): 值得注意的类型(“问题”或“合并请求”)
    • noteable_iid (数字):问题或合并请求的 IID
    • body (字符串):笔记内容
  • 返回:创建的注释的详细信息
  1. list_projects
  • 列出具有丰富过滤选项的可访问项目📊
  • 输入:
    • 搜索/过滤:
      • search
      • owned
      • membership
      • archived
      • visibility
    • 特征过滤:
      • with_issues_enabled
      • with_merge_requests_enabled
    • 排序:
      • order_by
      • sort
    • 访问控制:
      • min_access_level
    • 分页:
      • page
      • per_page
      • simple
  • 返回:项目数组
  1. list_labels
  • 使用过滤选项列出项目的所有标签🏷️
  • 输入:
    • project_id (字符串):项目ID或路径
    • with_counts (可选):包括问题和合并请求计数
    • include_ancestor_groups (可选):包括祖先组
    • search (可选):按关键字过滤标签
  • 返回:标签数组
  1. get_label
  • 从项目中获取单个标签
  • 输入:
    • project_id (字符串):项目ID或路径
    • label_id (数字/字符串):标签 ID 或名称
    • include_ancestor_groups (可选):包括祖先组
  • 返回:标签详细信息
  1. create_label
  • 在对象中创建新标签🏷️➕
  • 输入:
    • project_id (字符串):项目ID或路径
    • name (字符串):标签名称
    • color (字符串):十六进制格式的颜色(例如“#FF0000”)
    • description (可选):标签描述
    • priority (可选):标签优先级
  • 返回:创建的标签详细信息
  1. update_label
  • 更新项目中的现有标签🏷️✏️
  • 输入:
    • project_id (字符串):项目ID或路径
    • label_id (数字/字符串):标签 ID 或名称
    • new_name (可选):新标签名称
    • color (可选):十六进制格式的新颜色
    • description (可选):新的描述
    • priority (可选):新的优先级
  • 返回:更新的标签详细信息
  1. delete_label
  • 从项目中删除标签🏷️❌
  • 输入:
    • project_id (字符串):项目ID或路径
    • label_id (数字/字符串):标签 ID 或名称
  • 返回:成功消息
  1. list_group_projects
  • 列出 GitLab 组中的所有项目。📂
  • 输入:
    • group_id (字符串):项目 ID 或命名空间/项目路径
    • 过滤选项:
      • include_subgroups (可选布尔值):包含来自子组的项目
      • search (可选字符串):用于过滤项目的搜索词
      • archived (可选布尔值):筛选已存档的项目
      • visibility (可选字符串):按项目可见性(公共/内部/私人)进行过滤
      • with_programming_language (可选字符串):按编程语言过滤
      • starred (可选布尔值):按已加星标的项目进行过滤
    • 特征过滤:
      • with_issues_enabled (可选布尔值):过滤启用了问题功能的项目
      • with_merge_requests_enabled (可选布尔值):过滤启用了合并请求功能的项目
      • min_access_level (可选数字):按最低访问级别过滤
    • 分页:
      • page (可选数字):页码
      • per_page (可选数字):每页结果数
    • 排序:
      • order_by (可选字符串):排序依据的字段
      • sort (可选字符串):排序方向(升序/降序)
    • 附加数据:
      • statistics (可选布尔值):包括项目统计数据
      • with_custom_attributes (可选布尔值):包含自定义属性
      • with_security_reports (可选布尔值):包含安全报告
  • 返回:项目列表

环境变量配置

在运行服务器之前,需要设置以下环境变量:

GITLAB_PERSONAL_ACCESS_TOKEN=your_gitlab_token GITLAB_API_URL=your_gitlab_api_url # Default: https://gitlab.com/api/v4 GITLAB_READ_ONLY_MODE=true # Optional: Enable read-only mode

执照

MIT 许可证

ID: 7jwbk4r6d7