MCP server for interacting with Jira, enabling ticket fetching and searching via JQL queries
Two tools with basic schemas and descriptions, but significant gaps in parameter documentation, output schema clarity, and error handling guidance. fetch_ticket lacks parameters for include_comments/include_attachments in the schema (only hardcoded to true in implementation). search_tickets has minimal parameter descriptions. No output schemas documented. Error handling returns plain text strings without recovery guidance. Descriptions are adequate (100-150 chars) but lack WHEN/WHY context. No tool annotations (readOnlyHint, idempotentHint). Naming is clear (verb_noun pattern) but parameters lack type hints and constraints.
Fetches detailed information about a Jira ticket, including basic fields, custom fields, and optionally comments and attachments.
Search for Jira tickets using JQL (Jira Query Language)
fetch_ticket schema missing include_comments and include_attachments parameters. Implementation hardcodes both to true, but schema does not expose these options to the LLM. LLM cannot control what data is fetched.
No output schemas documented for either tool. LLMs cannot plan downstream tool calls or extract structured data. Both tools return JSON strings, but the structure is not formally declared.
Error responses are plain text strings without recovery guidance. 'Error: Failed to fetch Jira ticket data: {str(e)}' gives LLM no actionable next step. Should categorize errors (retryable vs user-fixable) and suggest alternatives.
search_tickets maxResults parameter lacks min/max constraints and rationale. Unbounded integers let LLMs pass absurd values (e.g., 10000) that waste tokens and API quota. Default of 50 is reasonable but not justified in description.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | 2026-07-28+ | v2 |
No tool annotations (readOnlyHint, idempotentHint, destructiveHint). Both tools are read-only and idempotent, but LLM cannot infer this from the schema. Should declare readOnlyHint=true for both.