Verified MCP server: Jira

The Jira MCP server, enumerated live on a real Mac.

  • Tools enumerated2026-08-03macOS 26.3.1
  • Packagemcp-atlassian 0.23.0
  • Self-reportedAtlassian MCP 3.4.5
  • MCP protocol2025-06-18
  • RuntimePython 3.11.13 (uvx)

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]

  • Tools

    16, enumerated live

  • Credentials

    Atlassian API token needed [8]

  • Transport

    stdio, runs on your Mac [5]

  • Maintainer

    sooperset, community project [1][3]

  • Downloads

    358k last week [2]

  • License

    MIT [4]

Verification

How this MCP server was verified.

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

Every tool, enumerated from the running server.

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.

ToolWhat 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

Working configs, one per app.

Copy the block for the app you use. Each one is the configuration this server was verified with.

Claude Desktop

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]

Claude Code

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]

Cursor

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]

Routines

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

Set the Jira MCP server up without the terminal.

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.

  1. 01

    Install Routines

    Download the app from getroutines.ai/download, drag it to Applications, and sign in.

  2. 02

    Create an Atlassian API token

    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.

  3. 03

    Open the MCP settings

    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.

  4. 04

    Choose Command (stdio)

    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.

  5. 05

    Paste the three credentials

    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.

  6. 06

    Test, then add and use it

    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

Routines worth scheduling.

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.

A standup you do not have to write

Prompt

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.

A Friday triage list

Prompt

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.

A stale-ticket sweep

Prompt

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

The errors we hit, and what fixed them.

Real errors captured during the verification run, printed exactly as the server returned them.

Test Connection succeeds but reports no tools

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.

Every tool call comes back as HTTPError

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.

Atlassian's own hosted endpoint answers 401

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.

The assistant says an issue does not exist

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.

Your MCP client cannot start the server at all

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

Questions people ask.

What is the Jira MCP server?

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]

What exactly did you verify, and what did you not?

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.

Which tools does the Jira MCP server include?

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.

Do I need the terminal to set it up?

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]

Does it need an API key or an account?

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]

Why does the package say 0.23.0 but the server reports 3.4.5?

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]

Do I need this server to use Jira in Routines?

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

Every external claim, receipted.

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. [1]

    PyPI: mcp-atlassianaccessed 2026-08-03

    Latest version 0.23.0, uploaded 2026-07-18. Requires Python 3.10 or newer.

  2. [2]

    pypistats API: recent downloadsaccessed 2026-08-03

    357,922 downloads in the last week, 1,902,768 in the last month.

  3. [3]

    GitHub: sooperset/mcp-atlassianaccessed 2026-08-03

    5,686 stars and a push dated 2026-08-02 at access time, per the GitHub API.

  4. [4]

    mcp-atlassian LICENSE fileaccessed 2026-08-03

    MIT, as reported by the GitHub API for the repository.

  5. [5]

    mcp-atlassian READMEaccessed 2026-08-03

    The uvx command shape and the JIRA_URL, JIRA_USERNAME and JIRA_API_TOKEN variable names.

  6. [6]

    Atlassian: getting started with the Atlassian Rovo MCP Serveraccessed 2026-08-03

    Atlassian's own hosted server and its current URL, https://mcp.atlassian.com/v1/mcp/authv2.

  7. [7]

    Atlassian: configuring authentication via API tokenaccessed 2026-08-03

    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. [8]

    Atlassian account: API tokensaccessed 2026-08-03

    Where an Atlassian API token is created for the community server.

  9. [9]

    modelcontextprotocol.io: Connect to local MCP serversaccessed 2026-08-03

    The claude_desktop_config.json shape, including the env object.

  10. [10]

    Claude Code docs: MCPaccessed 2026-08-03

    The claude mcp add syntax, including -e for environment variables.

  11. [11]

    Cursor docs: Model Context Protocolaccessed 2026-08-03

    The mcp.json shape and file locations.

  12. [12]

    Routines: Connectorsaccessed 2026-08-03

    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