Skip to main content

atli

atli is a command-line interface for Jira and Confluence. It exposes every operation of mcp-atlassian as an ordinary shell command — no MCP client, server process, or daemon. Tools are discovered at startup from the mcp-atlassian server itself, so new tools appear automatically with pinned versions.

atli tools                              # list what your credentials unlock
atli jira get-issue --issue-key PROJ-1  # markdown, verbatim from the tool
atli confluence search --query "deploy"
atli --profile work jira search --jql "assignee = currentUser()"

Install

$ pipx install mcp-atlassian-cli

Or from a checkout:

$ git clone <this-repo> && cd mcp-atlassian-cli
$ python -m venv .venv
$ .venv/bin/pip install -e .
$ .venv/bin/atli tools

Requires Python 3.11+. The package pins mcp-atlassian>=0.23,<0.24 (which resolves to fastmcp 3.4.x today) and cyclopts>=4.22,<5.

Authentication

atli authenticates with the same environment variables as mcp-atlassian. Tools appear only for services you have configured — 63 Jira commands with JIRA_* set, 35 Confluence commands with CONFLUENCE_* set, 98 with both, none with neither.

Deployment Jira Confluence
Cloud (basic auth) JIRA_URL + JIRA_USERNAME + JIRA_API_TOKEN CONFLUENCE_URL + CONFLUENCE_USERNAME + CONFLUENCE_API_TOKEN
Data Center / Server (PAT) JIRA_URL + JIRA_PERSONAL_TOKEN CONFLUENCE_URL + CONFLUENCE_PERSONAL_TOKEN
Data Center / Server (mTLS) JIRA_URL + JIRA_CLIENT_CERT (+ JIRA_CLIENT_KEY) CONFLUENCE_URL + CONFLUENCE_CLIENT_CERT (+ CONFLUENCE_CLIENT_KEY)

Notes:

  • On Cloud, username is the Atlassian account email; the API token comes from https://id.atlassian.com/manage-profile/security/api-tokens.
  • On Data Center/Server, the personal token is created under Profile → Personal Access Tokens.
  • mTLS with an encrypted private key is not supported (the underlying library rejects it). Decrypt the key first: openssl rsa -in key.enc -out key.
  • Data Center/Server also accepts username + API token via the same *_USERNAME/*_API_TOKEN variables if basic auth is enabled.
  • *URL may include /wiki for Confluence. The URL decides Cloud vs Data Center: hosts ending in .atlassian.net (also .jira.com, .jira-dev.com, .atlassian.com, and exact-match api.atlassian.com, plus the US-Gov domains) mean Cloud; everything else, including localhost and private IPs, means Data Center/Server.
$ export JIRA_URL="https://your-company.atlassian.net"
$ export JIRA_USERNAME="you@your-company.com"
$ export JIRA_API_TOKEN="..."
$ atli tools | head -3

Profiles (multiple instances)

Storing credentials in a TOML file lets you switch instances with --profile NAME and keep several side by side. Config lookup order:

  1. $ATLI_CONFIG — if set, must point at an existing file (an error otherwise)
  2. ./.atli.toml in the current directory
  3. ~/.config/atli/config.toml

The first existing file wins. Any key you set in a profile (including options such as TOOLSETS = "all", which is unprefixed) replaces the ambient environment for that service prefix; prefixes the profile doesn't mention are left untouched. TOOLSETS only takes effect in a profile that also sets at least one service-prefixed key (JIRA_*/CONFLUENCE_*/MCP_ATLASSIAN_*) — a TOOLSETS-only profile changes nothing.

# ~/.config/atli/config.toml
default_profile = "work"

[profiles.work]
JIRA_URL = "https://your-company.atlassian.net"
JIRA_USERNAME = "you@your-company.com"
JIRA_API_TOKEN = "..."
CONFLUENCE_URL = "https://your-company.atlassian.net/wiki"
CONFLUENCE_USERNAME = "you@your-company.com"
CONFLUENCE_API_TOKEN = "..."

[profiles.dc]
JIRA_URL = "https://jira.internal.example.com"
JIRA_PERSONAL_TOKEN = "..."

Warning: profiles are plaintext credentials. After creating the file, run:

$ chmod 600 ~/.config/atli/config.toml

Profile selection order: --profile NAME flag > $ATLI_PROFILE > the default_profile key. The flag must appear before the subcommand; atli --profile=work tools and atli --profile work tools both work.

$ atli profiles            # lists profiles and URLs — never tokens
* work (default)
    jira: https://your-company.atlassian.net
    confluence: https://your-company.atlassian.net/wiki
  dc
    jira: https://jira.internal.example.com
$ atli --profile dc jira get-issue --issue-key OPS-42

Priming AI agents (atli prime)

