-
Notifications
You must be signed in to change notification settings - Fork 0
Security Model
What this server does and does not defend. The short version: it is an MCP protocol adapter with exposure governance, credential hygiene, and transport reliability. Authorization itself always lives in Atlassian.
- The local user is trusted. They control the process, the flags, and the environment. Nothing here defends against them.
- The LLM agent is the governed party. The exposure tier bounds which operations an agent can invoke accidentally or without supervision.
- Atlassian is the final authorization boundary. Every request carries the caller's own PAT; the server never elevates or combines permissions.
- Default tier is
read;safe/risky/maxwiden deliberately. - Global/system-administration operations are permanently excluded from the runtime policy and cannot be restored by any flag.
- Unknown, hidden, or excluded operations fail closed — the resolver is the single decision point for generic execute, typed tools, downloads, and server info. MCP annotations are client hints and never bypass it.
- This is an exposure boundary, not an authorization boundary: it does not replace PAT permissions, enterprise policy, approvals, or audit. Project/space/repository allowlists are intentionally not duplicated at the MCP layer — permission control is Atlassian's job.
- PAT (Bearer) per product preferred; one shared Basic fallback.
- Credentials,
Authorization, andCookieheaders are redacted from every tool error and log line; upstream 5xx implementation details are suppressed and error details are depth/size bounded. - Base URLs embedding
user:pass@(or query/fragment) are rejected at startup, so credentials can never leak throughatlassian_server_info. - Store tokens via MCP-client env interpolation or a local
0600file; keychain/secret-store integration is deliberately out of scope.
- TLS certificate and hostname verification is on by default; disabling it is explicit-only, strictly parsed (a typo aborts startup rather than silently disabling verification), and always warned about.
- Redirects are never followed. A 3xx becomes a structured error — this prevents credential forwarding to a different origin and stops redirect HTML from being saved as a "successful" download.
- Requests are never automatically retried — reads or writes, including on 429, 5xx, or network errors; whether to retry is the calling model's decision. After a timeout or 5xx the upstream outcome may be unknown; replaying a write could duplicate it.
- Local file access is opt-in via
ATLASSIAN_FILE_ROOT(or per-product roots); every path must resolve inside the root after symlink resolution. - Uploads, downloads,
outputPath, andstorageValueFileare size-capped, limited to regular files, sized before reading, and never overwrite existing files. The exact limits live in Attachments and Large Results.
Pagination cursors are HMAC-signed, bound to the operation and request parameters, expire after 15 minutes, and exist only for GET operations — a forged or repurposed continuation cannot smuggle a write or another query.
- No audit log. Atlassian Data Center ships its own auditing; the project's security boundary is exposure policy plus credential redaction.
- No keychain integration, no resource-level allowlists, no automatic retries.
Report security issues through GitHub issues on the project repository. Only the latest minor release line receives security fixes.
中文版 · English is the authoritative version.
Documentation source: docs/wiki/
— changes are reviewed via pull request; edits made directly in this wiki
are overwritten by the next sync. · 中文首页
Get started
Workflows
Reference
- Exposure tiers
- Attachments and large results
- Security model
- Compatibility matrix
- Upgrade guide
- Troubleshooting