Code Review Model Context Protocol (CR-MCP) server for managing GitHub pull request comments
Two tools with explicit Zod schemas and descriptions, but significant gaps in parameter clarity and output documentation. fix_pr_comments has a clear, verb-led name and reasonable description (127 chars), but mark_comments_as_handled uses a compound verb ('mark...as') and lacks clarity on when it's safe to call. No output schema documented. Error handling present but generic. Schemas are visible and well-formed, but descriptions could be more LLM-optimized.
Fetching all of the comments from a GitHub pull request, filtering based on status and author and returning them in a simplified format that makes it easier to handle them. you will need to provide ONLY the repo name and branch name.
Mark GitHub PR comments as handled by replying with a resolution summary and adding a reaction, CAN NOT BE RUN WITHOUT AN EXPLICIT REQUEST FROM THE USER
Compound verb naming: 'mark_comments_as_handled' uses 'mark...as' structure, which is less clear than a single action verb like 'resolve_comments' or 'close_comments'. LLMs parse intent from the first verb, compound structures add ambiguity.
Example values embedded in descriptions: 'e.g., "Removed debug code", "Improved code readability"' and reaction examples like '+1', 'laugh', 'heart' are included in parameter descriptions. LLMs tend to reuse examples literally rather than adapt to context. Use enum constraints instead.
No output schema documented. Both tools return JSON responses, but the structure of returned PR comments (fields, types, pagination) is not formally specified. LLMs cannot plan downstream calls without knowing what fields to expect.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 50 | <=2025-11-25 | v2 |
Reaction parameter lacks enum constraint. Description lists valid values as free-form text ('+1', '-1', 'laugh', etc.) instead of a formal enum. This invites hallucinated reaction values.
Parameter descriptions are verbose (100+ chars) without formal constraints. 'Optional: A concise summary (3-15 words)...' should be paired with a maxLength constraint in the schema, not just prose.