atlassian-cli

Single-binary MCP server and CLI for Jira and Confluence. CI/CD-friendly, context-efficient, supports both Cloud and Server/DC.

atlassian-cli

Logo
A lightweight, native Go CLI for Atlassian Jira and Confluence


Installation

go install (recommended)

Requires Go 1.21+:

go install github.com/putcho01/atlassian-cli@latest

If $GOPATH/bin is not in your $PATH, add the following to your shell config (~/.zshrc, etc.):

export PATH="$PATH:$(go env GOPATH)/bin"

From source

git clone https://github.com/putcho01/atlassian-cli.git
cd atlassian-cli
go build -o atlassian-cli .

Quick Start

Cloud (atlassian.net)

  1. Create an API Token

  2. Set environment variables:

export JIRA_URL=https://your-domain.atlassian.net
export [email protected]
export JIRA_API_TOKEN=your-api-token
  1. Verify authentication:
atlassian-cli jira myself

To use Confluence as well, set the additional variables:

export CONFLUENCE_URL=https://your-domain.atlassian.net/wiki
export [email protected]
export CONFLUENCE_API_TOKEN=your-api-token

Server/Data Center

export JIRA_URL=https://jira.example.com
export JIRA_PERSONAL_TOKEN=your-pat

If JIRA_EMAIL is not set, Bearer (PAT) authentication is used automatically.

Authentication

Two authentication methods are supported:

Cloud - API Token (Basic Auth)

Used with Atlassian Cloud (*.atlassian.net). Authenticates via Basic auth using your email address and API token.

