/ Directory / Playground / MCP Atlassian
● Community sooperset 🔑 Needs your key

MCP Atlassian

by sooperset · sooperset/mcp-atlassian

The community gold standard for Jira + Confluence in Claude — search by JQL, file/transition tickets, read/write Confluence pages, all behind one stdio server.

MCP Atlassian is the most-starred third-party Atlassian connector, supporting both Cloud and Server/Data Center. It exposes JQL search, issue CRUD, transitions, comments, attachments, and the full Confluence Storage API. Auth via API token (cloud) or PAT (server). Scoped read-only mode is supported when you don't want write tools exposed.

Why use it

Key features

Live Demo

What it looks like in practice

mcp-atlassian-sooperset.replay ▶ ready
0/0

Install

Pick your client

~/Library/Application Support/Claude/claude_desktop_config.json  · Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "mcp-atlassian-sooperset": {
      "command": "uvx",
      "args": [
        "mcp-atlassian"
      ],
      "env": {
        "JIRA_URL": "https://yourorg.atlassian.net",
        "JIRA_USERNAME": "[email protected]",
        "JIRA_API_TOKEN": "${JIRA_API_TOKEN}",
        "CONFLUENCE_URL": "https://yourorg.atlassian.net/wiki",
        "CONFLUENCE_USERNAME": "[email protected]",
        "CONFLUENCE_API_TOKEN": "${CONFLUENCE_API_TOKEN}"
      }
    }
  }
}

Open Claude Desktop → Settings → Developer → Edit Config. Restart after saving.

~/.cursor/mcp.json · .cursor/mcp.json
{
  "mcpServers": {
    "mcp-atlassian-sooperset": {
      "command": "uvx",
      "args": [
        "mcp-atlassian"
      ],
      "env": {
        "JIRA_URL": "https://yourorg.atlassian.net",
        "JIRA_USERNAME": "[email protected]",
        "JIRA_API_TOKEN": "${JIRA_API_TOKEN}",
        "CONFLUENCE_URL": "https://yourorg.atlassian.net/wiki",
        "CONFLUENCE_USERNAME": "[email protected]",
        "CONFLUENCE_API_TOKEN": "${CONFLUENCE_API_TOKEN}"
      }
    }
  }
}

Cursor uses the same mcpServers schema as Claude Desktop. Project config wins over global.

VS Code → Cline → MCP Servers → Edit
{
  "mcpServers": {
    "mcp-atlassian-sooperset": {
      "command": "uvx",
      "args": [
        "mcp-atlassian"
      ],
      "env": {
        "JIRA_URL": "https://yourorg.atlassian.net",
        "JIRA_USERNAME": "[email protected]",
        "JIRA_API_TOKEN": "${JIRA_API_TOKEN}",
        "CONFLUENCE_URL": "https://yourorg.atlassian.net/wiki",
        "CONFLUENCE_USERNAME": "[email protected]",
        "CONFLUENCE_API_TOKEN": "${CONFLUENCE_API_TOKEN}"
      }
    }
  }
}

Click the MCP Servers icon in the Cline sidebar, then "Edit Configuration".

~/.codeium/windsurf/mcp_config.json
{
  "mcpServers": {
    "mcp-atlassian-sooperset": {
      "command": "uvx",
      "args": [
        "mcp-atlassian"
      ],
      "env": {
        "JIRA_URL": "https://yourorg.atlassian.net",
        "JIRA_USERNAME": "[email protected]",
        "JIRA_API_TOKEN": "${JIRA_API_TOKEN}",
        "CONFLUENCE_URL": "https://yourorg.atlassian.net/wiki",
        "CONFLUENCE_USERNAME": "[email protected]",
        "CONFLUENCE_API_TOKEN": "${CONFLUENCE_API_TOKEN}"
      }
    }
  }
}

Same shape as Claude Desktop. Restart Windsurf to pick up changes.

~/.continue/config.json
{
  "mcpServers": [
    {
      "name": "mcp-atlassian-sooperset",
      "command": "uvx",
      "args": [
        "mcp-atlassian"
      ]
    }
  ]
}

Continue uses an array of server objects rather than a map.

~/.config/zed/settings.json
{
  "context_servers": {
    "mcp-atlassian-sooperset": {
      "command": {
        "path": "uvx",
        "args": [
          "mcp-atlassian"
        ]
      }
    }
  }
}

Add to context_servers. Zed hot-reloads on save.

claude mcp add mcp-atlassian-sooperset -- uvx mcp-atlassian

One-liner. Verify with claude mcp list. Remove with claude mcp remove.

Use Cases

Real-world ways to use MCP Atlassian

Triage a production error into a Jira ticket with linked Confluence runbook

👤 On-call engineers ⏱ ~10 min intermediate

When to use: Sentry alert fired — you want a triaged Jira ticket and a runbook link, fast.

Prerequisites
  • API tokens — Atlassian → My Account → Security → API tokens
Flow
  1. Search related
    Atlassian: search Jira for issues containing 'NullPointerException OrderService' in the last 30 days. Also search Confluence for runbook pages mentioning OrderService.✓ Copied
    → Both result sets returned
  2. Decide: dup or new
    If there's an open BUG issue in last 14 days, comment on it with the new stack trace. Otherwise create a new BUG, link the runbook page, set priority High.✓ Copied
    → Either jira_add_comment or jira_create_issue called once
  3. Hand off
    Tell me the ticket key and short summary so I can post it in Slack.✓ Copied
    → ABC-1234 + 1-line summary

