MCP server that wraps the GitLab Duo CLI as a clean, fault-tolerant duo_review tool for AI coding agents.
Single tool 'duo_review' has a well-crafted description (280+ chars) explaining what it does, when to use it, and what it returns. Input schema is complete with 7 parameters, all typed and described. Output schema (ReviewStructuredResult) is explicitly documented with typed fields. Error handling includes actionable recovery guidance (e.g., 'try search_users()'). However, tool naming lacks a clear action verb prefix (should be 'run_duo_review' or 'review_code'), and some parameter descriptions could be more prescriptive about constraints (e.g., timeoutMs range, model enum values). No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present.
Run a code review with the GitLab Duo CLI and return a normalized, fault-tolerant result. Use this to get a 'second opinion' review of a diff or set of files: pass a unified `diff` (and/or `files`/`instructions`), and you get back a stable JSON structure with a `summary` and a list of `issues` (type, severity, file, line, message, suggestion). If Duo answers with prose instead of JSON, the result is still returned with `degraded: true` and the raw text in `summary`/`raw`. Your agent can then act on the issues (e.g. write fixes).
Tool name 'duo_review' lacks action verb prefix. Should be 'run_duo_review' or 'review_code' to signal intent clearly to LLMs.
Parameter 'model' accepts free-form string with no enum constraint. Should enumerate valid Duo models (e.g., 'gpt-4', 'claude-3') to prevent hallucinated values.
Parameter 'timeoutMs' lacks min/max bounds in description. Should specify range (e.g., 1000 - 300000 ms) to prevent absurd values.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) present. 'duo_review' is read-only and idempotent, should declare these hints for agent planning.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2025-06-18+ | v2 |
Output schema includes 'raw' field (raw Duo output) that may contain unstructured prose. Should document when this field is populated and how agents should interpret it.