# aashari/mcp-server-atlassian-jira [Health: Active]

**Category:** 🏢 Workplace & Productivity  
**Repository:** https://github.com/aashari/mcp-server-atlassian-jira  
**GitHub Stars:** 74  
**npm Downloads (last month):** 51264  
**Views:** 5  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/aashari-mcp-server-atlassian-jira

## Description
Atlassian Jira Cloud integration. Enables AI systems to interact with Jira projects, issues, comments, and related development information in real time.

## Tools
Capabilities this server exposes over MCP:

- **jira_get** — Read any Jira data. Returns TOON format by default (30-60% fewer tokens than JSON).

**IMPORTANT - Cost Optimization:**
- ALWAYS use `jq` param to filter response fields. Unfiltered responses are very expensive!
- Use `maxResults` query param to restrict result count (e.g., `maxResults: "5"`)
- If unsure about available fields, first fetch ONE item with `maxResults: "1"` and NO jq filter to explore the schema, then use jq in subsequent calls

**Schema Discovery Pattern:**
1. First call: `path: "/rest/api/3/search/jql", queryParams: {"maxResults": "1", "jql": "project=PROJ"}` (no jq) - explore available fields
2. Then use: `jq: "issues[*].{key: key, summary: fields.summary, status: fields.status.name}"` - extract only what you need

**Output format:** TOON (default, token-efficient) or JSON (`outputFormat: "json"`)

**Common paths:**
- `/rest/api/3/project` - list all projects
- `/rest/api/3/project/{projectKeyOrId}` - get project details
- `/rest/api/3/search/jql` - search issues with JQL (use `jql` query param). NOTE: `/rest/api/3/search` is deprecated!
- `/rest/api/3/issue/{issueIdOrKey}` - get issue details
- `/rest/api/3/issue/{issueIdOrKey}/comment` - list issue comments
- `/rest/api/3/issue/{issueIdOrKey}/worklog` - list issue worklogs
- `/rest/api/3/issue/{issueIdOrKey}/transitions` - get available transitions
- `/rest/api/3/user/search` - search users (use `query` param)
- `/rest/api/3/status` - list all statuses
- `/rest/api/3/issuetype` - list issue types
- `/rest/api/3/priority` - list priorities

**JQ examples:** `issues[*].key`, `issues[0]`, `issues[*].{key: key, summary: fields.summary}`

**Example JQL queries:** `project=PROJ`, `assignee=currentUser()`, `status="In Progress"`, `created >= -7d`

API reference: https://developer.atlassian.com/cloud/jira/platform/rest/v3/
- **jira_post** — Create Jira resources. Returns TOON format by default (token-efficient).

**IMPORTANT - Cost Optimization:**
- Use `jq` param to extract only needed fields from response (e.g., `jq: "{key: key, id: id}"`)
- Unfiltered responses include all metadata and are expensive!

**Output format:** TOON (default) or JSON (`outputFormat: "json"`)

**Common operations:**

1. **Create issue:** `/rest/api/3/issue`
   body: `{"fields": {"project": {"key": "PROJ"}, "summary": "Issue title", "issuetype": {"name": "Task"}, "description": {"type": "doc", "version": 1, "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Description"}]}]}}}`

2. **Add comment:** `/rest/api/3/issue/{issueIdOrKey}/comment`
   body: `{"body": {"type": "doc", "version": 1, "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Comment text"}]}]}}`

3. **Add worklog:** `/rest/api/3/issue/{issueIdOrKey}/worklog`
   body: `{"timeSpentSeconds": 3600, "comment": {"type": "doc", "version": 1, "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Work done"}]}]}}`

4. **Transition issue:** `/rest/api/3/issue/{issueIdOrKey}/transitions`
   body: `{"transition": {"id": "31"}}`

5. **Add attachment:** `/rest/api/3/issue/{issueIdOrKey}/attachments`
   Note: Requires multipart form data (complex - use Jira UI for attachments)

API reference: https://developer.atlassian.com/cloud/jira/platform/rest/v3/
- **jira_put** — Replace Jira resources (full update). Returns TOON format by default.

**IMPORTANT - Cost Optimization:** Use `jq` param to extract only needed fields from response

**Output format:** TOON (default) or JSON (`outputFormat: "json"`)

**Common operations:**

1. **Update issue (full):** `/rest/api/3/issue/{issueIdOrKey}`
   body: `{"fields": {"summary": "New title", "description": {...}, "assignee": {"accountId": "..."}}}`

2. **Update project:** `/rest/api/3/project/{projectIdOrKey}`
   body: `{"name": "New Project Name", "description": "Updated description"}`

3. **Set issue property:** `/rest/api/3/issue/{issueIdOrKey}/properties/{propertyKey}`
   body: `{"value": "property value"}`

Note: PUT replaces the entire resource. For partial updates, prefer PATCH.

API reference: https://developer.atlassian.com/cloud/jira/platform/rest/v3/
- **jira_patch** — Partially update Jira resources. Returns TOON format by default.

**IMPORTANT - Cost Optimization:** Use `jq` param to filter response fields.

**Output format:** TOON (default) or JSON (`outputFormat: "json"`)

**Common operations:**

1. **Update issue fields:** `/rest/api/3/issue/{issueIdOrKey}`
   body: `{"fields": {"summary": "Updated title"}}` (only updates specified fields)

