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_TOKENvariables if basic auth is enabled. *URLmay include/wikifor Confluence. The URL decides Cloud vs Data Center: hosts ending in.atlassian.net(also.jira.com,.jira-dev.com,.atlassian.com, and exact-matchapi.atlassian.com, plus the US-Gov domains) mean Cloud; everything else, includinglocalhostand 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:
$ATLI_CONFIG— if set, must point at an existing file (an error otherwise)./.atli.tomlin the current directory~/.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-jsonoutput 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-jsonwraps the output in the SessionStart hook envelope.--exportprints the default content (ignores overrides, works even when nothing is configured) — the starting point for customization.- With nothing configured and no override file,
primeprints nothing and exits 0 — zero token cost on machines where atli cannot act anyway. - The Configured line reads exported variables and profiles only;
.envfiles (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:
$ATLI_PRIME— must point at an existing file (an error otherwise)./.atli/PRIME.md— current directory; check it into the repo for project-specific conventions~/.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 TEXTshortlists tools by keyword across names and full descriptions.atli <service> <tool> --helpshows every parameter with its type and default, straight from the tool's schema.- Parameter descriptions in a tool's
--helpcome 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,@filefor long content. - Repeatable list flags repeat:
--read-users alice --read-users bob(onconfluence set-page-restrictions) gives["alice", "bob"];--read-users alice,bobgives one element"alice,bob". - String values expand:
--body @comment.mdreads the file,-reads stdin (when piped),@@textpasses 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
searchover 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
adc6f26671d5b25cacce5fbf738c28b1d03f9a17c85fc9050526fc0237cef251
|
|
| MD5 |
c5ebfdfb854c677c4d45f36ce8a3ce14
|
|
| BLAKE2b-256 |
df25f885ba7064e9deeaf92a117adeeb7c670d1180a43f210a7382698fe81ebe
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_atlassian_cli-0.3.0.tar.gz -
Subject digest:
adc6f26671d5b25cacce5fbf738c28b1d03f9a17c85fc9050526fc0237cef251 - Sigstore transparency entry: 2530584699
- Sigstore integration time:
-
Permalink:
HumanBean17/atlassian-mcp-cli-wrapper@c3fe528ec7ec33ccf1a66ceb6b0de5077c7d06ea -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/HumanBean17
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c3fe528ec7ec33ccf1a66ceb6b0de5077c7d06ea -
Trigger Event:
push
-
Statement type:
File details
Details for the file mcp_atlassian_cli-0.3.0-py3-none-any.whl.
File metadata
- Download URL: mcp_atlassian_cli-0.3.0-py3-none-any.whl
- Upload date:
- Size: 27.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a7787b38b448305e4d91bd32f39124ae0977a0e4a44c84e92418aedd14328ed6
|
|
| MD5 |
cbdeec029fa670348754096bb727b83b
|
|
| BLAKE2b-256 |
cb030386bc4b5020532db1e8b48fb48ac9c33021d7c31b1c7c7371baa3ba2c49
|
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
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
mcp_atlassian_cli-0.3.0-py3-none-any.whl -
Subject digest:
a7787b38b448305e4d91bd32f39124ae0977a0e4a44c84e92418aedd14328ed6 - Sigstore transparency entry: 2530585523
- Sigstore integration time:
-
Permalink:
HumanBean17/atlassian-mcp-cli-wrapper@c3fe528ec7ec33ccf1a66ceb6b0de5077c7d06ea -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/HumanBean17
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@c3fe528ec7ec33ccf1a66ceb6b0de5077c7d06ea -
Trigger Event:
push
-
Statement type: