atlassian · git:20260728.e04a3ae · 2026-07-28 · sha256 09050f7aad19389d
atlassian git:20260728.e04a3aeA
Immutable. This exact content is served forever at /api/v1/blob/09050f7aad19389d.
---
name: atlassian
description: Use when the user wants to connect to Jira, Confluence, or Compass — search issues with JQL, read or create issues and pages, link content across products, or set up Atlassian auth. The connector — not security tradecraft.
---
# Atlassian (Jira / Confluence / Compass)
Connector for Atlassian Cloud via the official Rovo remote MCP — one server, three
products. The agent sees the tool surface once it loads — this skill covers auth,
the per-product query languages, and the idioms. Security triage methodology —
dedup, severity, SLA, owner inference — is deliberately out of scope; pair this
with whichever triage capability your workflow uses.
## Auth
Native HTTP MCP with OAuth 2.1 + DCR; the runtime drives the flow, no
`mcp-remote` bridge. Atlassian doesn't publish an RFC 9728 protected-resource
document, so discovery resolves through the authorization-server metadata on
`mcp.atlassian.com`, which points at `cf.mcp.atlassian.com` for
authorize/token/register. Nothing to configure — but if you're debugging a failed
connect, that's the chain to walk, and it's why the `.well-known/
oauth-protected-resource` probes you'd try first come back 404.
### A. OAuth 2.1 (default)
On first connect, `atlassian` shows in Services as `needs authentication`. Click
**Authenticate** → browser → sign in and grant the Rovo scopes; tokens persist to
`~/.dreadnode/mcp-auth.json` (mode 0600) and refresh silently. Access respects your
existing Jira / Confluence / Compass roles. Switch sites / revoke via Services →
`atlassian` → **Re-authenticate**. SSH/headless: `DREADNODE_HEADLESS=1` logs the URL.
**First install on a new site needs a site admin** to complete consent once; until
then other users see "Your site admin must authorize this app." That's
Atlassian-side, not us.
### B. API token (only if your admin allowed it)
For unattended use, **just set one secret** — no manifest edit. The server entry
carries an optional `Authorization` header bound to `ATLASSIAN_BASIC`: set it and
Basic auth wins, leave it unset and OAuth (A) stays default.
1. Admin enables "authentication via API token" in **Rovo MCP server settings**
(off by default).
2. Generate a token: <https://id.atlassian.com/manage-profile/security/api-tokens>.
3. Personal tokens use **Basic** (`email:token`, base64). Interpolation can't
base64 for you — compute it and store the result as `ATLASSIAN_BASIC`:
```bash
printf '%s:%s' you@example.com ATATT… | base64 | tr -d '\n'; echo
```
Then reload. (Service-account API **keys** use Bearer — change `Basic` to `Bearer`
in the manifest header and bind `${ATLASSIAN_API_KEY}`.)
If the admin hasn't enabled token auth this path 401s with a clear error — unset the
secret and reload to fall back to OAuth. Token-auth agents bypass OAuth domain
allowlists and are governed by IP allowlist + token scopes instead. Don't paste
tokens into chat.
Read vs write is enforced by the user's **project / space roles** (or the token's
scopes on path B) — there's no protocol-level read-only mode.
## Query languages — know which product
- **Jira: JQL.** `project = "ENG" AND status = "Open" AND assignee = currentUser()
ORDER BY priority DESC`.
<https://support.atlassian.com/jira-service-management-cloud/docs/use-advanced-search-with-jira-query-language-jql/>
- **Confluence: CQL.** `space = "ENG" AND type = page AND title ~ "release"`.
<https://developer.atlassian.com/cloud/confluence/cql-fields/>
- **Compass:** structured typed filters (component type, owner team, dependencies),
not a DSL.
Prefer JQL / CQL with the search tool over post-filtering large lists. `ENG-123` is
the canonical Jira key — use it directly when the user has it. Always scope queries
(`project = …`) — instance-wide ones are slow and rate-limited.
## Idioms
- **Rate limits bite.** Free 500/hr; Standard / Premium / Enterprise 1000/hr base
(+20/user up to 10k/hr on higher tiers). Bulk loops blow through these — batch and
back off. The Rovo MCP supports bulk create from a spec / meeting notes: parse into
`{summary, description, …}` records, then create per record.
- The Rovo MCP is a **secure proxy, not a cache** — every call hits Atlassian Cloud;
"I just read it" doesn't mean it's unchanged. It can also link entities across
products (tickets ↔ a release-plan page ↔ a Compass component).
- `currentUser()` in JQL is the **OAuth user**, not the agent — with a service
account, "assigned to me" means the service account.
- Don't invent custom field IDs — list the project's fields when the schema isn't obvious.
- No FedRAMP / HIPAA workloads through this MCP.