MCP server for GitLab merge request reviews
Strong foundation with 27 well-named tools following verb_noun convention. All tools have descriptions (avg 95 chars) and input schemas with typed parameters. Descriptions are functional but brief, most lack WHEN/WHY context or dependency hints. Parameter descriptions are present but generic; many lack format constraints or validation guidance. Output schemas are not documented in visible code. Error handling is minimal, no recovery guidance or categorization. Security is solid (no secrets in params, env-based auth). Composition is good (single responsibility, chainable IDs), but some tools could batch operations.
Add a label to a merge request
Add a review comment to a merge request and track it in the review session
Approve a merge request
Reply to a discussion thread on a merge request
Create a comment on a merge request
Delete a comment from a merge request
End the current review session and mark it as completed
Get recurring review findings for an MR author across past reviews
Output schemas not documented in visible code. LLMs cannot plan downstream tool calls or extract required fields without knowing response structure.
Descriptions lack WHEN/WHY context and dependency hints. E.g., 'Get details of a merge request' does not explain when to use this vs get_mr_diff or get_mr_commits, or that project_id can be omitted if set_setting was called first.
No error handling guidance. Tools do not document what errors are retryable, user-fixable, or fatal. E.g., approve_mr with stale SHA should guide LLM to retry with fresh SHA.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | <=2025-11-25 | v2 |
Get the log output (trace) of a CI/CD job
Get details of a merge request by IID or source branch
Get changes to a merge request since a specific commit
Get all commits in a merge request
Get the diff for a merge request with optional file filtering
Get all discussions (comments and threads) on a merge request
Get the content of a file from a specific branch or commit
Get all pipelines for a merge request
Get jobs from a pipeline, optionally filtered by status
Get all labels available in a project
Get the status of the current review session
Get a configuration setting value
List merge requests in a project with optional filtering and pagination
Remove a label from a merge request
Resolve or unresolve a discussion thread on a merge request
Set all labels on a merge request (replaces existing labels)
Set a configuration setting value
Start a new review session for a merge request
Remove your approval from a merge request
Parameter descriptions are generic and lack format/constraint guidance. E.g., 'Regex patterns to exclude files' does not explain escaping rules or whether patterns are anchored. 'Minimum number of times' lacks range (1 - 1000?).
No pagination guidance in list_merge_requests description. LLMs need to know max per_page (100), default (20), and whether to iterate or cap results.