Atlassian intelligence →
Association is based on retained identity fields; it does not by itself prove first-party publication.
A one-click Jira integration for AI coding tools like Claude Desktop, Cursor, and VS Code, enabling create, read, update, move, comment, and search operations on Jira tickets directly from the assistant
Detailed security scan evidence is not public for this MCP yet. Public identity, registry metadata, and independently observed protocol inventory remain available.
Installation and connection instructions are shown only when supported by retained package, repository, or endpoint evidence.
No verified installation or connection method is available in the retained evidence yet.
| Canonical slug | jira-mcp-1e882a66 | Deployment | Local Only |
|---|---|---|---|
| Canonical package | — | Repository | southocean/jira-mcp |
| First published | — | Latest release | — |
| Last security verification | — | Classification confidence | 35% |
| Publication | Draft | Official distribution | Not verified |
| Channel | Identifier | Current version | Versions | Source |
|---|---|---|---|---|
| source_git | southocean/jira-mcp | b5b4eb2b070a098e606e9e025d260c0d9857a4d9 | 1 | Repository |
| Package | Version | Published / observed | Inventory | Security scan |
|---|---|---|---|---|
| source_gitsouthocean/jira-mcp | b5b4eb2b070a098e606e9e025d260c0d9857a4d9Current | Aug 25, 2026 | 13 toolsSucceeded · 0 resources · 0 prompts | Evidence restricted |
Independently scan the exact version your agents use, receive alerts when its risk changes, and investigate every finding with retained version evidence.
No public current-version evidence is available yet.
| Tool | Category | Annotations | Risk |
|---|---|---|---|
add_commentAdd a comment to a Jira ticket.Input schema{
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "Ticket key like ABC-341 or just 341"
},
"comment": {
"type": "string"
}
},
"required": [
"key",
"comment"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — | |
add_labelAdd a label to a Jira ticket.Input schema{
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "Ticket key like ABC-341 or just 341"
},
"label": {
"type": "string",
"description": "Label to add, e.g. 'ai-inprogress'"
}
},
"required": [
"key",
"label"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — | |
convert_to_subtaskConvert one or more EXISTING standard issues (Task/Story/Bug) into Sub-tasks nested under a parent, in the same project. This is the only way to nest an existing ticket — Jira's edit API refuses an issue-type change to subtask, so this uses the bulk-move API (the same operation as the UI 'Move'). Notifications are always sent (disabling them needs elevated permissions). Returns the per-issue result.Input schema{
"type": "object",
"properties": {
"keys": {
"type": "string",
"description": "One or more ticket keys to convert, comma- or space-separated. E.g. 'ABC-371, ABC-373'"
},
"parent": {
"type": "string",
"description": "Parent ticket key the subtasks nest under (e.g. 'ABC-370'). Must be a standard-level issue (Task/Story/Feature/Bug) — not an Epic and not itself a subtask."
}
},
"required": [
"keys",
"parent"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — | |
create_ticketCreate a Jira ticket. Uses your configured default project unless `project` is given. If no default is set and `project` is omitted, this errors asking which project to use. Returns the ticket key (e.g. ABC-341).Input schema{
"type": "object",
"properties": {
"summary": {
"type": "string",
"description": "Short title of the ticket"
},
"description": {
"type": "string",
"description": "Detailed description"
},
"type": {
"type": "string",
"enum": [
"task",
"bug",
"feature",
"subtask"
],
"default": "task"
},
"project": {
"type": "string",
"description": "Project key to create in, e.g. 'ABC'. Omit to use the configured default project. Required (ask the user) when no default is configured."
},
"estimate": {
"type": "string",
"description": "Time estimate e.g. '2h', '1d'"
},
"assignee": {
"type": "string",
"description": "Who to assign — a full name, email, or 'me'/'unassigned'. Omit to leave unassigned. Resolved to a Jira account via the project's assignable-user search."
},
"parent": {
"type": "string",
"description": "Parent ticket key (e.g. 'ABC-370'). Required for type 'subtask' (parent must be a standard issue: Task/Story/Feature/Bug). For a Task/Story/Feature/Bug the parent must be an Epic — same-level parenting (e.g. Task under Feature) is rejected by Jira."
},
"move_to_in_progress": {
"type": "boolean",
"description": "Immediately move to In Progress after creation"
}
},
"required": [
"summary"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — | |
download_attachmentDownload a Jira attachment by id to a local directory (created if missing). Returns the saved absolute path.Input schema{
"type": "object",
"properties": {
"id": {
"type": "string",
"description": "Attachment id, e.g. '19014' — from list_attachments"
},
"outDir": {
"type": "string",
"description": "Directory to save into; created (recursively) if it doesn't exist"
},
"filename": {
"type": "string",
"description": "Override filename; defaults to the attachment's original filename"
}
},
"required": [
"id",
"outDir"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — | |
get_commentsGet comments on a Jira ticket: author, timestamp, and body flattened from ADF to plain text.Input schema{
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "Ticket key like ABC-341 or just 341"
},
"max": {
"type": "number",
"default": 50,
"description": "Max comments to return"
}
},
"required": [
"key"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — | |
get_ticketGet details of a Jira ticket by key or number. E.g. 'ABC-341' or just '341'.Input schema{
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "Ticket key like ABC-341 or just the number 341"
}
},
"required": [
"key"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — | |
list_attachmentsList attachments on a Jira ticket: id, filename, mimeType, size, created, author.Input schema{
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "Ticket key like ABC-341 or just 341"
}
},
"required": [
"key"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — | |
move_ticketMove a Jira ticket to a new status.Input schema{
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "Ticket key like ABC-341 or just 341"
},
"status": {
"type": "string",
"enum": [
"todo",
"in-progress",
"qa",
"vqa",
"done"
]
}
},
"required": [
"key",
"status"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — | |
move_ticket_to_projectMove one or more Jira tickets to a DIFFERENT project (re-keys them, e.g. BUG-99 -> ABC-358). This is the cross-project 'Move' operation, not a status change — use move_ticket for status. Requires Move Issues permission on the source project. Statuses/fields the target workflow doesn't share are remapped to target defaults. Notifications are always sent (disabling them requires elevated permissions). Returns the old->new key mapping.Input schema{
"type": "object",
"properties": {
"keys": {
"type": "string",
"description": "One or more ticket keys, comma- or space-separated. E.g. 'BUG-98, BUG-99'"
},
"target_project": {
"type": "string",
"description": "Target project key, e.g. 'ABC'. Defaults to your configured default project if one is set; required otherwise."
}
},
"required": [
"keys"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — | |
remove_labelRemove a label from a Jira ticket.Input schema{
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "Ticket key like ABC-341 or just 341"
},
"label": {
"type": "string",
"description": "Label to remove, e.g. 'ai-inprogress'"
}
},
"required": [
"key",
"label"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — | |
search_ticketsSearch Jira tickets using a plain-English query or JQL.Input schema{
"type": "object",
"properties": {
"query": {
"type": "string",
"description": "Plain text like 'my open bugs' or JQL like 'project=ABC AND status=QA'"
},
"max": {
"type": "number",
"default": 10
}
},
"required": [
"query"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — | |
update_ticketUpdate fields on an existing Jira ticket.Input schema{
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "Ticket key like ABC-341 or just 341"
},
"summary": {
"type": "string"
},
"description": {
"type": "string"
},
"estimate": {
"type": "string",
"description": "e.g. '2h', '1d'"
},
"assignee": {
"type": "string",
"description": "A full name, email, 'me', or 'unassigned'. Resolved to a Jira account via the project's assignable-user search."
},
"parent": {
"type": "string",
"description": "Parent ticket key (e.g. 'ABC-370'). Jira hierarchy applies: only an Epic can parent a Task/Story/Feature, and only a standard issue can parent a Subtask — same-level parenting is rejected."
},
"sprint": {
"type": "number",
"description": "Sprint id (integer) to place the ticket in, e.g. the current active sprint. Find it via JQL 'sprint in openSprints()'. Required after a cross-project move for the ticket to appear on the board."
}
},
"required": [
"key"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — |
| Endpoint | Transport | Authentication | Health | Observed |
|---|---|---|---|---|
| No verified remote endpoint is linked. | ||||
No verified package installation command is available in the retained catalog evidence.
Jira MCP Server exposed 13 tools during independent protocol observation, including add_comment, add_label, convert_to_subtask, create_ticket, download_attachment, get_comments, get_ticket, list_attachments, and others.
The selected current version does not yet have completed public verification. Unknown does not mean clean or vulnerable.
These internal links are derived from strong identity fields such as the implementation name, package, repository, vendor, and listing name—not generic description prose.
Association is based on retained identity fields; it does not by itself prove first-party publication.
Curated product and capability guides containing this catalog record.