A Model Context Protocol (MCP) server implementation
A Model Context Protocol (MCP) server implementation. That is what the gitlab mcp server brings to an AI assistant: the same capability, reachable through the Model Context Protocol rather than a separate app or dashboard.
A Model Context Protocol (MCP) server for GitLab code review and project management. Provides comprehensive tools for interacting with GitLab projects, merge requests, issues, and code reviews through Claude AI.
The server publishes 14 tools. What each one is for:
search_projects — Search for GitLab projects by keyword with pagination supportlist_merge_requests — List merge requests for a specific project with pagination support. - Parameters: - project_id (required) - GitLab project ID - state (optional)get_merge_request — Fetch detailed merge request information. - Parameters: - project_id (required) - GitLab project ID - mr_iid (required) - Merge request IIDget_merge_request_diffs — Get code changes (diffs) for a merge request with pagination support. - Parameters: - project_id (required) - GitLab project ID - mr_iidadd_merge_request_comment — Add a general comment to a merge request. - Parameters: - project_id (required) - GitLab project ID - mr_iid (required) - Merge request IID -add_merge_request_line_comment — Add a line-specific comment to merge request code. - Parameters: - project_id (required) - GitLab project ID - mr_iid (required) - Merge requestget_merge_request_comments — Get all comments and discussions from a merge request, including suggestions, with pagination support. - Parameters: - project_id (required) -get_merge_request_commits — Get all commits in a merge request with pagination support. - Parameters: - project_id (required) - GitLab project ID - mr_iid (required) - Mergeupdate_merge_request_comment — Update an existing merge request comment. - Parameters: - project_id (required) - GitLab project ID - mr_iid (required) - Merge request IID -reply_to_merge_request_comment — Reply to an existing discussion thread. - Parameters: - project_id (required) - GitLab project ID - mr_iid (required) - Merge request IID -update_merge_request — Update merge request title and/or description. - Parameters: - project_id (required) - GitLab project ID - mr_iid (required) - Merge request IIDapply_suggestion — Apply a single code change suggestion. - Parameters: - suggestion_id (required) - Suggestion ID to apply - Returns: Confirmation with commitConfiguration is passed through the environment: GITLAB_URL, GITLAB_PRIVATE_TOKEN, GITLAB_REVIEW_MCP_SHOW_LOGS. Treat anything key-shaped as a real credential — scope it to the minimum the server needs, and rotate it if it ever lands in a shared config.
The server ships on PyPI as gitlab-review-mcp, so your MCP client can launch it on demand — there is no separate build step. Add the server block to your client's configuration, restart it, and the tools register themselves.
Among the developer tooling options, the useful question is rarely "what can it do" but "what does it cost you to run" — permissions, credentials, and how much of your context its toolset consumes. Gitlab's toolset — search_projects, list_merge_requests, get_merge_request and 11 more — is a fair guide to whether it matches your workflow.
This entry was verified against Gitlab's own documentation before publication; SyncDev keeps the directory reviewed rather than auto-generated.
| Tool | What it does |
|---|---|
| search_projects | Search for GitLab projects by keyword with pagination support. |
| list_merge_requests | List merge requests for a specific project with pagination support. - **Parameters**: - project_id (required) - GitLab project ID - state (optional) - Filter by state: opened, closed, merged, all - author_id (optional) - |
| get_merge_request | Fetch detailed merge request information. - **Parameters**: - project_id (required) - GitLab project ID - mr_iid (required) - Merge request IID (e.g., !123) - **Returns**: MR details including title, description, state, |
| get_merge_request_diffs | Get code changes (diffs) for a merge request with pagination support. - **Parameters**: - project_id (required) - GitLab project ID - mr_iid (required) - Merge request IID - page (optional) - Page number for pagination ( |
| add_merge_request_comment | Add a general comment to a merge request. - **Parameters**: - project_id (required) - GitLab project ID - mr_iid (required) - Merge request IID - comment (required) - Comment text - **Returns**: Confirmation with comment |
| add_merge_request_line_comment | Add a line-specific comment to merge request code. - **Parameters**: - project_id (required) - GitLab project ID - mr_iid (required) - Merge request IID - file_path (required) - File path in repository - line_number (req |
| get_merge_request_comments | Get all comments and discussions from a merge request, including suggestions, with pagination support. - **Parameters**: - project_id (required) - GitLab project ID - mr_iid (required) - Merge request IID - page (optiona |
| get_merge_request_commits | Get all commits in a merge request with pagination support. - **Parameters**: - project_id (required) - GitLab project ID - mr_iid (required) - Merge request IID - page (optional) - Page number for pagination (default: 1 |
| update_merge_request_comment | Update an existing merge request comment. - **Parameters**: - project_id (required) - GitLab project ID - mr_iid (required) - Merge request IID - note_id (required) - Note ID to update - comment (required) - Updated comm |
| reply_to_merge_request_comment | Reply to an existing discussion thread. - **Parameters**: - project_id (required) - GitLab project ID - mr_iid (required) - Merge request IID - discussion_id (required) - Discussion ID to reply to - comment (required) - |
| update_merge_request | Update merge request title and/or description. - **Parameters**: - project_id (required) - GitLab project ID - mr_iid (required) - Merge request IID - title (optional) - New title - description (optional) - New descripti |
| apply_suggestion | Apply a single code change suggestion. - **Parameters**: - suggestion_id (required) - Suggestion ID to apply - **Returns**: Confirmation with commit ID |
| apply_suggestions | Apply multiple code change suggestions in batch. - **Parameters**: - suggestion_ids (required) - List of suggestion IDs to apply - **Returns**: Confirmation with commit ID and applied suggestion IDs |
| get_issue | Fetch detailed issue information. - **Parameters**: - project_id (required) - GitLab project ID - issue_iid (required) - Issue IID (e.g., #123) - **Returns**: Issue details including title, description, state, assignees, |
{
"mcpServers": {
"gitlab-review-mcp": {
"command": "uvx",
"args": ["--no-progress", "gitlab-review-mcp"],
"env": {
"GITLAB_URL": "https://gitlab.com",
"GITLAB_PRIVATE_TOKEN": "your-token-here",
"GITLAB_REVIEW_MCP_SHOW_LOGS": "false"
}
}
}
}Configuration as documented by the project. Restart the client after saving.
| Variable | Description | Required |
|---|---|---|
| GITLAB_URL | Endpoint or connection string the server talks to. | Yes |
| GITLAB_PRIVATE_TOKEN | Credential the server authenticates with. | Yes |
| GITLAB_REVIEW_MCP_SHOW_LOGS | Configuration value read at startup. | Optional |
Kill hallucinated APIs — version-accurate, up-to-date library documentation injected straight into context.
Microsoft's official browser automation server — drive a real browser through the accessibility tree, no screenshots needed.
GitHub's official server — repos, issues, pull requests, Actions and code security, straight from your assistant.
Issue tracking at the speed of conversation — Linear's official hosted server with OAuth and zero install.
Local repository surgery — status, diffs, commits, branches and history for any repo on disk.
Timezone sanity for AI — current time anywhere and correct conversions, without the model doing date math.