gitlab-review-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GITLAB_URL | Yes | GitLab instance URL | https://gitlab.com |
| GITLAB_PRIVATE_TOKEN | Yes | Your GitLab personal access token | |
| GITLAB_REVIEW_MCP_SHOW_LOGS | No | Set to 'true' to enable detailed logging | false |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_projectsB | Search for GitLab projects by keyword. The search performs substring matching across project name, path, namespace, and description. Note: Does not support regex or exact matching - it's a simple keyword search. Args: search: Search keyword (substring match in name/path/namespace/description) owned: Only return projects owned by the authenticated user membership: Only return projects the user is a member of (default: True) page: Page number for pagination (default: 1) per_page: Number of results per page (default: 20, max: 100) order_by: Sort by field: 'id', 'name', 'created_at', 'star_count', 'last_activity_at' (default) sort: Sort order: 'asc' or 'desc' (default) Returns: Formatted string with project search results including pagination info |
| list_merge_requestsA | List merge requests for a specific project. Args: project_id: GitLab project ID state: Filter by state ('opened', 'closed', 'merged', 'all') author_id: Filter by author user ID assignee_id: Filter by assignee user ID labels: Comma-separated label names (e.g., "bug,urgent") page: Page number for pagination (default: 1) per_page: Number of results per page (default: 20, max: 100) Returns: Formatted string with merge request list including pagination info |
| get_merge_requestA | Fetch merge request details. Args: project_id: GitLab project ID mr_iid: Merge request IID (internal ID shown in GitLab UI as !123) Returns: Formatted string with MR details |
| get_merge_request_diffsA | Get merge request diffs showing code changes. Args: project_id: GitLab project ID mr_iid: Merge request IID page: Page number for pagination (default: 1) per_page: Number of results per page (default: 20, max: 100) Returns: Formatted string with diff information including pagination info |
| get_merge_request_commentsA | Get all comments/discussions from a merge request, including suggestions. Args: project_id: GitLab project ID mr_iid: Merge request IID page: Page number for pagination (default: 1) per_page: Number of results per page (default: 20, max: 100) Returns: Formatted string with all comments, including note_id, discussion_id, suggestions, and pagination info |
| get_merge_request_commitsA | Get commits in a merge request. Args: project_id: GitLab project ID mr_iid: Merge request IID page: Page number for pagination (default: 1) per_page: Number of results per page (default: 20, max: 100) Returns: Formatted string with commit list and pagination info |
| add_merge_request_commentC | Add a general comment to a merge request. Args: project_id: GitLab project ID mr_iid: Merge request IID comment: Comment text to add Returns: Confirmation message with comment details |
| update_merge_request_commentC | Update an existing merge request comment. Args: project_id: GitLab project ID mr_iid: Merge request IID note_id: Note ID to update comment: Updated comment text Returns: Confirmation message with updated comment details |
| reply_to_merge_request_commentA | Reply to an existing merge request discussion/comment. Args: project_id: GitLab project ID mr_iid: Merge request IID discussion_id: Discussion ID to reply to comment: Reply comment text Returns: Confirmation message with reply details |
| add_merge_request_line_commentB | Add a line-specific comment to a merge request diff. Args: project_id: GitLab project ID mr_iid: Merge request IID file_path: Path to the file in the repository line_number: Line number in the new version of the file comment: Comment text to add base_sha: Base commit SHA (from diff) head_sha: Head commit SHA (from diff) start_sha: Start commit SHA (from diff) old_line: Line number in the old version (optional, for modified lines) Returns: Confirmation message with comment details |
| get_issueA | Fetch issue details. Args: project_id: GitLab project ID issue_iid: Issue IID (internal ID shown in GitLab UI as #123) Returns: Formatted string with issue details |
| update_merge_requestC | Update merge request title and/or description. Args: project_id: GitLab project ID mr_iid: Merge request IID title: New title (optional) description: New description (optional) Returns: Confirmation message with updated MR details |
| apply_suggestionA | Apply a single suggestion to the merge request. Args: suggestion_id: Suggestion ID to apply Returns: Confirmation message with apply details |
| apply_suggestionsB | Apply multiple suggestions in batch to the merge request. Args: suggestion_ids: List of suggestion IDs to apply Returns: Confirmation message with batch apply details |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 14 tools
The tools are mostly distinct: retrieval, listing, commenting, and suggestion application each have clear targets. The only potential confusion is apply_suggestion vs apply_suggestions, but the singular/batch distinction is documented.
All tools follow a snake_case verb_noun pattern with clear prefixes like get_, list_, search_, add_, update_, reply_, and apply_. The consistent structure makes the action and resource predictable.
14 tools is within the ideal range for a focused GitLab MR review server. Each tool addresses a specific aspect of browsing, updating, or commenting on merge requests without bloat.
The surface covers the core MR review workflow: fetching MRs/diffs/commits/comments, posting and updating comments, and applying suggestions. Missing capabilities like deleting comments, resolving threads, or approving MRs are minor gaps rather than fatal omissions.