Better GitLab MCP Server

@zereight/mcp-gitlab

smithery badge

GitLab MCP(Model Context Protocol) Server. Includes bug fixes and improvements over the original GitLab MCP server.

gitlab mcp MCP server

Features

  • Automatic Branch Creation: Automatically creates a branch if it doesn't exist when creating/updating files or pushing changes. 🌿
  • Comprehensive Error Handling: Provides clear error messages for common issues. ⚠️
  • Git History Preservation: Operates without force-pushing, maintaining Git history. 📜
  • Batch Operations: Supports both single and multi-file operations. 묶음
  • Versatile Search: Supports project search functionality. 🔍

Tools 🛠️

  1. create_or_update_file

    • Create or update a single file in a GitLab project. 📝
    • Inputs:
      • project_id (string): Project ID or namespace/project_path
      • file_path (string): Path to create/update the file
      • content (string): File content
      • commit_message (string): Commit message
      • branch (string): Branch to create/update the file in
      • previous_path (optional string): Previous file path when renaming a file
    • Returns: File content and commit details
  2. push_files

    • Push multiple files in a single commit. 📤
    • Inputs:
      • project_id (string): Project ID or namespace/project_path
      • branch (string): Branch to push to
      • files (array): Array of files to push, each with file_path and content properties
      • commit_message (string): Commit message
    • Returns: Updated branch reference
  3. search_repositories

    • Search for GitLab projects. 🔍
    • Inputs:
      • search (string): Search query
      • page (optional number): Page number (default: 1)
      • per_page (optional number): Results per page (default: 20, max: 100)
    • Returns: Project search results
  4. create_repository

    • Create a new GitLab project.
    • Inputs:
      • name (string): Project name
      • description (optional string): Project description
      • visibility (optional string): Project visibility level (public, private, internal)
      • initialize_with_readme (optional boolean): Initialize with README
    • Returns: Details of the created project
  5. get_file_contents

    • Get the contents of a file or directory. 📂
    • Inputs:
      • project_id (string): Project ID or namespace/project_path
      • file_path (string): Path to the file/directory
      • ref (optional string): Branch, tag, or commit SHA (default: default branch)
    • Returns: File/directory content
  6. create_issue

    • Create a new issue. 🐛
    • Inputs:
      • project_id (string): Project ID or namespace/project_path
      • title (string): Issue title
      • description (string): Issue description
      • assignee_ids (optional number[]): Array of assignee IDs
      • milestone_id (optional number): Milestone ID
      • labels (optional string[]): Array of labels
    • Returns: Details of the created issue
  7. create_merge_request

    • Create a new merge request. 🚀
    • Inputs:
      • project_id (string): Project ID or namespace/project_path
      • title (string): Merge request title
      • description (string): Merge request description
      • source_branch (string): Branch with changes
      • target_branch (string): Branch to merge into
      • allow_collaboration (optional boolean): Allow collaborators to push commits to the source branch
      • draft (optional boolean): Create as a draft merge request
    • Returns: Details of the created merge request
  8. fork_repository

    • Fork a project. 🍴
    • Inputs:
      • project_id (string): Project ID or namespace/project_path to fork
      • namespace (optional string): Namespace to fork into (default: user namespace)
    • Returns: Details of the forked project
  9. create_branch

    • Create a new branch. 🌿
    • Inputs:
      • project_id (string): Project ID or namespace/project_path
      • name (string): New branch name
      • ref (optional string): Ref to create the branch from (branch, tag, commit SHA, default: default branch)
    • Returns: Created branch reference
  10. get_merge_request

    • Get details of a merge request.
    • Inputs:
      • project_id (string): Project ID or namespace/project_path
      • merge_request_iid (number): Merge request IID
    • Returns: Merge request details
  11. get_merge_request_diffs

    • Get changes (diffs) of a merge request. diff
    • Inputs:
      • project_id (string): Project ID or namespace/project_path
      • merge_request_iid (number): Merge request IID
      • view (optional string): Diff view type ('inline' or 'parallel')
    • Returns: Array of merge request diff information
  12. update_merge_request

    • Update a merge request. 🔄
    • Inputs:
      • project_id (string): Project ID or namespace/project_path
      • merge_request_iid (number): Merge request IID
      • title (optional string): New title
      • description (string): New description
      • target_branch (optional string): New target branch
      • state_event (optional string): Merge request state change event ('close', 'reopen')
      • remove_source_branch (optional boolean): Remove source branch after merge
      • allow_collaboration (optional boolean): Allow collaborators to push commits to the source branch
    • Returns: Updated merge request details
  13. create_note

    • Create a new note (comment) to an issue or merge request. 💬
    • Inputs:
      • project_id (string): Project ID or namespace/project_path
      • noteable_type (string): Type of noteable ("issue" or "merge_request")
      • noteable_iid (number): IID of the issue or merge request
      • body (string): Note content
    • Returns: Details of the created note

Environment Variable Configuration

Before running the server, you need to set the following environment variables:

GITLAB_PERSONAL_ACCESS_TOKEN=your_gitlab_token
GITLAB_API_URL=your_gitlab_api_url  # Default: https://gitlab.com/api/v4

Usage

Using with Claude App, Cline, Roo Code

When using with the Claude App, you need to set up your API key and URLs directly.

{
  "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"
      }
    }
  }
}

Using with Cursor

When using with Cursor, you can set up environment variables and run the server as follows:

env GITLAB_PERSONAL_ACCESS_TOKEN=your_gitlab_token GITLAB_API_URL=your_gitlab_api_url npx @zereight/mcp-gitlab
  • GITLAB_PERSONAL_ACCESS_TOKEN: Your GitLab personal access token.
  • GITLAB_API_URL: Your GitLab API URL. (Default: https://gitlab.com/api/v4)

License

MIT License

Description
gitlab mcp
Readme MIT 538 KiB
Languages
JavaScript 66.8%
TypeScript 31.6%
Shell 1.3%
Dockerfile 0.3%