Outcome: Triaged ticket with runbook link in <2 minutes; no double-filing of duplicates.

Pitfalls
  • Stack trace pasted into Jira as plain text loses formatting — Wrap in {code} markers; the MCP forwards as-is
  • JQL injection via user input — Always quote string params; the tool escapes but be explicit
Combine with: sentry · github

Generate a weekly status report from Jira

👤 Tech leads / EM ⏱ ~10 min beginner

When to use: Monday morning: you need to summarize what shipped + what's blocked.

Flow
  1. Pull last week's done
    Atlassian: JQL project = PLAT AND status changed to Done during (-7d, now()) ORDER BY updated DESC✓ Copied
    → Issue list with assignee, key, summary
  2. Pull blocked
    Now JQL project = PLAT AND status = Blocked — for each, summarize the latest comment.✓ Copied
    → Blocked list with last-comment summary per issue
  3. Compose
    Format as a 200-word weekly report grouped by Shipped / Blocked / At Risk.✓ Copied
    → Concise report ready to paste

Outcome: Status report assembled in 90 seconds with cited issue keys.

Pitfalls
  • Long comment threads inflate context — Use jira_get_issue with fields=summary,status,assignee only

Draft a Confluence RFC from a discussion

👤 Engineers writing design docs ⏱ ~20 min intermediate

When to use: You've debated an approach in chat; want a Confluence page out of it.

Flow
  1. Find the parent space
    Atlassian: find the 'Engineering RFC' space. List its top-level pages.✓ Copied
    → Space + parent page identified
  2. Compose
    Create a new page under it titled 'RFC: switch from Redis to Valkey'. Sections: context, goals/non-goals, options considered, decision, plan. Use the discussion above as raw material.✓ Copied
    → confluence_create_page returns a URL

Outcome: Drafted RFC ready for review.

Pitfalls
  • Wrong parent page ID — Always confluence_search by space first

Bulk-clean stale tickets

👤 Eng managers ⏱ ~30 min intermediate

When to use: Backlog has 200 zombies; you want them sorted.

Flow
  1. Identify stale
    JQL: project = PLAT AND status = Open AND updated < -90d. Limit 50.✓ Copied
    → List of stale issues
  2. Propose action
    For each, propose: close-stale, reassign-to-triage, or keep. Show me 10 at a time before transitioning.✓ Copied
    → Per-issue recommendation; you approve in batches
  3. Apply
    Close the ones I approved with a 'closing as stale' comment.✓ Copied
    → jira_transition_issue + jira_add_comment called per issue

Outcome: Backlog cleaned with audit trail per issue.

Pitfalls
  • Auto-closing legitimate-but-quiet tickets — Always batch + confirm before transition

Combinations

Pair with other MCPs for X10 leverage

mcp-atlassian-sooperset + sentry

Convert Sentry errors into well-formed Jira tickets

Sentry: get the latest critical issue. Atlassian: file a Jira BUG with the stack trace and link the Sentry URL.✓ Copied
mcp-atlassian-sooperset + github

Link PRs to Jira tickets automatically

GitHub: find PRs merged today. Atlassian: for each, comment on the linked Jira issue with the PR URL.✓ Copied

Tools

What this MCP exposes

ToolInputsWhen to callCost
jira_search jql: str, limit? Any Jira lookup 1 API call
jira_get_issue key: str, fields? Need full body of one issue 1 call
jira_create_issue project, type, summary, description, fields? File new ticket 1 call
jira_transition_issue key, transition, comment? Move issue through workflow 1 call
jira_add_comment key, body Append context 1 call
confluence_search cql: str Find docs 1 call
confluence_get_page id: str Read page content 1 call
confluence_create_page space, parent_id, title, body New doc 1 call
confluence_update_page id, title, body, version Edit doc 1 call

Cost & Limits

What this costs to run

API quota
Atlassian Cloud: 5000 req/h per user/token (varies by tier)
Tokens per call
300–4000
Monetary
Free OSS; your Atlassian plan applies
Tip
Use fields= to slim payloads; jira_get_issue defaults are heavy

Security

Permissions, secrets, blast radius

Minimum scopes: read:jira-work write:jira-work read:confluence-content.all write:confluence-content
Credential storage: API token in env var; rotate via My Account
Data egress: Only your atlassian.net (or self-hosted) instance
Never grant: site-admin

Troubleshooting

Common errors and fixes

401 Unauthorized

Token expired or wrong username (must be email for Cloud)

Verify: curl -u email:token $URL/rest/api/3/myself
JQL parse error

Quote string values, escape special chars; preview with the Jira UI first

Forbidden when creating in space

Token user lacks 'Add page' permission in that space

Rate-limited 429

Backoff; reduce parallel fanout; check Atlassian rate limit per token

Verify: X-RateLimit headers

Alternatives

MCP Atlassian vs others

AlternativeWhen to use it insteadTradeoff
Atlassian official MCP (Cloud)You only use Cloud and want OAuthNewer, narrower toolset; doesn't cover Server/DC
Linear MCPYou're on Linear, not JiraDifferent system; faster/cleaner but no Confluence equivalent

More

Resources

📖 Read the official README on GitHub

🐙 Browse open issues

🔍 Browse all 400+ MCP servers and Skills