MCP server for Jira Cloud integration, providing tools to search, create, update, delete issues, manage sprints, boards, and more
jira-mcp demonstrates solid foundational quality with 25 well-named tools covering a comprehensive Jira API surface. All tools have descriptions (avg ~120 chars) and explicit JSON schemas. However, several patterns are underutilized: parameter descriptions lack format/constraint details (e.g., 'JQL query string' without examples or limits), output schemas are not documented, error handling lacks recovery guidance, and destructive operations (create_issue, delete_issue, create_child_issue) rely on a 'confirm' boolean rather than structured confirmation patterns. Tool composition is good (single responsibility), but some tools could benefit from richer parameter validation hints and clearer chaining metadata.
Add a comment to a Jira issue. The body string is converted to ADF: paragraph breaks per line, #/##/### headings, - or * bullets, - [ ]/- [x] checkboxes, and **bold**; a pre-built ADF object is embedded verbatim.
Add a worklog to a Jira issue.
Assign a Jira issue to a user.
Create a child issue (subtask) under a parent Jira issue.
Create a new Jira issue. The description string is converted to ADF: paragraph breaks per line, #/##/### headings, - or * bullets, - [ ]/- [x] checkboxes, and **bold**; a pre-built ADF object is embedded verbatim. The optional fields object supports shapes like parent={"key":"PROJ-1"} and labels=["tag"]; set assignee via the separate jira_assign_issue tool, or fields={"assignee":{"accountId":"..."}}.
Output schemas not documented. Tools return Jira API responses but LLMs cannot plan downstream calls without knowing field names, types, and availability. Pagination metadata (total_count, next_cursor) not specified.
Parameter descriptions lack format/constraint details. 'JQL query string' does not explain valid syntax, length limits, or common patterns. 'Transition id' does not explain how to discover valid IDs (must call jira_get_transitions first). LLMs cannot self-correct invalid input.
Destructive operations (jira_create_issue, jira_delete_issue, jira_create_child_issue) use a 'confirm' boolean parameter. This is fragile, LLMs may omit the parameter or misunderstand its semantics. No structured confirmation flow or dry-run support.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | <=2025-11-25 | v2 |
Create a link between two Jira issues.
Delete a Jira issue.
Get the active sprint for a Jira Agile board.
Get linked pull requests, branches, and commits for a Jira issue.
Get a Jira issue by key.
Get the change history (changelog) of a Jira issue.
Get issues linked to a given Jira issue.
Get a Jira Agile sprint by its ID.
List available transitions for a Jira issue.
Get a Jira project version.
List Jira Agile boards, optionally filtered by project key.
List versions in a Jira project.
List Jira projects accessible to the authenticated user.
List sprints for a Jira Agile board.
List available statuses for a Jira project.
List Jira users, optionally filtered by query.
Search Jira issues using JQL.
Search for a sprint by name on a Jira Agile board.
Transition a Jira issue to a new status.
Update an existing Jira issue. The description string is converted to ADF: paragraph breaks per line, #/##/### headings, - or * bullets, - [ ]/- [x] checkboxes, and **bold**; a pre-built ADF object is embedded verbatim. The optional fields object supports shapes like parent={"key":"PROJ-1"} and labels=["tag"]; set assignee via the separate jira_assign_issue tool, or fields={"assignee":{"accountId":"..."}}.
Error handling not visible in source. No evidence of recovery guidance (e.g., 'User not found. Try jira_search_users() first.'), error categorization (retryable vs fatal), or actionable error messages. Agents cannot self-correct on failures.
Tool annotations (readOnlyHint, destructiveHint, idempotentHint) not present. LLMs cannot distinguish safe reads from destructive writes without explicit hints, increasing risk of accidental data loss.