atli prime prints a compact primer of the local setup — configured services, active profile, usage patterns, quirks — as AI-optimized markdown. It is designed for SessionStart hooks, so agents re-learn atli after context compaction. It never imports mcp-atlassian and costs milliseconds.

The one-command onboarding installs the hook for you — idempotent, never clobbering existing settings:

$ atli prime --install               # detect harnesses, user scope
$ atli prime --install --scope project  # .claude/settings.json in the repo
  • Claude Code is supported (user or project scope).
  • Gemini CLI and Codex are detected but not auto-installed: Gemini runs SessionStart hooks without injecting their context (gemini-cli issue #15413); Codex hooks are experimental. atli prime --hook-json output remains compatible with both if you wire them manually.

Manual Claude Code hook, if you prefer (same envelope as the installer writes; the --hook-json envelope is what Gemini CLI and Codex would need too, wired by hand until their hook support lands):

{
  "hooks": {
    "SessionStart": [
      { "hooks": [{ "type": "command", "command": "atli prime --hook-json" }] }
    ]
  }
}
$ atli prime [--hook-json] [--export]

Claude Code hook (same envelope serves Gemini CLI and Codex):

{
  "hooks": {
    "SessionStart": [
      { "hooks": [{ "type": "command", "command": "atli prime --hook-json" }] }
    ]
  }
}
  • --hook-json wraps the output in the SessionStart hook envelope.
  • --export prints the default content (ignores overrides, works even when nothing is configured) — the starting point for customization.
  • With nothing configured and no override file, prime prints nothing and exits 0 — zero token cost on machines where atli cannot act anyway.
  • The Configured line reads exported variables and profiles only; .env files (consumed inside mcp-atlassian) are invisible to prime.

Override — a PRIME.md file replaces the default content entirely (no dynamic header, prints even when unconfigured). Lookup order, first existing file wins:

  1. $ATLI_PRIME — must point at an existing file (an error otherwise)
  2. ./.atli/PRIME.md — current directory; check it into the repo for project-specific conventions
  3. ~/.config/atli/PRIME.md — personal default

Exit codes

Code Meaning
0 Success (tool output on stdout)
1 Tool or server failure — the tool's error message on stderr
2 Usage or configuration error — bad flags, missing/invalid config file, unknown profile

Notes for agents and scripts

  • atli tools --search TEXT shortlists tools by keyword across names and full descriptions.
  • atli <service> <tool> --help shows every parameter with its type and default, straight from the tool's schema.
  • Parameter descriptions in a tool's --help come verbatim from the tool's schema — accepted formats and semantics, straight from the source.
  • Popular tools show real invocations under Example invocations: in --help — identifiers like --page-id, JQL and relative-date formats, @file for long content.
  • Repeatable list flags repeat: --read-users alice --read-users bob (on confluence set-page-restrictions) gives ["alice", "bob"]; --read-users alice,bob gives one element "alice,bob".
  • String values expand: --body @comment.md reads the file, - reads stdin (when piped), @@text passes a literal @text. A missing file is a usage error (exit 2) whose message shows the escape.
  • Startup takes ~1 s warm, a few seconds cold (the mcp-atlassian import dominates). For bulk work, prefer one search over many single-item calls.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mcp_atlassian_cli-0.3.0.tar.gz (47.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mcp_atlassian_cli-0.3.0-py3-none-any.whl (27.9 kB view details)

Uploaded Python 3

File details

Details for the file mcp_atlassian_cli-0.3.0.tar.gz.

File metadata

  • Download URL: mcp_atlassian_cli-0.3.0.tar.gz
  • Upload date:
  • Size: 47.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/7.0.0 CPython/3.13.14

File hashes

Hashes for mcp_atlassian_cli-0.3.0.tar.gz
Algorithm Hash digest
SHA256 adc6f26671d5b25cacce5fbf738c28b1d03f9a17c85fc9050526fc0237cef251
MD5 c5ebfdfb854c677c4d45f36ce8a3ce14
BLAKE2b-256 df25f885ba7064e9deeaf92a117adeeb7c670d1180a43f210a7382698fe81ebe

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_atlassian_cli-0.3.0.tar.gz:

Publisher: release.yml on HumanBean17/atlassian-mcp-cli-wrapper

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file mcp_atlassian_cli-0.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for mcp_atlassian_cli-0.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a7787b38b448305e4d91bd32f39124ae0977a0e4a44c84e92418aedd14328ed6
MD5 cbdeec029fa670348754096bb727b83b
BLAKE2b-256 cb030386bc4b5020532db1e8b48fb48ac9c33021d7c31b1c7c7371baa3ba2c49

See more details on using hashes here.

Provenance

The following attestation bundles were made for mcp_atlassian_cli-0.3.0-py3-none-any.whl:

Publisher: release.yml on HumanBean17/atlassian-mcp-cli-wrapper

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page