a8e81ebfe9697431e4d735ddb27c81fd9de2bf8dsource_git · akashyap3c/jira-mcp · current release
Observed 2026-08-25T16:38:39.560Z using mcpSecurity-inventory. Status: succeeded. Negotiated protocol: 2025-06-18.
{
"tools": {
"listChanged": true
}
}| Tool | Category | Annotations | Risk |
|---|---|---|---|
add_commentAdd a comment to a JIRA issue. Optionally uploads images as attachments and embeds them inline in the comment (as if pasted directly).Input schema{
"type": "object",
"properties": {
"issueKey": {
"type": "string",
"description": "Issue key, e.g. PROJ-123"
},
"body": {
"type": "string",
"default": "",
"description": "Comment text. May be empty if only attaching images. Rendered as ADF when no images, or wiki markup when images are embedded."
},
"images": {
"type": "array",
"items": {
"type": "object",
"properties": {
"path": {
"type": "string",
"description": "Absolute path to a local image file"
},
"dataUrl": {
"type": "string",
"description": "Base64 data URL, e.g. data:image/png;base64,iVBORw0..."
},
"url": {
"type": "string",
"description": "http(s) URL to fetch the image from"
},
"filename": {
"type": "string",
"description": "Override the attachment filename"
},
"mimeType": {
"type": "string",
"description": "Override the detected MIME type"
},
"alt": {
"type": "string",
"description": "Alt text for the embedded image"
}
},
"additionalProperties": false,
"description": "Exactly one of path, dataUrl, or url must be provided per image"
},
"description": "Optional images to attach to the issue and embed inline in the comment. Each entry must provide one of path, dataUrl, or url. Images render inline like a pasted screenshot — not as a text link."
}
},
"required": [
"issueKey"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
aggregate_worklogsAggregate time logged across issues from a JQL query. Fetches worklogs per issue (can be slow / rate-limited). Use worklogDate in JQL or dateFrom/dateTo. Optional filter by author accountId.Input schema{
"type": "object",
"properties": {
"jql": {
"type": "string",
"description": "Base JQL (e.g. project = PROJ). Combined with worklogDate if dateFrom/dateTo set."
},
"dateFrom": {
"type": "string",
"description": "Optional start date yyyy-MM-dd (adds worklogDate >=)"
},
"dateTo": {
"type": "string",
"description": "Optional end date yyyy-MM-dd (adds worklogDate <=)"
},
"accountId": {
"type": "string",
"description": "If set, only count worklogs by this author accountId"
},
"maxIssues": {
"type": "integer",
"minimum": 1,
"maximum": 500,
"default": 100,
"description": "Max issues to scan (caps API load)"
},
"issuesPerPage": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50,
"description": "Search page size"
}
},
"required": [
"jql"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
assign_issueAssign a JIRA issue to a user (by accountId) or unassign itInput schema{
"type": "object",
"properties": {
"issueKey": {
"type": "string",
"description": "Issue key, e.g. PROJ-123"
},
"accountId": {
"type": [
"string",
"null"
],
"description": "Atlassian account ID of the assignee, or null to unassign"
}
},
"required": [
"issueKey",
"accountId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
create_issueCreate a new JIRA issueInput schema{
"type": "object",
"properties": {
"projectKey": {
"type": "string",
"description": "Project key, e.g. PROJ"
},
"issueType": {
"type": "string",
"description": "Issue type name, e.g. Task, Bug, Story"
},
"summary": {
"type": "string",
"description": "Issue summary / title"
},
"description": {
"type": "string",
"description": "Issue description (plain text, converted to ADF)"
},
"assigneeAccountId": {
"type": "string",
"description": "Assignee Atlassian account ID"
},
"labels": {
"type": "array",
"items": {
"type": "string"
},
"description": "Labels to add"
},
"priority": {
"type": "string",
"description": "Priority name, e.g. High, Medium, Low"
},
"parentKey": {
"type": "string",
"description": "Parent issue key for sub-tasks"
},
"originalEstimateSeconds": {
"type": "integer",
"minimum": 0,
"description": "Original estimate in seconds (e.g. 3600 = 1 hour, 7200 = 2 hours)"
}
},
"required": [
"projectKey",
"issueType",
"summary"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
delete_issuePermanently delete a JIRA issue. Optionally delete its subtasks.Input schema{
"type": "object",
"properties": {
"issueKey": {
"type": "string",
"description": "Issue key to delete, e.g. PROJ-123"
},
"deleteSubtasks": {
"type": "boolean",
"default": false,
"description": "If true, delete subtasks first"
}
},
"required": [
"issueKey"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
get_all_sprintsGet all sprints for a board with their IDs and names. Auto-paginates so you always see every sprint.Input schema{
"type": "object",
"properties": {
"boardId": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Board ID"
},
"state": {
"type": "string",
"enum": [
"active",
"future",
"closed"
],
"description": "Filter by sprint state. Omit to return all sprints."
}
},
"required": [
"boardId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
get_board_backlogGet issues on a board backlog (ranked; includes agile fields like sprint and epic). Optional JQL narrows results.Input schema{
"type": "object",
"properties": {
"boardId": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Board ID"
},
"jql": {
"type": "string",
"description": "Optional JQL filter applied to backlog issues"
},
"startAt": {
"type": "integer",
"minimum": 0,
"default": 0,
"description": "Pagination offset"
},
"maxResults": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50,
"description": "Max results"
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Issue fields to return (default: summary, status, assignee, issuetype, priority)"
}
},
"required": [
"boardId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
get_board_issuesGet issues for a board (board-scoped listing). Optional JQL filters the board issues.Input schema{
"type": "object",
"properties": {
"boardId": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Board ID"
},
"jql": {
"type": "string",
"description": "Optional JQL filter"
},
"startAt": {
"type": "integer",
"minimum": 0,
"default": 0,
"description": "Pagination offset"
},
"maxResults": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50,
"description": "Max results"
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Issue fields to return (default: summary, status, assignee, issuetype, priority)"
}
},
"required": [
"boardId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
get_commentsList comments on a JIRA issueInput schema{
"type": "object",
"properties": {
"issueKey": {
"type": "string",
"description": "Issue key, e.g. PROJ-123"
},
"startAt": {
"type": "integer",
"minimum": 0,
"default": 0,
"description": "Pagination offset"
},
"maxResults": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50,
"description": "Max results"
}
},
"required": [
"issueKey"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
get_epic_issuesGet issues linked to an epic on a boardInput schema{
"type": "object",
"properties": {
"boardId": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Board ID"
},
"epicId": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Epic ID (from list_board_epics)"
},
"startAt": {
"type": "integer",
"minimum": 0,
"default": 0,
"description": "Pagination offset"
},
"maxResults": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50,
"description": "Max results"
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Issue fields (default: summary, status, assignee, issuetype, priority)"
}
},
"required": [
"boardId",
"epicId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
get_filterGet a saved filter by ID (includes JQL when expand includes jql)Input schema{
"type": "object",
"properties": {
"filterId": {
"type": "string",
"description": "Filter ID from list_filters"
}
},
"required": [
"filterId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
get_issueGet JIRA issue details by key (e.g. PROJ-123)Input schema{
"type": "object",
"properties": {
"issueKey": {
"type": "string",
"description": "Issue key, e.g. PROJ-123"
}
},
"required": [
"issueKey"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
get_issues_without_epicGet board issues that are not assigned to any epicInput schema{
"type": "object",
"properties": {
"boardId": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Board ID"
},
"startAt": {
"type": "integer",
"minimum": 0,
"default": 0,
"description": "Pagination offset"
},
"maxResults": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50,
"description": "Max results"
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Issue fields (default: summary, status, assignee, issuetype, priority)"
}
},
"required": [
"boardId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
get_link_typesList available JIRA issue link types (e.g. Blocks, Relates to). Use these names in link_issues.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {}
} | — | — · — | — |
get_sprintGet sprint metadata by ID (name, state, goal, start/end dates). Complements get_all_sprints.Input schema{
"type": "object",
"properties": {
"sprintId": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Numeric sprint ID"
}
},
"required": [
"sprintId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
get_sprint_issuesGet issues in a JIRA sprintInput schema{
"type": "object",
"properties": {
"sprintId": {
"type": "integer",
"description": "Sprint ID"
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Fields to return (default: summary, status, assignee, issuetype, priority)"
},
"startAt": {
"type": "integer",
"minimum": 0,
"default": 0,
"description": "Pagination offset"
},
"maxResults": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50,
"description": "Max results"
}
},
"required": [
"sprintId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
get_transitionsList available workflow transitions for a JIRA issueInput schema{
"type": "object",
"properties": {
"issueKey": {
"type": "string",
"description": "Issue key, e.g. PROJ-123"
}
},
"required": [
"issueKey"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
get_worklogsList worklogs (time logged) on a JIRA issueInput schema{
"type": "object",
"properties": {
"issueKey": {
"type": "string",
"description": "Issue key, e.g. PROJ-123"
},
"startAt": {
"type": "integer",
"minimum": 0,
"default": 0,
"description": "Pagination offset"
},
"maxResults": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50,
"description": "Max results"
}
},
"required": [
"issueKey"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
jira_agile_requestLow-level call to Jira Software Agile REST API under /rest/agile/1.0. Path must start with / (e.g. /board/1/reports). When JIRA_MCP_HTTP_READ_ONLY=true, only GET/HEAD are allowed.Input schema{
"type": "object",
"properties": {
"method": {
"type": "string",
"enum": [
"GET",
"HEAD",
"POST",
"PUT",
"DELETE",
"PATCH"
],
"description": "HTTP method"
},
"path": {
"type": "string",
"description": "Path relative to /rest/agile/1.0, e.g. /board/23/sprint"
},
"query": {
"type": "object",
"additionalProperties": {},
"description": "Optional query parameters"
},
"jsonBody": {
"description": "JSON body for POST/PUT/PATCH"
}
},
"required": [
"method",
"path"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
jira_platform_requestLow-level call to Jira REST API under /rest/api/3. Path must start with / (e.g. /field, /issue/PROJ-1). When JIRA_MCP_HTTP_READ_ONLY=true, only GET/HEAD are allowed.Input schema{
"type": "object",
"properties": {
"method": {
"type": "string",
"enum": [
"GET",
"HEAD",
"POST",
"PUT",
"DELETE",
"PATCH"
],
"description": "HTTP method"
},
"path": {
"type": "string",
"description": "Path relative to /rest/api/3, e.g. /field or /issue/KEY"
},
"query": {
"type": "object",
"additionalProperties": {},
"description": "Optional query parameters as key-value object"
},
"jsonBody": {
"description": "JSON body for POST/PUT/PATCH"
}
},
"required": [
"method",
"path"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
link_issuesLink two JIRA issues with a relationship type (e.g. Blocks, Relates to). Use get_link_types to see available types.Input schema{
"type": "object",
"properties": {
"inwardKey": {
"type": "string",
"description": "Inward issue key (e.g. the issue that is \"blocked by\")"
},
"outwardKey": {
"type": "string",
"description": "Outward issue key (e.g. the issue that \"blocks\")"
},
"linkTypeName": {
"type": "string",
"description": "Link type name, e.g. \"Blocks\", \"Relates to\", \"Duplicates\""
}
},
"required": [
"inwardKey",
"outwardKey",
"linkTypeName"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
list_board_epicsList epics on a Jira Software boardInput schema{
"type": "object",
"properties": {
"boardId": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Board ID"
},
"startAt": {
"type": "integer",
"minimum": 0,
"default": 0,
"description": "Pagination offset"
},
"maxResults": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50,
"description": "Max results"
}
},
"required": [
"boardId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
list_board_reportsList report types available for a Jira Software board (e.g. sprint reports). Response shape depends on Jira version.Input schema{
"type": "object",
"properties": {
"boardId": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Board ID"
}
},
"required": [
"boardId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
list_boardsList JIRA boards. Use board ID with get_all_sprints and move_to_sprint.Input schema{
"type": "object",
"properties": {
"projectKeyOrId": {
"type": "string",
"description": "Filter by project key or ID"
},
"name": {
"type": "string",
"description": "Filter by board name"
},
"startAt": {
"type": "integer",
"minimum": 0,
"default": 0,
"description": "Pagination offset"
},
"maxResults": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50,
"description": "Max results"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
list_fieldsList all Jira fields (system and custom). Use custom field ids (e.g. customfield_10016) in search_issues for story points and other custom data.Input schema{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"properties": {}
} | — | — · — | — |
list_filtersSearch saved Jira filters (by partial name). Use get_filter with a filter id to read JQL.Input schema{
"type": "object",
"properties": {
"filterName": {
"type": "string",
"description": "Case-insensitive partial match on filter name"
},
"accountId": {
"type": "string",
"description": "Only filters visible to / owned by this account"
},
"startAt": {
"type": "integer",
"minimum": 0,
"default": 0,
"description": "Pagination offset"
},
"maxResults": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50,
"description": "Max results"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
list_projectsList accessible JIRA projectsInput schema{
"type": "object",
"properties": {
"startAt": {
"type": "integer",
"minimum": 0,
"default": 0,
"description": "Pagination offset"
},
"maxResults": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50,
"description": "Max results to return"
}
},
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
list_sprintsList sprints for a JIRA boardInput schema{
"type": "object",
"properties": {
"boardId": {
"type": "integer",
"description": "Board ID"
},
"state": {
"type": "string",
"enum": [
"active",
"future",
"closed"
],
"description": "Filter by sprint state"
},
"startAt": {
"type": "integer",
"minimum": 0,
"default": 0,
"description": "Pagination offset"
},
"maxResults": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50,
"description": "Max results"
}
},
"required": [
"boardId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
log_workLog time spent on a JIRA issue (worklog)Input schema{
"type": "object",
"properties": {
"issueKey": {
"type": "string",
"description": "Issue key, e.g. PROJ-123"
},
"timeSpentSeconds": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Time spent in seconds (e.g. 3600 = 1 hour)"
},
"comment": {
"type": "string",
"description": "Optional worklog comment"
},
"started": {
"type": "string",
"description": "Optional ISO 8601 date when work was done, e.g. 2025-03-10T09:00:00.000+0000"
}
},
"required": [
"issueKey",
"timeSpentSeconds"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
move_to_backlogMove one or more issues out of their sprint back to the backlogInput schema{
"type": "object",
"properties": {
"issueKeys": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Issue keys to move to backlog, e.g. [\"PROJ-1\", \"PROJ-2\"]"
}
},
"required": [
"issueKeys"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
move_to_sprintMove one or more issues into a sprint. Accepts either a numeric sprintId OR a sprintName (e.g. "AMZ Sprint 69"). When using sprintName, boardId is required to look up the sprint.Input schema{
"type": "object",
"properties": {
"issueKeys": {
"type": "array",
"items": {
"type": "string"
},
"minItems": 1,
"description": "Issue keys to move, e.g. [\"PROJ-1\", \"PROJ-2\"]"
},
"sprintId": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Numeric sprint ID. Use this OR sprintName."
},
"sprintName": {
"type": "string",
"description": "Sprint name, e.g. \"AMZ Sprint 69\". Use this OR sprintId. Requires boardId."
},
"boardId": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Board ID — required when resolving a sprint by name."
}
},
"required": [
"issueKeys"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
search_issuesSearch JIRA issues using JQL. For PM/time views you can request fields like timetracking, aggregatetimespent, aggregatetimeoriginalestimate, parent, subtasks, labels, duedate, worklog (capped per issue). Use list_fields to find story points custom field ids.Input schema{
"type": "object",
"properties": {
"jql": {
"type": "string",
"description": "JQL query string, e.g. \"project = PROJ AND status = Open\""
},
"fields": {
"type": "array",
"items": {
"type": "string"
},
"description": "Fields to return (default: summary, status, assignee, issuetype, priority)"
},
"maxResults": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 50,
"description": "Max results"
},
"startAt": {
"type": "integer",
"minimum": 0,
"default": 0,
"description": "Pagination offset"
}
},
"required": [
"jql"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
search_usersSearch JIRA users by name or email. Returns accountId (use for assign_issue), displayName, and email.Input schema{
"type": "object",
"properties": {
"query": {
"type": "string",
"minLength": 1,
"description": "Search string (name or email)"
},
"maxResults": {
"type": "integer",
"minimum": 1,
"maximum": 50,
"default": 20,
"description": "Max results"
}
},
"required": [
"query"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
sprint_metricsDerived PM metrics for a sprint: issue counts by status category, optional story points sum (pass custom field id from list_fields). Paginates sprint issues up to maxIssues.Input schema{
"type": "object",
"properties": {
"sprintId": {
"type": "integer",
"exclusiveMinimum": 0,
"description": "Sprint ID"
},
"storyPointsFieldId": {
"type": "string",
"description": "Custom field id for story points, e.g. customfield_10016"
},
"maxIssues": {
"type": "integer",
"minimum": 1,
"maximum": 2000,
"default": 500,
"description": "Max issues to load from sprint"
},
"pageSize": {
"type": "integer",
"minimum": 1,
"maximum": 100,
"default": 100,
"description": "Page size per API call"
}
},
"required": [
"sprintId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
transition_issueMove a JIRA issue through a workflow transition (use get_transitions to find valid IDs)Input schema{
"type": "object",
"properties": {
"issueKey": {
"type": "string",
"description": "Issue key, e.g. PROJ-123"
},
"transitionId": {
"type": "string",
"description": "Transition ID (use get_transitions to find available IDs)"
}
},
"required": [
"issueKey",
"transitionId"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |
update_issueUpdate fields on an existing JIRA issueInput schema{
"type": "object",
"properties": {
"issueKey": {
"type": "string",
"description": "Issue key, e.g. PROJ-123"
},
"summary": {
"type": "string",
"description": "New summary"
},
"description": {
"type": "string",
"description": "New description (plain text, converted to ADF)"
},
"assigneeAccountId": {
"type": "string",
"description": "Assignee Atlassian account ID"
},
"labels": {
"type": "array",
"items": {
"type": "string"
},
"description": "Replace labels"
},
"priority": {
"type": "string",
"description": "Priority name, e.g. High, Medium, Low"
},
"originalEstimateSeconds": {
"type": "integer",
"minimum": 0,
"description": "Original estimate in seconds (e.g. 3600 = 1 hour, 7200 = 2 hours)"
}
},
"required": [
"issueKey"
],
"additionalProperties": false,
"$schema": "http://json-schema.org/draft-07/schema#"
} | — | — · — | — |