@mcpio/jira
Model Context Protocol (MCP) server for Jira Cloud API v3 with automatic Markdown-to-ADF conversion
Versions
2.8.0latest2.7.02.6.22.6.12.6.0+ show 21 moreshow less
2.5.02.4.02.3.112.3.102.3.92.3.82.3.72.3.62.3.52.3.42.3.32.3.22.3.12.3.02.2.22.2.12.2.02.1.12.1.02.0.01.0.0Tools 75
jira_create_component Create a project component. Components are the values the components field accepts on create and update.
jira_list_filters Search saved Jira filters (by name, owner). Useful to retrieve team-defined JQL queries.
jira_get_filter Get a saved filter by ID, including its JQL, description, and owner.
jira_search_by_filter Execute a saved filter's JQL and return matching issues.
jira_get_attachments Get list of attachments on a Jira issue.
jira_add_attachment Attach a local file to a Jira issue.
jira_download_attachment Download an attachment from Jira to a local file. Destination path must be within cwd or user home.
jira_view_attachment Fetch an image attachment and return it inline so the model can see it (no file written). Image attachments only (mimeType image/*), capped at 5MB. For non-images or larger files use jira_download_attachment. Get the attachmentId from jira_get_attachments.
jira_delete_attachment Permanently delete an attachment. Attachment ids come from jira_get_attachments. This cannot be undone — confirm with the user first.
jira_create_issue Create a new Jira issue. Description supports Markdown (auto-converted to ADF). To create an Epic use jira_create_epic. Call jira_get_create_fields(projectKey, issueType) first when the screen is unknown — it returns every field with required, type and allowedValues, which removes the guesswork (Bug screens commonly require Affects versions and other mandatory fields). Optional fields are only sent when provided, so nothing is rejected for not being on the screen. On a 400 the response carries missingRequired and allowedValues. Set dryRun to validate the payload without creating anything.
jira_get_issue Get details of a Jira issue. The default response includes status, resolution, assignee, priority, labels, story points, parent, components, versions, fixVersions, dueDate and timetracking. Set includeCustomFields to also get every populated custom field with its human-readable name (rich-text ones rendered as Markdown), or pass fields to select an exact set. Set includeImages to return embedded/attached images inline.
jira_update_issue Update fields and/or status of an issue. status is matched against the target status of each available transition first (so "In Progress" works even when the transition is named "Start work"), then against transition names, case-insensitively. Use transitionId for an exact transition and transitionFields when the transition screen requires input (e.g. an estimate) — jira_list_transitions with includeFields lists what each one needs. On a 400 the response carries missingRequired and allowedValues.
jira_delete_issue_link Remove a link between two issues. The linkId comes from the links array returned by jira_get_issue, not from the issue keys.
jira_link_issues Create a link between two issues. The inward side uses the linkType.inward phrasing ("is blocked by", "duplicates"), the outward side uses linkType.outward ("blocks", "is duplicated by"). If unsure which linkType names exist in this instance, call jira_get_link_types. Call sequentially (2-3 at a time) to avoid permission prompt storms in Claude Code.
jira_delete_issue Permanently delete a Jira issue. This cannot be undone and there is no trash to restore from — confirm with the user before calling it. An issue that has subtasks is rejected unless deleteSubtasks is set, which deletes them too.
jira_create_subtask Create a subtask under a parent issue. Description supports standard Markdown, automatically converted to ADF. The subtask issue type is discovered from the project (handles "Sub-task" vs "Subtask" and localized names) unless issueType is given.
jira_assign_issue Assign or unassign a user. Jira uses accountId (not email or username). To find accountId: call jira_search_users by name/email, or jira_get_myself for the current user. Pass null accountId to unassign.
jira_get_changelog Get the change history of a Jira issue (who changed what and when).
jira_clone_issue Clone an existing Jira issue with a new summary. Copies issue type, description, labels, priority, story points, components and versions from the source. Custom fields are NOT copied — supply any the target screen requires via customFields. Any field passed explicitly overrides the copied value.
jira_get_edit_fields Get the edit screen for one existing issue: every field you may change, with required flags, types and allowed values. This is the update-time mirror of jira_get_create_fields, and the way to find out why a field is rejected on jira_update_issue.
jira_get_remote_links List web links attached to an issue — pull requests, Confluence pages, dashboards, anything outside Jira. These are separate from issue-to-issue links, which jira_get_issue returns.
jira_add_remote_link Attach a web link to an issue, e.g. the pull request that implements it or the Confluence page that specifies it.
jira_delete_remote_link Remove a web link from an issue. Link ids come from jira_get_remote_links.
jira_add_worklog Add a worklog entry (time tracking). `timeSpent` uses Jira units: w (week), d (day, 8h by default), h (hour), m (minute). `started` must be ISO 8601 with millisecond and timezone offset, e.g. "2024-01-15T09:00:00.000+0000" (NOT a Z-terminated ISO). If omitted, server uses now.
jira_get_worklogs Get worklog entries from a Jira issue.
jira_update_worklog Update an existing worklog entry on a Jira issue. All fields except issueKey/worklogId are optional - omit to leave unchanged.
jira_delete_worklog Delete a worklog entry from a Jira issue. Permanent.
jira_get_fields Get all available Jira fields. Useful for finding custom field IDs.
jira_get_issue_types Get all available issue types for a project. Names are rendered in the Jira account language — prefer the id when passing a type on. For the fields a given type requires, call jira_get_create_fields.
jira_get_create_fields Get the create screen definition for one issue type: every field with fieldId, name, required, type and allowedValues, plus a requiredFields shortlist. This is the second createmeta step (jira_get_issue_types is the first) and it is what tells you which fields are mandatory and which values they accept. Call it before jira_create_issue on an unfamiliar project or issue type instead of guessing.
jira_get_priorities Get all available issue priorities. Returns id first: the name is rendered in the Jira account language and Jira only accepts the canonical English name or the id on create/update, so pass the id.
jira_get_link_types Get all available issue link types.
jira_get_project_statuses Get every status available per issue type in a project, with its status category. Use it to write correct JQL and to know which statuses exist before trying to transition to one.
jira_update_component Update a project component. Component ids come from jira_get_project_components.
jira_list_labels List labels that already exist in this Jira instance. Use it to reuse an existing label instead of inventing a near-duplicate.
jira_get_my_permissions Check what the authenticated user is allowed to do, optionally scoped to a project or an issue. Call it before a bulk operation to fail early with a clear reason instead of collecting permission errors issue by issue.
jira_bulk_update_issues Apply the same field changes to many issues. Iterates client-side with a per-issue result, because Jira has no stable bulk edit endpoint. Use addLabels/removeLabels to adjust labels without destroying the ones already there; the labels argument replaces the whole list on every issue.
jira_bulk_create_issues Create multiple Jira issues at once. Descriptions support Markdown, automatically converted to ADF.
jira_bulk_transition_issues Apply the same status transition to multiple issues. Iterates client-side; failures are collected per issue and returned. status is matched against each transition target status first, then transition names, case-insensitively — so "In Progress" works even where the transition is called "Start work". Use transitionFields when the transition screen requires input.
jira_add_comment Add a comment to a Jira issue. Supports standard Markdown, automatically converted to ADF.
jira_update_comment Update an existing comment on a Jira issue. Supports standard Markdown, automatically converted to ADF.
jira_delete_comment Delete a comment from a Jira issue.
jira_get_comments Get comments from a Jira issue.
jira_list_transitions Get available status transitions for a Jira issue. Each entry has the transition id and name plus the target status under "to" — a workflow can name a transition "Start work" while its target status is "In Progress". Set includeFields to also get the fields each transition screen accepts, with required flags and allowed values, for passing via jira_update_issue transitionFields.
jira_search_users Search for Jira users by name or email. Returns accountId needed for jira_assign_issue.
jira_get_myself Get the authenticated user (accountId, displayName, email, timezone, locale). Useful to know who the MCP server is acting as.
jira_add_watcher Subscribe a user to watch an issue (receive notifications on changes).
jira_remove_watcher Unsubscribe a user from watching an issue.
jira_get_watchers List all watchers on an issue.
jira_get_project_info Get project information
jira_list_projects List all accessible Jira projects.
jira_get_project_components Get components of a Jira project.
jira_get_project_versions Get versions (releases) of a Jira project.
jira_create_version Create a project version (release). Versions are what fixVersions and affects versions point at, so create one here instead of sending the user to the Jira UI.
jira_update_version Update a project version. Releasing a version is an update with released set to true (and usually a releaseDate), so there is no separate release tool. Version ids come from jira_get_project_versions.
jira_delete_version Permanently delete a project version. Issues referencing it keep their other fields, but lose this version unless you pass a replacement. This cannot be undone -- confirm with the user first.
jira_delete_component Permanently delete a project component. Pass moveIssuesTo to reassign its issues to another component, otherwise they simply lose it. This cannot be undone -- confirm with the user first.
jira_search_issues Search for Jira issues using JQL. Uses token-based pagination — pass nextPageToken from previous response to get next page.
jira_get_user_issues Get all issues assigned to a specific user.
jira_list_boards List all Scrum/Kanban boards.
jira_list_sprints List sprints for a board.
jira_get_sprint Get details of a sprint including all issues in it.
jira_move_to_sprint Move one or more issues to a sprint.
jira_list_epics List all epics in a project via JQL (issuetype = Epic).
jira_get_epic Get epic details via Agile API (name, summary, color, done status).
jira_get_epic_issues Get all child issues linked to an epic.
jira_get_board_epics List epics on a Scrum/Kanban board, optionally filtered by done status.
jira_add_issues_to_epic Link one or more issues to an epic. Uses Agile API bulk move.
jira_remove_issue_from_epic Remove issues from their current epic (unlink).
jira_create_epic Create a new epic. Convenience wrapper that sets issueType to Epic.
jira_create_sprint Create a sprint on a Scrum board. A new sprint starts in the "future" state; use jira_update_sprint with state "active" to start it. Board ids come from jira_list_boards.
jira_update_sprint Update a sprint: rename it, set the goal or dates, or move it through the workflow with state ("future" -> "active" -> "closed"). Starting a sprint requires startDate and endDate to be set. Closing a sprint moves unfinished issues to the backlog in Jira, so confirm before setting state to "closed".
jira_delete_sprint Permanently delete a sprint. Issues in it are moved to the backlog. This cannot be undone -- confirm with the user first.
jira_rank_issues Reorder issues in the backlog or on a board by placing them before or after a reference issue. This is what changes the order sprint planning reads as priority.
jira_move_to_backlog Move issues out of their sprint and back to the backlog. The inverse of jira_move_to_sprint.
Permissions 2
shell high env_vars low