A standup you do not have to write
Every weekday at 8:30, search Jira for issues assigned to me that are not done, group them by status, and write a short standup update I can paste into Slack.
Verified MCP server: Jira
The tool list below is a live capture from the running server; an authenticated tool call is still pending credentials.
The short answer
Last verified 2026-08-03
The Jira MCP server lets an AI assistant search, read, create and move Jira issues from a chat window or a scheduled routine. There are two of them, and they are not the same product: Atlassian hosts its own Rovo MCP Server, which your client reaches over the network once it has authenticated with Atlassian, and mcp-atlassian is the community server that runs on your own Mac against an Atlassian API token. This page is about the second one, because it is the one that starts without an Atlassian tenant to sign into. We ran it, spoke the protocol to it, and enumerated every tool the configuration on this page exposes, and the table below is that capture. What we could not do is complete an authenticated call: that needs a token for a real Jira site, so this page shows you the tools and the exact errors you get without one, and stops there. [1][3][6][7]
Verification
Method
We spawned the server with uvx over stdio against a placeholder Jira site with placeholder credentials, completed the MCP initialize handshake, and called tools/list: the 16 tools below are that response, word for word. We then made two real tools/call requests, and both failed, as they had to. Authenticated calls here are pending an Atlassian API token for a real Jira site, which we do not have, so nothing on this page claims a successful Jira read. Separately we sent an unauthenticated request to Atlassian's own hosted endpoint and it answered 401; that reply is printed in the troubleshooting section.
Startup banner
╭──────────────────────────────────────────────────────────────────────────────╮
│ │
│ │
│ ▄▀▀ ▄▀█ █▀▀ ▀█▀ █▀▄▀█ █▀▀ █▀█ │
│ █▀ █▀█ ▄▄█ █ █ ▀ █ █▄▄ █▀▀ │
│ │
│ │
│ │
│ FastMCP 3.4.5 │
│ https://gofastmcp.com │
│ │
│ 🖥 Server: Atlassian MCP, 3.4.5 │
│ 🚀 Deploy free: https://horizon.prefect.io │
│ │
╰──────────────────────────────────────────────────────────────────────────────╯
[08/03/26 06:27:33] INFO Starting MCP server 'Atlassian transport.py:241
MCP' with transport 'stdio' One real tool call
tools/call jira_search {"jql": "assignee = currentUser() AND statusCategory != Done", "limit": 5}Error calling tool 'search': HTTPError
Real lines from the captured result: enough to prove the call answered.
Tools
The server answered tools/list with 16 tools on 2026-08-03. The names, descriptions and parameters below are its own words, copied from that response and never edited.
| Tool | What it does |
|---|---|
| jira_get_issueissue_key*fieldsexpandcomment_limitpropertiesupdate_historyincludeuse_display_names | Get details of a specific Jira issue. Includes Epic links and relationship information. Use the ``include`` parameter to inline enrichments (remote_links, transitions, watchers, changelog, comments, worklogs) so that separate tool calls are not needed. |
| jira_searchjql*fieldslimitstart_atprojects_filterexpandpage_tokenuse_display_names | Search Jira issues using JQL (Jira Query Language). |
| jira_search_fieldskeywordlimitrefresh | Search Jira fields by keyword with fuzzy match. |
| jira_get_field_optionsfield_id*context_idproject_keyissue_typecontainsreturn_limitvalues_only | Get allowed option values for a custom field. Returns the list of valid options for select, multi-select, radio, checkbox, and cascading select custom fields. Cloud: Uses the Field Context Option API. If context_id is not provided, automatically resolves to the global context. Server/DC: Uses createmeta to get allowedValues. Requires project_key and issue_type parameters. |
| jira_get_project_issuesproject_key*limitstart_at | Get all issues for a specific Jira project. |
| jira_get_transitionsissue_key* | Get available status transitions for a Jira issue. |
| jira_create_issueproject_key*summary*issue_type*assigneedescriptioncomponentsadditional_fields | Create a new Jira issue with optional Epic link or parent for subtasks. |
| jira_batch_create_issuesissues*validate_only | Create multiple Jira issues in a batch. |
| jira_batch_get_changelogsissue_ids_or_keys*fieldslimit | Get changelogs for multiple Jira issues (Cloud only). |
| jira_update_issueissue_key*fields*additional_fieldscomponentsattachmentsreturn_fields | Update an existing Jira issue including changing status, adding Epic links, updating fields, etc. |
| jira_assign_issueissue_key*assignee | Assign a Jira issue to a user using the dedicated assignment endpoint. This is more reliable than setting assignee via update_issue, which is silently ignored by some Jira configurations. Uses PUT /issue/{key}/assignee. |
| jira_delete_issueissue_key* | Delete an existing Jira issue. |
| jira_move_issueissue_key*target_project_key* | Move a Jira issue to a different project (Jira Cloud only). Uses Jira Cloud's bulk move API to perform a cross-project move. The issue keeps its current issue type and may be assigned a new key in the target project (e.g., OLDPROJ-123 becomes NEWPROJ-456). The move is processed asynchronously on Jira's side; this tool polls until confirmed or times out after 30 seconds. |
| jira_add_commentissue_key*body*visibilitypublic | Add a comment to a Jira issue. |
| jira_edit_commentissue_key*comment_id*body*visibility | Edit an existing comment on a Jira issue. |
| jira_transition_issueissue_key*transition_id*fieldscomment | Transition a Jira issue to a new status. |
Parameters marked with * are required.
Setup
Copy the block for the app you use. Each one is the configuration this server was verified with.
Open the file ~/Library/Application Support/Claude/claude_desktop_config.json (in Claude Desktop: Settings, then Developer, then Edit Config) and add:
{
"mcpServers": {
"jira": {
"command": "uvx",
"args": [
"mcp-atlassian",
"--toolsets",
"default"
],
"env": {
"JIRA_URL": "https://your-company.atlassian.net",
"JIRA_USERNAME": "you@your-company.com",
"JIRA_API_TOKEN": "your_api_token"
}
}
}
}Fill in your own site, the email you sign in with, and a token from id.atlassian.com, then quit and reopen Claude Desktop. If it cannot find uvx, write the full path instead, /Users/yourname/.local/bin/uvx: that is how we invoked it in the verification run. [9][5]
One command in your terminal:
claude mcp add jira -e JIRA_URL=https://your-company.atlassian.net -e JIRA_USERNAME=you@your-company.com -e JIRA_API_TOKEN=your_api_token -- uvx mcp-atlassian --toolsets default
Each -e sets one environment variable, and everything after the double dash is the exact command Claude Code will run. Your token ends up in your shell history, so paste it in a fresh terminal if that matters to you. [10]
Add to ~/.cursor/mcp.json for every project, or to .cursor/mcp.json inside one project:
{
"mcpServers": {
"jira": {
"command": "uvx",
"args": [
"mcp-atlassian",
"--toolsets",
"default"
],
"env": {
"JIRA_URL": "https://your-company.atlassian.net",
"JIRA_USERNAME": "you@your-company.com",
"JIRA_API_TOKEN": "your_api_token"
}
}
}
}Cursor picks the file up on restart. A project-level .cursor/mcp.json is worth committing to git only after you have moved the token out of it. [11]
No JSON file and no terminal. In Routines: Settings, then Assistant, then Connections, then Add MCP Server. Switch the form to Command (stdio) and enter:
Name Jira Command uvx Arguments mcp-atlassian --toolsets default Environment Variables JIRA_URL=https://your-company.atlassian.net JIRA_USERNAME=you@your-company.com JIRA_API_TOKEN=your_api_token
The three credentials belong in the Environment Variables field, one per line, not in Arguments. Click Test Connection first: a working server answers with its tool count, sixteen for this configuration. If it answers zero, the variables did not reach it. [12]
No terminal needed
If you have never opened Terminal and never want to, this is your path, with one unavoidable detour: this server needs an Atlassian API token, so step two is getting one. Routines is a Mac app that runs MCP servers for you: fill in the fields once, and this server's tools are available to your AI in chat and in scheduled routines.
01
Download the app from getroutines.ai/download, drag it to Applications, and sign in.
02
Go to id.atlassian.com, open Security, then API tokens, and create one. Copy it somewhere safe: Atlassian shows it once. You will also need your Jira address, the https://something.atlassian.net one, and the email you sign in with. The token can do anything your account can do, so treat it like your password.
03
Click your account at the bottom of the sidebar and choose Settings. Open the Assistant section, then the Connections tab, scroll to MCP Servers, and click Add MCP Server.
04
Switch the form to Command (stdio): this server is a command that runs on your Mac, not a web address. Name it Jira. Command: uvx. Arguments: mcp-atlassian --toolsets default.
05
In the Environment Variables field put one per line: JIRA_URL=https://your-company.atlassian.net, then JIRA_USERNAME=you@your-company.com, then JIRA_API_TOKEN= followed by the token you copied. All three, or the server starts with no tools at all.
06
Click Test Connection: Routines starts the server and reports how many tools it found, sixteen for this configuration. Then click Add Server. The tools work in chat right away; to let a scheduled routine use them, open the routine, find the Tools & connections card, and tick the server under Apps.
Routine ideas
Once the server is connected, a scheduled routine can use its tools while you are away. Copy a prompt, paste it into Routines, and pick a time.
Every weekday at 8:30, search Jira for issues assigned to me that are not done, group them by status, and write a short standup update I can paste into Slack.
Every Friday at 16:00, search Jira for issues created this week in my project that have no assignee, list them with summary and priority, and save the list as jira-triage.md.
Every Monday at 9:00, search Jira for issues assigned to me that have not been updated in 14 days, and write a short list with one suggested next step for each.
Troubleshooting
Real errors captured during the verification run, printed exactly as the server returned them.
What you see
{"jsonrpc":"2.0","id":2,"result":{"tools":[]}}The fix
The server starts happily with no Jira credentials at all and then exposes nothing, which is why this looks like a working connection with a broken server. We reproduced it by launching it with an empty environment: the handshake completed, the banner printed as usual, and tools/list came back with the empty list above. Check that JIRA_URL, JIRA_USERNAME and JIRA_API_TOKEN all actually reached the process. In a form-based client that means the Environment Variables field, not the arguments.
What you see
Error calling tool 'search': HTTPError
The fix
The tools are there, the call goes out, and Jira refuses it. We triggered this on purpose by pointing JIRA_URL at https://example.atlassian.net, which is not a real Jira site: Atlassian answers requests to it with 404, and the Jira client turns that into a bare HTTPError. The same message covers a wrong site address, a wrong email, and an expired or mistyped token, because the status code is not passed through. Open your Jira address in a browser, confirm it loads, and re-check the other two values.
What you see
HTTP/2 401
www-authenticate: Bearer resource_metadata="https://mcp.atlassian.com/.well-known/oauth-protected-resource/v1/mcp/authv2", error="invalid_token", error_description="Missing or invalid access token"
{"error":"invalid_token","error_description":"Missing or invalid access token"}The fix
Expected, and worth knowing before you spend an evening on it. Atlassian's hosted Rovo MCP Server is a different product from the local one on this page, and it accepts nothing without credentials. We sent no Authorization header at all to https://mcp.atlassian.com/v1/mcp/authv2 and got this back. Reaching that server means authenticating with Atlassian first: normally an OAuth sign-in your MCP client completes for you, and, where an organization admin has enabled it, Atlassian also documents an API token sent directly in an Authorization header.
What you see
Error calling tool 'get_issue': Issue PROJ-1 not found. Verify the issue key and project access.
The fix
Friendlier than it looks, and less specific: the server turns any failed issue fetch into this one sentence. We got it while asking a placeholder site for PROJ-1, so in our case the site was wrong, not the key. On a real site the usual causes are a typo in the key, a project your account cannot see, or an issue that was moved to another project and now answers to a different key.
The fix
The uvx command belongs to uv, the Python package runner, and this server is a Python one. If uv is not installed, every client on this page fails at the spawn step before the server can say anything: install it from astral.sh/uv and restart your client. There is a second version of the same failure: uv installs into ~/.local/bin, which apps launched from the Dock often do not have on their PATH, so a client that works in a terminal can still fail in a window. Use the full path /Users/yourname/.local/bin/uvx as the command, which is how we invoked it in the verification run.
FAQ
It is a small program that hands an AI assistant a set of Jira actions: search issues with JQL, read one issue, create and update issues, move them through statuses, comment on them. Two of them exist. Atlassian hosts its own, the Rovo MCP Server, which your client reaches over the network after signing in. The community one, mcp-atlassian, runs as a local process on your Mac and authenticates with an Atlassian API token. This page verified the community one, because it is the one that starts without an Atlassian tenant to sign into. [6][5]
We started the server, completed the MCP handshake, and read the tool list off the wire. That part is measured, and the table above is the raw response. We also made two real tool calls, and both failed, because a real call needs an Atlassian API token for a real Jira site and we have none. So the tool list is evidence; anything about what a successful Jira query returns is not on this page at all. The errors we did get are printed in full, including the 401 from Atlassian's hosted endpoint.
The configuration on this page enumerates 16: reading (jira_get_issue, jira_search, jira_search_fields, jira_get_field_options, jira_get_project_issues, jira_get_transitions, jira_batch_get_changelogs), creating (jira_create_issue, jira_batch_create_issues), changing (jira_update_issue, jira_assign_issue, jira_delete_issue, jira_move_issue, jira_transition_issue) and commenting (jira_add_comment, jira_edit_comment). Drop the --toolsets default flag and the same server enumerated 63 Jira tools for us instead, adding boards, sprints, worklogs, service desk queues and ProForma forms. We kept the smaller set on purpose: 63 tool descriptions are a lot of context to hand an assistant on every single turn.
Not for the connection itself. In Routines you fill in a name, a command, the arguments and three environment variables, then click Test Connection; the walkthrough above shows every click. Claude Desktop and Cursor each need one JSON file edited once. You do need uv installed on your Mac for the uvx command to exist at all, and installing uv is a terminal step. [12][9]
Yes. For the Cloud setup on this page that means your Jira address, the email you sign in with, and an Atlassian API token created at id.atlassian.com under Security, then API tokens. The server also documents OAuth 2.0, and Server or Data Center installs use a Personal Access Token instead. Treat the token as a password: it can read and change whatever your account can, and this server ships jira_delete_issue among its tools, so a routine you write carelessly can do real damage with it. [8]
Both numbers are real and we captured both. PyPI publishes mcp-atlassian at 0.23.0, and uvx mcp-atlassian --version agrees. Over MCP the running process self-reports as Atlassian MCP 3.4.5, which is the version of FastMCP, the framework it is built on: the startup banner above prints 3.4.5 next to the FastMCP name, and the fastmcp package installed alongside it in the same environment reads 3.4.5 too. Reading 3.4.5 as the Jira server's own version number would be wrong. [1]
No. Routines already ships a Jira connector you turn on with a one-click sign-in, which talks to Atlassian's hosted MCP server for you, so there is nothing to install and no token to paste. Set this community server up instead if you want its wider tool set, or if your Jira is a Server or Data Center instance rather than Cloud. [12]
Sources
Anything on this page we did not observe in the run is linked here, with the date we read it. The run itself is the receipt for the rest.
[1]
Latest version 0.23.0, uploaded 2026-07-18. Requires Python 3.10 or newer.
[2]
357,922 downloads in the last week, 1,902,768 in the last month.
[3]
5,686 stars and a push dated 2026-08-02 at access time, per the GitHub API.
[4]
[5]
The uvx command shape and the JIRA_URL, JIRA_USERNAME and JIRA_API_TOKEN variable names.
[6]
Atlassian's own hosted server and its current URL, https://mcp.atlassian.com/v1/mcp/authv2.
[7]
If an organization admin enables it, a client may authenticate to Atlassian's hosted server with an API token in an Authorization header instead of an interactive OAuth consent screen.
[8]
Where an Atlassian API token is created for the community server.
[9]
The claude_desktop_config.json shape, including the env object.
[10]
The claude mcp add syntax, including -e for environment variables.
[11]
[12]
The built-in Jira connector and how Routines runs any MCP server.
This page describes Jira as it behaved in one dated run on one Mac. Versions move: if something here no longer matches what you see, the capture date at the top says how old the reading is.
Behind this directory
Routines, the app behind this directory, runs MCP servers like this one without a terminal: see how connectors work. Your notes stay markdown files on your Mac, there is no cloud bill, and it works offline. Download Routines