Skip to content

Atlassian Rovo MCP: Jira, Confluence and Bitbucket from Your Agent

The Atlassian Rovo MCP server is Atlassian’s official, cloud-hosted MCP endpoint (https://mcp.atlassian.com/v2/mcp) that lets Claude Code, Codex and Cursor read and update Jira, Confluence, Bitbucket, Jira Service Management and Compass. It authenticates with OAuth 2.1 or an admin-enabled API token and never exceeds the Atlassian permissions of the account it signs in as.

This page is for developers who pick up work from Jira and tech leads who configure the connection for a team. You are two days into PROJ-88 when the product manager asks why the export button ignores the date filter. The requirement was added to the Confluence spec after you read it, and nothing in the ticket told you. With the Atlassian server connected, one prompt has the agent re-read the ticket and the spec and tell you which requirements the code does not meet yet.

What you get from connecting Atlassian Rovo MCP

Section titled “What you get from connecting Atlassian Rovo MCP”
  • The current /v2/mcp setup for Claude Code, Codex and Cursor, plus the API-token variant for headless runs and Jira Service Management.
  • A decision table: official remote server, the vendor plugin, or sooperset/mcp-atlassian for Server and Data Center.
  • A requirements-traceability workflow (Confluence spec → code and tests → Jira comment) with three copy-paste prompts.
  • A verification step that proves each requirement is covered by a passing test, so nobody reads the whole diff to find out.
  • The traps and failure modes that the vendor README does not group in one place.

Which Atlassian MCP server should you use?

Section titled “Which Atlassian MCP server should you use?”
Your situationUseWhy
Atlassian Cloud, interactive workOfficial server at https://mcp.atlassian.com/v2/mcp with OAuth 2.1Vendor-hosted, no local process, respects each user’s permissions
Claude Code user who wants ready-made workflowsThe atlassian plugin from claude-plugins-officialWires the same /v2/mcp server plus six skills, including spec-to-backlog and triage-issue
Headless agent, CI job or Jira Service Management toolsOfficial server with an API tokenJSM tools accept API tokens only; OAuth needs a browser
Jira or Confluence Server or Data CenterCommunity server sooperset/mcp-atlassian (PyPI mcp-atlassian 0.23.1), run with uvxThe official server connects to Atlassian Cloud sites only

Popularity as of 2026-09-26: the official atlassian/atlassian-mcp-server repository has about 1.1k GitHub stars, the atlassian plugin shows 92,289 installs on the Claude plugin directory, and the server is listed in the Official MCP Registry under com.atlassian. The community sooperset/mcp-atlassian repository has about 5.9k stars. Stars measure attention, not quality; the official server is the default for Cloud.

Connect the Atlassian Rovo MCP server with OAuth

Section titled “Connect the Atlassian Rovo MCP server with OAuth”

The endpoint is the same in all three tools. What differs is how each tool registers a remote server and starts the OAuth sign-in.

Run in your terminal:

Terminal window
claude mcp add --transport http atlassian https://mcp.atlassian.com/v2/mcp

Then start a session, run /mcp, select atlassian and complete the browser sign-in. Choose the Atlassian site the agent should work on. The command writes to the local scope (this project, only you); add --scope project to commit the entry to .mcp.json for the team, or --scope user for all your projects.

For the plugin instead of the bare server:

Terminal window
claude plugin install atlassian@claude-plugins-official

Check what it costs before you keep it: run claude plugin details atlassian for its component inventory and projected token cost, and compare /context in a session before and after.

Confirm the connection before you rely on it. Ask the agent: “List the Jira projects I can see through the Atlassian MCP server.” A list of project keys means the sign-in, site selection and permissions all work.

When should you use an API token instead of OAuth?

Section titled “When should you use an API token instead of OAuth?”

Use an API token when no one is at a browser to approve OAuth (CI, a scheduled agent, a remote container) or when you need Jira Service Management tools, which the server offers only over API-token authentication. Two conditions apply first:

  1. An organization admin must enable API-token authentication in Atlassian Administration → Rovo → Rovo MCP server → Authentication. Until then, token requests fail and only OAuth works.
  2. The token needs the scopes for the tools you call. Create a scoped personal API token, or ask the admin for a service-account API key.

The server accepts two headers: Authorization: Basic <base64(email:api_token)> for a personal token and Authorization: Bearer <api_key> for a service-account key. Keep the secret in an environment variable or a secret store, never in a committed file or on a command line.

Build the Basic value once per shell. tr -d '\n' matters: GNU base64 wraps long output, and a newline inside the header breaks authentication.

Terminal window
export ATLASSIAN_BASIC_AUTH=$(printf '%s' "you@example.com:$ATLASSIAN_API_TOKEN" | base64 | tr -d '\n')

Reference it from .mcp.json; Claude Code expands ${VAR} in headers at load time, so the file holds no secret:

{
"mcpServers": {
"atlassian": {
"type": "http",
"url": "https://mcp.atlassian.com/v2/mcp",
"headers": {
"Authorization": "Basic ${ATLASSIAN_BASIC_AUTH}"
}
}
}
}

Pin the site, project and space so the agent stops searching

Section titled “Pin the site, project and space so the agent stops searching”

Every session otherwise starts with discovery calls: which sites you can access, which projects, which spaces. Atlassian’s README recommends pinning them in AGENTS.md (or CLAUDE.md for Claude Code). This block is theirs, with your values:

## Atlassian MCP
When connected to the Atlassian MCP server:
- MUST use Jira project key = PROJ
- MUST use Confluence spaceId = "123456"
- MUST use cloudId = "https://yourcompany.atlassian.net" (do NOT call getAccessibleAtlassianResources)
- MUST use `maxResults: 10` or `limit: 10` for ALL Jira JQL and Confluence CQL searches.

Replace PROJ, the space ID and the site URL with your own. The search limit keeps large result sets out of the context window.

How does the v2 server keep its context cost down?

Section titled “How does the v2 server keep its context cost down?”

The v2 server exposes a small set of primary tools and reaches the rest through discover and execute meta-tools, so the full tool list never lands in context. Two consequences:

  • A gateway that needs every tool up front can request https://mcp.atlassian.com/v2/mcp?tools=all. Measure with /context before you adopt it; the flat list costs far more than the primary set.
  • Tool names changed between v1 and v2. getConfluencePage became getConfluenceContent, searchConfluenceUsingCql became searchConfluence, and addCommentToJiraIssue became addOrEditJiraIssueComment. A custom skill or prompt that names v1 tools needs updating. Prompts that describe the outcome (“read the page”, “add a comment”) are unaffected.

For the general technique, see reducing MCP token cost.

Trace requirements from Confluence to code to Jira

Section titled “Trace requirements from Confluence to code to Jira”

This workflow turns “did we build what the spec says?” into a table that tests prove, instead of a question someone answers by reading the diff. It is the plan → build → verify → ship loop with the spec and the ticket as the inputs and a Jira comment as the record. For how to write criteria an agent can check, see acceptance criteria for agents.

Step 1: extract the requirements and find the gaps

Section titled “Step 1: extract the requirements and find the gaps”

Start with a prompt that reads but does not write. The agent pulls PROJ-88, follows the Confluence link and compares each requirement to the code.

Read docs/traceability/PROJ-88.md. Resolve every “vague” or “conflicting” row with the product owner before anything is built. This is the only step where a person reads the requirements closely.

Step 3: turn each gap into a failing test, then implement

Section titled “Step 3: turn each gap into a failing test, then implement”

Tests come first so the evidence exists before the code.

Step 4: write the evidence back to Jira after CI is green

Section titled “Step 4: write the evidence back to Jira after CI is green”

Writes happen last, and you approve them in the agent’s permission prompt.

In Claude Code, the plugin’s spec-to-backlog skill covers the step before this one: it reads a Confluence spec, shows you a proposed Epic and child tickets, and creates them only after you approve the breakdown. For pull requests and branches in the same loop, pair this server with GitHub MCP or gh; for the Linear and Notion equivalents, see tickets and docs over MCP.

How do you verify the traceability output without reading every line?

Section titled “How do you verify the traceability output without reading every line?”

The matrix is only useful if each row is backed by something a machine checked. Four checks, in order:

  • Every row names a test, and CI runs it. A MET row with no test name is a claim, not evidence. Reject the matrix until each row has one.
  • The new tests failed before the change. The step 3 prompt asks for the red run; keep it in the session log or the PR description. A test that never failed may not test the requirement.
  • Sample, do not read everything. The reviewer opens two or three rows at random and reads the requirement, the test and the code together. If those hold, trust the rest; if one does not, send the whole matrix back.
  • The Jira comment is the audit trail. It records which requirement maps to which test at merge time. Atlassian also logs every MCP tool call in Atlassian Administration → Insights → Audit log, so an admin can check what the agent changed. For a reusable format for this evidence, see the evidence bundle.

Sign-off is split. The product owner approves the requirement list (step 2); the tech lead or the reviewer on the PR approves the test mapping. For review standards beyond this page, see reviewing agent pull requests.

The official server works with Atlassian Cloud sites only. For Server or Data Center, use sooperset/mcp-atlassian (supports Jira 8.14+ and Confluence 6.0+ on Server/Data Center) with a personal access token per product. In a Claude Code .mcp.json, reference the tokens from environment variables:

{
"mcpServers": {
"mcp-atlassian": {
"command": "uvx",
"args": ["mcp-atlassian"],
"env": {
"JIRA_URL": "https://jira.yourcompany.internal",
"JIRA_PERSONAL_TOKEN": "${JIRA_PERSONAL_TOKEN}",
"CONFLUENCE_URL": "https://confluence.yourcompany.internal",
"CONFLUENCE_PERSONAL_TOKEN": "${CONFLUENCE_PERSONAL_TOKEN}"
}
}
}
}

It needs uv installed, and it runs on the developer’s machine, so its tools see whatever the token can see. Codex and Cursor take the same command and environment variables in their own config formats. The workflow above works unchanged.

“You don’t have permission to connect from this IP address.” Your organization uses IP allowlisting, and MCP tool calls must come from an allowed address. Ask the admin to add your office or VPN range, or connect from an allowed network. A CI runner with a changing IP will hit this every time; give it a fixed egress IP that is on the list.

OAuth fails for your tool, or the site is not offered. Admins control which AI tools and domains may connect in the Rovo MCP server settings page in Atlassian Administration; OAuth connections from a domain that is not allowed are refused. Ask the admin to allow the client. Individual users can also revoke their own authorizations from their profile, so check that yours is still there.

It worked yesterday on /v1, and sign-in now loops. After the move to v2 tools, some clients keep a cached client ID or .well-known credentials that no longer match. Remove and re-add the server (claude mcp remove atlassian, or codex mcp logout atlassian followed by codex mcp login atlassian) and sign in again, this time on /v2/mcp.

Jira Service Management tools are missing. They exist only with API-token authentication. Under OAuth, the agent cannot see them. Switch that connection to a token, and check that the admin has enabled token auth.

Compass tools vanish after switching to a token. Compass is OAuth-only. Keep one OAuth connection for Compass work if you also need a token connection for JSM.

Bitbucket repositories do not appear. Bitbucket Cloud tools work only for workspaces linked to an Atlassian organization. An unlinked workspace cannot be selected at sign-in.

The agent cannot delete issues or change project settings. The delete_jira and manage_jira permission groups are disabled by default. Leave them off unless an admin has a reason to enable them; an agent rarely needs either.

The agent searches for “Platform Engineering” and finds nothing. JQL uses project keys, not display names. Put the key (PROJ) in the prompt or in the AGENTS.md block above.

A ticket description tells the agent to do something you did not ask. Ticket and page text is untrusted input, and prompt injection through it is a real risk that Atlassian’s own README warns about. Keep write tools behind the permission prompt, never auto-approve Jira or Confluence writes, and read MCP security before you run this server unattended. For transport-level failures that affect every server, see MCP connection issues.