GitLab Code Review
STDIOMCP server integrating AI assistants with GitLab merge requests for code review.
MCP server integrating AI assistants with GitLab merge requests for code review.
This project is forked from cayirtepeomer/gerrit-code-review-mcp and adapted for GitLab integration.
An MCP (Model Context Protocol) server for integrating AI assistants like Claude with GitLab's merge requests. This allows AI assistants to review code changes directly through the GitLab API.
git clone https://github.com/mehmetakinn/gitlab-mcp-code-review.git cd gitlab-mcp-code-review
python -m venv .venv source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -r requirements.txt
.env
file with your GitLab configuration (see .env.example
for all options):# Required
GITLAB_TOKEN=your_personal_access_token_here
# Optional settings
GITLAB_HOST=gitlab.com
GITLAB_API_VERSION=v4
LOG_LEVEL=INFO
The following environment variables can be configured in your .env
file:
Variable | Required | Default | Description |
---|---|---|---|
GITLAB_TOKEN | Yes | - | Your GitLab personal access token |
GITLAB_HOST | No | gitlab.com | GitLab instance hostname |
GITLAB_API_VERSION | No | v4 | GitLab API version to use |
LOG_LEVEL | No | INFO | Logging level (DEBUG, INFO, WARNING, ERROR, CRITICAL) |
DEBUG | No | false | Enable debug mode |
REQUEST_TIMEOUT | No | 30 | API request timeout in seconds |
MAX_RETRIES | No | 3 | Maximum retry attempts for failed requests |
To use this MCP with Cursor IDE, add this configuration to your ~/.cursor/mcp.json
file:
{ "mcpServers": { "gitlab-mcp-code-review": { "command": "/path/to/your/gitlab-mcp-code-review/.venv/bin/python", "args": [ "/path/to/your/gitlab-mcp-code-review/server.py", "--transport", "stdio" ], "cwd": "/path/to/your/gitlab-mcp-code-review", "env": { "PYTHONPATH": "/path/to/your/gitlab-mcp-code-review", "VIRTUAL_ENV": "/path/to/your/gitlab-mcp-code-review/.venv", "PATH": "/path/to/your/gitlab-mcp-code-review/.venv/bin:/usr/local/bin:/usr/bin:/bin" }, "stdio": true } } }
Replace /path/to/your/gitlab-mcp-code-review
with the actual path to your cloned repository.
To use this MCP with the Claude Desktop App:
{ "mcpServers": { "gitlab-mcp-code-review": { "command": "/path/to/your/gitlab-mcp-code-review/.venv/bin/python", "args": [ "/path/to/your/gitlab-mcp-code-review/server.py", "--transport", "stdio" ], "cwd": "/path/to/your/gitlab-mcp-code-review", "env": { "PYTHONPATH": "/path/to/your/gitlab-mcp-code-review", "VIRTUAL_ENV": "/path/to/your/gitlab-mcp-code-review/.venv", "PATH": "/path/to/your/gitlab-mcp-code-review/.venv/bin:/usr/local/bin:/usr/bin:/bin" }, "stdio": true } } }
Replace /path/to/your/gitlab-mcp-code-review
with the actual path to your cloned repository.
The MCP server provides the following tools for interacting with GitLab:
Tool | Description |
---|---|
fetch_merge_request | Get complete information about a merge request |
fetch_merge_request_diff | Get diffs for a specific merge request |
fetch_commit_diff | Get diff information for a specific commit |
compare_versions | Compare different branches, tags, or commits |
add_merge_request_comment | Add a comment to a merge request |
approve_merge_request | Approve a merge request |
unapprove_merge_request | Unapprove a merge request |
get_project_merge_requests | Get a list of merge requests for a project |
# Get details of merge request #5 in project with ID 123 mr = fetch_merge_request("123", "5")
# Get diff for a specific file in a merge request file_diff = fetch_merge_request_diff("123", "5", "path/to/file.js")
# Compare develop branch with master branch diff = compare_versions("123", "develop", "master")
# Add a comment to a merge request comment = add_merge_request_comment("123", "5", "This code looks good!")
# Approve a merge request and set required approvals to 2 approval = approve_merge_request("123", "5", approvals_required=2)
If you encounter issues:
.env
file settingscurl -H "Private-Token: your-token" https://gitlab.com/api/v4/projects
Contributions are welcome! Please feel free to submit a Pull Request.
git checkout -b feature/amazing-feature
)git commit -m 'Add some amazing feature'
)git push origin feature/amazing-feature
)See the CONTRIBUTING.md file for more details on the development process.
This project is licensed under the MIT License - see the LICENSE file for details.