jira_add_attachment
Attach a file to a Jira issue.
Run Jira from the agent: search with JQL, open and edit issues, move them through the transitions their workflow actually allows, assign, comment, log work and attach files.
LABSCO SUMMARY
Jira transition ids are workflow-specific, so a tool that demanded one up front would be unusable to an agent that cannot see the board — discovering them in the same call is what turns 'move this to review' into a single instruction. Around that sits a competent lifecycle set, with assignment routed through jira_search_users so an accountId is resolved before it is written. Board-level work is the thin part: jira_list_sprints reads a board's sprints for a boardId, and nothing here creates, starts or closes one.
A Jira client covering the issue lifecycle — JQL search, read, create, update, transition, assign, comment, subtasks, worklogs and attachments — with project, sprint and user lookups alongside it.
A Jira site and an account authenticated against it: jira_myself resolves the current authenticated user, and jira_list_projects returns the projects that account can reach.
Follow the published steps — npm install -g jira-pilot
USE CASES
Pull the queue with a JQL filter, open the ones that need a decision, and move them on without leaving the session.
Create the issue against the right project, put it on the right person, and attach the log or screenshot while you still have it.
Split the work into subtasks under the parent and trim the parent's description down to what is left of it.
Log the time against each issue, leave the note that explains it, and move anything finished into its next status.
Turn a name or an email into the account id Jira wants, set it on the issue, or clear it when the work goes back to the pool.
Counted once with only startup setup. Other versions, modes or optional credentials may expose a different list.
jira_add_attachmentAttach a file to a Jira issue.
jira_add_commentAdd a comment to a Jira issue.
jira_add_worklogLog work to a Jira issue.
jira_assign_issueAssign or unassign a Jira issue. Use accountId to assign, or null to unassign.
jira_create_issueCreate a new Jira issue in a project. Returns the created issue key.
jira_create_subtaskCreate a subtask for a parent issue.
jira_get_issueGet full details of a specific Jira issue including summary, description, status, assignee, priority, and comments.
jira_list_issuesList Jira issues using JQL. Returns key, summary, status, and assignee for each issue.
jira_list_projectsList all accessible Jira projects. Returns project key, name, lead, and style.
jira_list_sprintsList sprints for a Jira board. Requires a board ID.
jira_myselfGet details about the current authenticated user.
jira_search_usersSearch for Jira users by name or email. Returns accountId and displayName.
jira_transition_issueTransition a Jira issue to a new status. First call with only issueKey to see available transitions, then call again with the transitionId.
jira_update_issueUpdate an existing Jira issue. Supports updating summary, description, priority, and assignee.
BEFORE YOU INSTALL
14 tools when we connected. Bulk transition, assign and label, sprint start and complete, git branch creation and the AI commands are CLI-only and not available over MCP.
Node.js 20.0.0 or higher
All 3 documented clients run the server on your machine.
CONTEXT COST
Rated by the size of the 14 tool definitions that ride along on every turn, not by how many there are
INSTALLATION
Install it globally — this puts the jira command on your PATH
npm install -g jira-pilotSet up your credentials — it prompts for your Jira Site URL, your Atlassian account email and an API Token from https://id.atlassian.com/manage-profile/security/api-tokens
jira config setup{
"mcpServers": {
"jira": {
"command": "npx",
"args": [
"-y",
"jira-pilot",
"mcp"
]
}
}
}{
"servers": {
"jira-pilot": {
"command": "jira",
"args": [
"mcp"
]
}
}
}{
"mcpServers": {
"jira-pilot": {
"command": "jira",
"args": [
"mcp"
]
}
}
}