jira-mcp
Provides tools for interacting with Jira Cloud, including searching and reading issues, adding comments, editing issues, transitioning statuses, logging work, linking issues, looking up users, and downloading attachments.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@jira-mcpshow me the recent comments on issue PROJ-123"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
jira-mcp
MCP server for Jira Cloud over the REST API v3, authenticated with an API token.
Why it exists
Atlassian's hosted MCP server works for most calls, but these gaps showed up in daily use:
Attachments cannot be read. An issue comes back with attachment metadata and
blob:placeholders in the description, and the image bytes never arrive; the only way to see a screenshot was to open the issue in a browser. This server downloads an attachment to a local file and returns the path.It runs on a service you do not control. The hosted connector has hung for minutes on ordinary calls, and its OAuth tokens live on the hosting side, so a local script cannot reuse them. This server is a local process that talks to Jira directly.
Mentions do not notify. With
contentFormat: "markdown",[~accountid:X]is escaped to literal text and the person gets no notification; only an ADF mention node works. Here a text body takes@[accountId],@[accountId|Display Name]or[~accountid:X]and sends a real mention node, looking the display name up when it is not given; text without a marker stays plain text.dry_runreturns the generated ADF without posting.Transition ids drift, and some statuses are two steps away. The same logical step can have different ids on different issue types and from different statuses, so an id taken from one issue fails on another, and a target status may only be reachable through an intermediate one.
jira_transition_to_statustakes a target status, plans the path, looks each step's transition up on the issue when it gets there (nothing is cached), and returns the final status and assignee; with no path it fails with the transitions that are available.dry_runshows the path.jira_transitionstays as the low-level one-step call.Responses overflow the context. An issue with a long comment thread comes back too large to read, and every user carries four avatar sizes. Output here is compact by default: people as name and account id, the last N comments as author, date and text, the changelog as
date · who · field: from → tolines, attachments as id, filename, size and type. Jira's full JSON only withraw: true.Smaller workarounds:
A worklog
startedwith+02:00is rejected, and the error names a Java date pattern rather than the colon. Herestartedaccepts+02:00,Zor no offset and is sent as+0200.A written description or comment can read back correctly through the fields API while the page renders it broken, for example a numbered list turned into headings. Writes here return the rendered HTML, and
jira_get_issuehasformat: "html".Each hosted worklog call returns about 1.5 KB, so posting many of them needed a separate script. Here worklogs are compact and do not notify watchers unless asked.
Related MCP server: jira-mcp
Tools
Tool | Does |
| The account the token authenticates as |
| Compact issue: rendered description, last N comments, changelog lines, attachments, links, subtasks |
| JQL search, paged with |
| Comment from text (mentions, links, code, bullets) or raw ADF; |
| Edit fields; returns the fields as they read afterwards; |
| Transitions from the current status |
| Walk to a target status through intermediate steps; |
| Low level: one transition by id or name; |
| Log work; watchers not notified unless asked |
| Issue links; the new link is read back as the issue shows it |
| Users by name or email fragment, or by account id |
| Save attachments to local files and return the paths; images optionally inline too |
In jira_get_issue output an inline image appears as [image: attachment <id>], the id to pass to jira_download_attachment.
With readOnly set, the tools that write (comment, edit, transition, worklog, link) are not offered.
Install
Needs Node 18 or newer.
npm installRegister the server with your MCP client as stdio: command node, argument the full path to index.js.
Config
config.json next to index.js (gitignored; start from config.example.json), or the matching environment variables. A value left at an example placeholder counts as absent.
Key | Environment | Meaning |
|
|
|
|
| Email of the Atlassian account the token belongs to. Required. |
|
| API token from https://id.atlassian.com/manage-profile/security/api-tokens. Required. |
|
| Leave empty for a classic token. A scoped token only works through the |
|
| Withholds every writing tool. |
|
| Where attachments are saved. Defaults to |
The token acts as your account, with all of its permissions. Keep it out of the repository.
Tests
npm testCovers the text-to-ADF conversion (mentions above all), the path planning between statuses, the worklog time format and the image ids in rendered HTML.
Path planning
The path comes from the issue's workflow (POST /rest/api/3/workflows for its project and issue type). Many sites allow that read to administrators only; without it the tool still takes a direct transition, or follows the statuses given in via, and otherwise fails with the transitions available from the current status. If a post-function moves the issue somewhere other than the expected next status, the rest of the path is planned again from where it landed.
Backlog
Not in v1: creating issues, uploading attachments, editing or deleting comments and worklogs, listing worklogs, remote links, boards and sprints, and headings or tables in the text body form (pass raw ADF for those).
This server cannot be deployed
Maintenance
Related MCP Connectors
Confluence MCP — wraps the Confluence Cloud REST API v2 (OAuth)
Read and write Mission Control state via MCP — projects, tasks, subtasks, templates, status updates.
Read and write shared BitsWeave context, projects, tasks, and work sessions through MCP.
- TimequipOAuthcom.timequip
Manage Timequip projects, tasks, comments, members, and dashboards through MCP.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceManages Atlassian Jira Cloud projects, issues, sprints, boards, worklogs, comments, and workflow transitions from MCP-compatible clients.-
- AlicenseNot gradedqualityBmaintenanceJira Cloud MCP server providing Jira-first tools for common workflows and full REST API coverage through a generic request tool.531 npmMIT
- AlicenseAqualityFmaintenanceA local MCP server for Jira Cloud-driven development. Connects MCP clients to Jira for searching issues, reading tasks, parsing attachments, and mapping projects to local repos.1022 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables management of multiple Jira Cloud instances through MCP, including workspace linking, issue creation and editing, workflow transitions, attachment retrieval, and administration via a web interface.4 npmMIT