VariableDescription
JIRA_URLJira Cloud URL (e.g. https://your-domain.atlassian.net)
JIRA_EMAILYour Atlassian account email address
JIRA_API_TOKENAPI Token
JIRA_DEFAULT_PROJECTDefault project key used when --project is omitted (optional)
CONFLUENCE_URLConfluence Cloud URL (e.g. https://your-domain.atlassian.net/wiki)
CONFLUENCE_EMAILYour Atlassian account email address
CONFLUENCE_API_TOKENAPI Token

Server/Data Center - Personal Access Token (Bearer)

Used with self-hosted Jira/Confluence Server/DC. Authenticates via Bearer auth using a PAT.

VariableDescription
JIRA_URLJira base URL (e.g. https://jira.example.com)
JIRA_PERSONAL_TOKENPersonal Access Token
JIRA_DEFAULT_PROJECTDefault project key used when --project is omitted (optional)
CONFLUENCE_URLConfluence base URL
CONFLUENCE_PERSONAL_TOKENPersonal Access Token

If EMAIL is set, Basic auth (Cloud) is used; otherwise Bearer auth (Server/DC) is used.

Only the variables for the service you use are required. For example, if you only use Jira, you don't need to set the Confluence variables.

Commands

Jira

# Authentication
atlassian-cli jira myself                # Show authenticated user

# Issues
atlassian-cli jira issue get PROJ-123    # Get issue (includes description)
atlassian-cli jira issue open PROJ-123   # Open issue in browser
atlassian-cli jira issue search "project = PROJ"       # Search issues via JQL
atlassian-cli jira issue search "project = PROJ" -i    # Interactive TUI picker (↑/↓ navigate, enter detail, o open, q quit)
atlassian-cli jira issue create --project PROJ --summary "New task"  # or omit --project if JIRA_DEFAULT_PROJECT is set
atlassian-cli jira issue update PROJ-123 --field summary="Updated summary"
atlassian-cli jira issue delete PROJ-123
atlassian-cli jira issue subtasks PROJ-123
atlassian-cli jira issue transition PROJ-123 "In Progress"

# Comments
atlassian-cli jira issue comment list PROJ-123
atlassian-cli jira issue comment add PROJ-123 --body "Looks good to me"

Confluence

# Pages
atlassian-cli confluence page get 12345          # Get page content
atlassian-cli confluence page create --space PROJ --title "New Page" --body "<p>Hello</p>"
atlassian-cli confluence page create --space PROJ --title "Child Page" --parent 12345 --body "<p>Child</p>"
atlassian-cli confluence page update 12345 --title "Updated Title" --body "<p>New content</p>"           # version auto-detected
atlassian-cli confluence page update 12345 --title "Updated Title" --body "<p>New content</p>" --version 3  # explicit version

# Labels
atlassian-cli confluence label list 12345
atlassian-cli confluence label add 12345 important,reviewed
atlassian-cli confluence label remove 12345 outdated

# Page Restrictions
atlassian-cli confluence restriction list 12345
atlassian-cli confluence restriction add 12345 --operation update --type user --name <account-id>
atlassian-cli confluence restriction remove 12345 --operation update --type user --name <account-id>

Output Formats

All commands support three output formats via the --output / -o flag:

# Default: human-readable table
atlassian-cli jira issue search "project = PROJ" -o table

# Machine-readable JSON
atlassian-cli jira issue search "project = PROJ" -o json

# GitHub-flavored Markdown (great for Claude Code)
atlassian-cli jira issue search "project = PROJ" -o markdown

HTML to Markdown Conversion

When using -o markdown, HTML content (Jira descriptions, Confluence page bodies and comments) is automatically converted to clean GitHub-flavored Markdown. Confluence storage format macros are also handled:

  • Code blocks (ac:structured-macro name="code") -> fenced code blocks
  • Admonitions (note, info, warning, tip) -> blockquotes with labels
  • Page links (ac:link) -> emphasized text
  • Table of contents macros -> removed

MCP Server

Start as an MCP server for AI assistant integration:

atlassian-cli mcp-server

Tool Group Filtering

Filter available tools using the --tools flag:

# Only enable Jira issue and search tools
atlassian-cli mcp-server --tools jira_issue,jira_search

# Only enable Confluence tools
atlassian-cli mcp-server --tools confluence_page,confluence_label

Available tool groups:

  • jira_user - User authentication
  • jira_issue - Get issue, subtasks
  • jira_search - Search issues via JQL
  • jira_create - Create issues
  • jira_update - Update issues
  • jira_delete - Delete issues
  • jira_transition - Transition issues, get available transitions
  • confluence_page - Get page content
  • confluence_label - Label management
  • confluence_restriction - Page restriction management

Claude Code Integration

Add to your Claude Code MCP settings:

{
  "mcpServers": {
    "atlassian": {
      "command": "atlassian-cli",
      "args": ["mcp-server"],
      "env": {
        "JIRA_URL": "https://your-domain.atlassian.net",
        "JIRA_EMAIL": "[email protected]",
        "JIRA_API_TOKEN": "your-api-token",
        "CONFLUENCE_URL": "https://your-domain.atlassian.net/wiki",
        "CONFLUENCE_EMAIL": "[email protected]",
        "CONFLUENCE_API_TOKEN": "your-api-token"
      }
    }
  }
}

Why not the official ACLI?

Atlassian provides an official CLI (ACLI) and a remote MCP server for AI integration. Here's how this tool differs:

vs. ACLI

atlassian-cliACLI
DistributionSingle binary, no dependenciesRequires package installation
AuthenticationEnvironment variables onlyInteractive acli auth login
CI/CD friendlinessHigh — no browser flow neededLimited — headless login is cumbersome
Server/DC supportYes (PAT auth)Cloud-focused
Target audienceDevelopers, automation, AI agentsAdmins, bulk operations

vs. Atlassian remote MCP server

Atlassian's remote MCP server went GA in February 2026, but comes with trade-offs:

  • Context-heavy — loads 73 tool schemas upfront, consuming 40–50% of the context window before any real work
  • OAuth required — browser-based auth flow; not suitable for headless or CI/CD environments
  • Network dependency — requires an outbound connection to Atlassian's remote server

This tool's --tools flag lets you load only the groups you need, keeping token usage minimal for AI agents.

When to choose this tool

  • Running in CI/CD pipelines or automation scripts (auth via environment variables only)
  • Using both Server/Data Center and Cloud with a single interface
  • Embedding as an MCP server in AI agents where context efficiency matters

License

MIT

Serveurs connexes

NotebookLM Web Importer

Importez des pages web et des vidéos YouTube dans NotebookLM en un clic. Utilisé par plus de 200 000 utilisateurs.

Installer l'extension Chrome