MCP Server Atlassian Jira

Generic GET, POST, PUT, PATCH and DELETE access to the Jira Cloud REST API for MCP clients

By Andi Ashari (individual) TypeScript Local · stdio ProductivityDeveloper tools

59 popularity score ★ 78 ↓ 22k/wk

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server. Then replace each <NAME> in its settings with your value.

Or add it by command or config

It needs ATLASSIAN_SITE_NAME, ATLASSIAN_USER_EMAIL, ATLASSIAN_API_TOKEN. Replace each <NAME> with your value.

Claude CodeTerminal
claude mcp add atlassian-jira -e ATLASSIAN_SITE_NAME=<ATLASSIAN_SITE_NAME> -e ATLASSIAN_USER_EMAIL=<ATLASSIAN_USER_EMAIL> -e ATLASSIAN_API_TOKEN=<ATLASSIAN_API_TOKEN> -- npx -y @aashari/mcp-server-atlassian-jira
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "atlassian-jira": {
      "command": "npx",
      "args": [
        "-y",
        "@aashari/mcp-server-atlassian-jira"
      ],
      "env": {
        "ATLASSIAN_SITE_NAME": "<ATLASSIAN_SITE_NAME>",
        "ATLASSIAN_USER_EMAIL": "<ATLASSIAN_USER_EMAIL>",
        "ATLASSIAN_API_TOKEN": "<ATLASSIAN_API_TOKEN>"
      }
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "atlassian-jira": {
      "command": "npx",
      "args": [
        "-y",
        "@aashari/mcp-server-atlassian-jira"
      ],
      "env": {
        "ATLASSIAN_SITE_NAME": "<ATLASSIAN_SITE_NAME>",
        "ATLASSIAN_USER_EMAIL": "<ATLASSIAN_USER_EMAIL>",
        "ATLASSIAN_API_TOKEN": "<ATLASSIAN_API_TOKEN>"
      }
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "atlassian-jira": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "@aashari/mcp-server-atlassian-jira"
      ],
      "env": {
        "ATLASSIAN_SITE_NAME": "<ATLASSIAN_SITE_NAME>",
        "ATLASSIAN_USER_EMAIL": "<ATLASSIAN_USER_EMAIL>",
        "ATLASSIAN_API_TOKEN": "<ATLASSIAN_API_TOKEN>"
      }
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.atlassian-jira]
command = "npx"
args = ["-y", "@aashari/mcp-server-atlassian-jira"]

[mcp_servers.atlassian-jira.env]
ATLASSIAN_SITE_NAME = "<ATLASSIAN_SITE_NAME>"
ATLASSIAN_USER_EMAIL = "<ATLASSIAN_USER_EMAIL>"
ATLASSIAN_API_TOKEN = "<ATLASSIAN_API_TOKEN>"
Gemini CLITerminal
gemini mcp add --scope user -e ATLASSIAN_SITE_NAME=<ATLASSIAN_SITE_NAME> -e ATLASSIAN_USER_EMAIL=<ATLASSIAN_USER_EMAIL> -e ATLASSIAN_API_TOKEN=<ATLASSIAN_API_TOKEN> atlassian-jira npx -- -y @aashari/mcp-server-atlassian-jira

Settings 6

ATLASSIAN_SITE_NAME Required: Your Jira Cloud site name, the part before .atlassian.net.
ATLASSIAN_USER_EMAIL Required: Email address of the Atlassian account the token belongs to.
ATLASSIAN_API_TOKEN Required: Atlassian API token for that account.
TRANSPORT_MODE Optional: stdio (default) or http to serve Streamable HTTP at /mcp.
PORT Optional: Port for http mode; 3000 by default.
DEBUG Optional: Set to true to write debug logs under ~/.mcp/data/.

What it does

This is a community-built MCP server for Jira Cloud, published on npm by aashari. Since version 3.0 it no longer has one tool per task (list projects, get issue, add comment). Instead it has five tools, one for each HTTP method. Each takes a Jira REST path, plus optional query parameters and a JSON body, so the assistant can call any Jira Cloud REST v3 endpoint your account can reach: JQL issue search, creating and editing issues, transitions, comments, worklogs, users and statuses.

Responses come back in TOON by default, a compact tabular format meant to use fewer tokens than JSON. Set outputFormat to json to get JSON. Every tool also takes a JMESPath expression (jq) that trims the response to the fields you need. A response over about 40,000 characters is cut short, and the full raw response is written to a file under /tmp/mcp/mcp-server-atlassian-jira/.

The same package also works as a command-line tool: given arguments (get, post and so on) it runs one request and exits, and without arguments it starts as an MCP server. It speaks stdio by default. The README leaves out its other mode: in v3.3.0's src/index.ts, setting TRANSPORT_MODE=http starts a Streamable HTTP server at /mcp on PORT (3000 by default), with CORS open and no authentication of its own.

What it needs

RuntimeNode.js 18+

Node.js 18 or newer (the command uses npx). A Jira Cloud site (<name>.atlassian.net), an Atlassian account with access to the projects you want, and an Atlassian API token for that account, created at id.atlassian.com. Jira Server and Data Center are not supported.

Limits

Jira Cloud only, because the base URL is always https://<ATLASSIAN_SITE_NAME>.atlassian.net, so self-hosted Server and Data Center sites cannot be reached. It signs in only with an email address and API token; there is no OAuth. The tools have no built-in helpers: the assistant must know the right REST path and body format, for example Atlassian Document Format for comment and description text. Responses over about 40,000 characters are truncated, with the full text saved to a file in /tmp. The v2.x task-specific tools (jira_ls_projects, jira_get_issue and others) were removed in 3.0, so older configurations and prompts that name them no longer work.

Who it suits

Suits Jira Cloud users who want an assistant to reach the whole REST API, including writes, and who are fine with the assistant writing raw REST calls. It runs on your own machine with a personal API token. Pick something else if you use Jira Server or Data Center, need OAuth or admin-managed access instead of a personal token, or want narrow, task-specific tools that limit what the assistant can do. The same author also publishes Confluence and Bitbucket servers that work the same way (mcp-server-atlassian-confluence, mcp-server-atlassian-bitbucket).

Tools 5

jira_get
Sends a GET request to any Jira REST path to read data, with optional query parameters and JMESPath filter
jira_post
Sends a POST request with a JSON body, e.g. to create issues or add comments and worklogs
jira_put
Sends a PUT request with a JSON body to update a resource such as an issue
jira_patch
Sends a PATCH request with a JSON body to change only some fields
jira_delete
Sends a DELETE request to remove a resource such as a comment, worklog or issue

Similar servers