2. **Update comment:** `/rest/api/3/issue/{issueIdOrKey}/comment/{commentId}`
   body: `{"body": {"type": "doc", "version": 1, "content": [{"type": "paragraph", "content": [{"type": "text", "text": "Updated comment"}]}]}}`

3. **Update worklog:** `/rest/api/3/issue/{issueIdOrKey}/worklog/{worklogId}`
   body: `{"timeSpentSeconds": 7200}`

Note: PATCH only updates the fields you specify, leaving others unchanged.

API reference: https://developer.atlassian.com/cloud/jira/platform/rest/v3/
- **jira_delete** — Delete Jira resources. Returns TOON format by default.

**Output format:** TOON (default) or JSON (`outputFormat: "json"`)

**Common operations:**

1. **Delete issue:** `/rest/api/3/issue/{issueIdOrKey}`
   Query param: `deleteSubtasks=true` to delete subtasks

2. **Delete comment:** `/rest/api/3/issue/{issueIdOrKey}/comment/{commentId}`

3. **Delete worklog:** `/rest/api/3/issue/{issueIdOrKey}/worklog/{worklogId}`

4. **Delete attachment:** `/rest/api/3/attachment/{attachmentId}`

5. **Remove watcher:** `/rest/api/3/issue/{issueIdOrKey}/watchers`
   Query param: `accountId={accountId}`

Note: Most DELETE endpoints return 204 No Content on success.

API reference: https://developer.atlassian.com/cloud/jira/platform/rest/v3/

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `npx` (confidence: high):

```json
"mcpServers": {
  "mcp-server-atlassian-jira": {
    "command": "npx",
    "args": ["-y","@aashari/mcp-server-atlassian-jira"],
    "env": {
      "ATLASSIAN_SITE_NAME": "",
      "ATLASSIAN_USER_EMAIL": "",
      "ATLASSIAN_API_TOKEN": ""
    }
  }
}
```

**Requires environment variables:** `ATLASSIAN_SITE_NAME`, `ATLASSIAN_USER_EMAIL`, `ATLASSIAN_API_TOKEN` — the values above are empty placeholders; fill in real credentials before running (see the repository for what each one is for).

## Documentation

## What aashari/mcp-server-atlassian-jira MCP server does

The aashari/mcp-server-atlassian-jira MCP server connects an MCP client to Jira Cloud's REST API v3. Rather than exposing a separate tool for every Jira resource, it provides five generic operations: `jira_get`, `jira_post`, `jira_put`, `jira_patch`, and `jira_delete`. Each operation accepts a Jira API path and the relevant query parameters or request body, allowing an agent to work with endpoints beyond the common examples.

Typical read operations include listing or inspecting projects, retrieving issues, searching with JQL, reading comments and worklogs, checking transitions, and looking up users, statuses, issue types, and priorities. Write operations can create issues, add comments or worklogs, transition issues, update resources, and delete issues or related records when the authenticated Jira account has permission.

## How it works

The aashari/mcp-server-atlassian-jira MCP server sends requests to Jira Cloud using the configured site name, user email, and API token. MCP clients invoke the generic tools, while the tool arguments describe the Jira REST path, query parameters, body, output format, and optional `jq` expression.

Responses use TOON by default. JSON can be selected with `outputFormat: "json"`. Every tool supports optional JMESPath-style filtering through the `jq` parameter. Filtering is important for large Jira responses because it limits the fields returned to the client. Query parameters such as `maxResults` can also restrict result counts. A practical workflow is to retrieve one item without a filter to inspect the schema, then request only the needed fields in later calls.

Large responses over approximately 40,000 characters are truncated. The complete raw response is written to a timestamped file under `/tmp/mcp/mcp-server-atlassian-jira/`, and the response includes guidance for narrowing the request.

## Setup and configuration

Install or run the package with `npx` and provide these environment variables:

- `ATLASSIAN_SITE_NAME`: the site portion of the Jira Cloud hostname, such as the value used in `company.atlassian.net`.
- `ATLASSIAN_USER_EMAIL`: the Atlassian account email.
- `ATLASSIAN_API_TOKEN`: an Atlassian API token.

For Claude Desktop, configure the MCP server with the `npx` command and pass the variables in the server's `env` object. The README also documents a system-wide `~/.mcp/configs.json` option. Its environment block can be keyed as `jira`, `atlassian-jira`, `@aashari/mcp-server-atlassian-jira`, or `mcp-server-atlassian-jira`.

## Tools and capabilities

The aashari/mcp-server-atlassian-jira MCP server supports these operations:

- `jira_get` reads any Jira API endpoint.
- `jira_post` creates resources, including issues, comments, and worklogs.
- `jira_put` replaces a resource and should be treated as a full update.
- `jira_patch` changes only specified fields for partial updates.
- `jira_delete` removes resources such as issues, comments, worklogs, attachments, and watchers where the endpoint and permissions allow it.

Issue searches should use `/rest/api/3/search/jql`; the older `/rest/api/3/search` endpoint is marked deprecated in the supplied documentation. Attachment creation requires multipart form data and is described as complex, so the README recommends using the Jira UI for attachments.

## Limitations and notes

The server does not bypass Jira permissions or API behavior; the connected account must be authorized for the requested operation. PUT requests replace the full resource, while PATCH is intended for partial changes. Unfiltered responses can contain substantial metadata and increase token usage, so use `jq` and `maxResults` for routine requests. The available material does not specify a software license.

_Full upstream README: https://allmcps.com/mcp/aashari-mcp-server-atlassian-jira/readme_

