← MCP servers · sooperset

Atlassian Integration

BLOCKgrade D · trust 69/100

MCP server for Atlassian tools (Confluence, Jira)

atlassianconfluencejiramcp

Overview

From the repository's own README, as read at the audited commit.

# MCP Atlassian![PyPI Version](https://img.shields.io/pypi/v/mcp-atlassian)![PyPI - Downloads](https://img.shields.io/pypi/dm/mcp-atlassian)![PePy - Total Downloads](https://static.pepy.tech/personalized-badge/mcp-atlassian?period=total&units=international_system&left_color=grey&right_color=blue&left_text=Total%20Downloads)[![Run Tests](https://github.com/sooperset/mcp-atlassian/actions/workflows/tests.yml/badge.svg)](https://github.com/sooperset/mcp-atlassian/actions/workflows/tests.yml)![License](https://img.shields.io/github/license/sooperset/mcp-atlassian)[![Docs](https://img.shields.io/badge/docs-mintlify-blue)](https://mcp-atlassian.soomiles.com)Model Context Protocol (MCP) server for Atlassian products (Confluence and Jira). Supports both Cloud and Server/Data Center deployments.https://github.com/user-attachments/assets/35303504-14c6-4ae4-913b-7c25ea511c3e<details><summary>Confluence Demo</summary>https://github.com/user-attachments/assets/7fe9c488-ad0c-4876-9b54-120b666bb785</details>## Quick Start### 1. Get Your API TokenGo to https://id.atlassian.com/manage-profile/security/api-tokens and create a token.> For Server/Data Center, use a Personal Access Token instead. See [Authentication](https://mcp-atlassian.soomiles.com/docs/authentication).### 2. Configure Your IDEAdd to your Claude Desktop or Cursor MCP configuration:```json{  "mcpServers": {    "mcp-atlassian": {      "command": "uvx",      "args": ["mcp-atlassian"],      "env": {        "JIRA_URL": "https://your-company.atlassian.net",        "JIRA_USERNAME": "[email protected]",        "JIRA_API_TOKEN": "your_api_token",        "CONFLUENCE_URL": "https://your-company.atlassian.net/wiki",        "CONFLUENCE_USERNAME": "[email protected]",        "CONFLUENCE_API_TOKEN": "your_api_token"      }    }  }}```> **Server/Data Center users**: Use `JIRA_PERSONAL_TOKEN` instead of `JIRA_USERNAME` + `JIRA_API_TOKEN`. See [Authentication](https://mcp-atlassian.soomiles.com/docs/authentication) for detai

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add mcp-atlassian --env ATLASSIAN_OAUTH_ACCESS_TOKEN=${ATLASSIAN_OAUTH_ACCESS_TOKEN} --env ATLASSIAN_OAUTH_ALLOWED_CLIENT_REDIRECT_URIS=${ATLASSIAN_OAUTH_ALLOWED_CLIENT_REDIRECT_URIS} --env ATLASSIAN_OAUTH_ALLOWED_GRANT_TYPES=${ATLASSIAN_OAUTH_ALLOWED_GRANT_TYPES} --env ATLASSIAN_OAUTH_CLIENT_ID=${ATLASSIAN_OAUTH_CLIENT_ID} -- uvx mcp-atlassian
claude-desktop
{
  "mcpServers": {
    "mcp-atlassian": {
      "command": "uvx",
      "args": [
        "mcp-atlassian"
      ],
      "env": {
        "ATLASSIAN_OAUTH_ACCESS_TOKEN": "${ATLASSIAN_OAUTH_ACCESS_TOKEN}",
        "ATLASSIAN_OAUTH_ALLOWED_CLIENT_REDIRECT_URIS": "${ATLASSIAN_OAUTH_ALLOWED_CLIENT_REDIRECT_URIS}",
        "ATLASSIAN_OAUTH_ALLOWED_GRANT_TYPES": "${ATLASSIAN_OAUTH_ALLOWED_GRANT_TYPES}",
        "ATLASSIAN_OAUTH_CLIENT_ID": "${ATLASSIAN_OAUTH_CLIENT_ID}"
      }
    }
  }
}

Exposed tools (4) 4 read · 0 write · 0 destructive

ToolRiskDescription
emptyreadtest
legacy_outerreadreturn
no_propsreadtest
test_toolreadtest

Details

Source
sooperset/mcp-atlassian
PyPI
mcp-atlassian
Transports
sse · stdio · streamable-http
Credentials it reads
ATLASSIAN_OAUTH_ACCESS_TOKENATLASSIAN_OAUTH_ALLOWED_CLIENT_REDIRECT_URISATLASSIAN_OAUTH_ALLOWED_GRANT_TYPESATLASSIAN_OAUTH_CLIENT_IDATLASSIAN_OAUTH_CLIENT_SECRETATLASSIAN_OAUTH_CLOUD_IDATLASSIAN_OAUTH_ENABLEATLASSIAN_OAUTH_INSTANCE_URLATLASSIAN_OAUTH_REDIRECT_URIATLASSIAN_OAUTH_SCOPECLOUD_E2E_API_TOKENCLOUD_E2E_JSM_ISSUE_KEY
License
MIT
Stars
5,896 · pushed 0d ago

Trust audit

Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryPASS
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)PASS
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
none-observed
Network
declared (13 observation(s))
Shell
none-observed
Dependencies
pinned
Secrets in source
found

Findings (25)

HIGHNetwork egress · net.metadata_ip · CWE-200, CWE-319
src/mcp_atlassian/utils/urls.py:124
blocked_hostnames = {"localhost", "metadata.google.internal"}
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
HIGHNetwork egress · net.tls_off · CWE-200, CWE-319
src/mcp_atlassian/utils/ssl.py:164
super().cert_verify(conn, url, verify=False, cert=cert)
Why it matters. certificate verification is disabled
Fix. leave verification on
HIGHNetwork egress · net.tls_off · CWE-200, CWE-319
src/mcp_atlassian/utils/ssl.py:193
verify=False,  # Always disable SSL verification for this adapter
Why it matters. certificate verification is disabled
Fix. leave verification on
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
src/mcp_atlassian/utils/toolsets.py:231
logger.warning(f"TOOLSETS: unknown toolset name '{token}' — ignoring.")
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
src/mcp_atlassian/servers/dependencies.py:1020
"exfiltration."
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
.env.example:70
#ATLASSIAN_OAUTH_ALLOWED_CLIENT_REDIRECT_URIS=http://localhost:*,http://127.0.0.1:*,https://chatgpt.com/connector_platform_oauth_redirect
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
src/mcp_atlassian/servers/main.py:56
"http://127.0.0.1:*",
MEDIUMObfuscation / stealth · obf.zero_width · CWE-506, CWE-94
src/mcp_atlassian/jira/config.py:33
map(ord, "")  # ZWSP, ZWNJ, ZWJ, word-joiner, BOM
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/auth/test_authentication.py:208
token="test-personal-access-token",
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
tests/unit/auth/test_authentication.py:237
token="test-personal-access-token",
LOWInventory / provenance · inv.hidden_file · CWE-1104
.mintignore
.mintignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.pre-commit-config.yaml
.pre-commit-config.yaml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.worktreeinclude
.worktreeinclude
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
tests/unit/test_exceptions.py:150
unpickled_error = pickle.loads(pickled_data)
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/unit/confluence/test_attachments.py:1775
"https://example.com/file", "../../../etc/passwd"
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/unit/jira/test_attachments.py:1402
"../../../etc/passwd",
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/unit/jira/test_attachments.py:1403
"normal/../../../etc/shadow",
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/unit/jira/test_comments.py:1083
"CC-1/../../PROJ-2",
LOWFilesystem / path · fs.traversal · CWE-22, CWE-59
tests/unit/utils/test_io.py:109
validate_safe_path("../../etc/passwd", base_dir=tmp_path)
LOWNetwork egress · net.beacon_words · CWE-200, CWE-319
tests/unit/confluence/test_attachments.py:1807
secret.write_bytes(b"SECRET-EXFIL")
LOWNetwork egress · net.beacon_words · CWE-200, CWE-319
tests/unit/jira/test_attachments.py:1538
secret.write_bytes(b"SECRET-EXFIL")
LOWNetwork egress · net.beacon_words · CWE-200, CWE-319
tests/unit/jira/test_attachments.py:1556
secret.write_bytes(b"SECRET-EXFIL")
LOWNetwork egress · net.beacon_words · CWE-200, CWE-319
tests/unit/servers/test_confluence_server.py:1209
secret.write_text("SECRET-EXFIL", encoding="utf-8")
LOWNetwork egress · net.metadata_ip · CWE-200, CWE-319
tests/unit/jira/test_client.py:124
internal_redirect.headers = {"Location": "http://169.254.169.254/latest/meta-data/"}
Why it matters. cloud metadata endpoint: the classic SSRF credential grab
LOWNetwork egress · net.metadata_ip · CWE-200, CWE-319
tests/unit/servers/test_dependencies.py:2447
result = validate_url_for_ssrf("http://169.254.169.254")
Why it matters. cloud metadata endpoint: the classic SSRF credential grab

Gates applied: no_behavioural_pass.

Audited 2026-09-15 · audit v0.4.0 · source sha 1c8f08d9a884 · full audit: observations/trust-audit/mcp-server/sooperset__atlassian-integration.json · Report an issue or request a re-scan

Audit history

DateSourceVerdictGradeScoreChange
2026-09-151c8f08d9a884BLOCKD69first audit

Alternatives

Other servers in the same categories, safer ones first.

Questions

What is the Atlassian Integration MCP server?

MCP server for Atlassian tools (Confluence, Jira)

What tools does Atlassian Integration expose?

4 in total: 4 read-only, 0 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is Atlassian Integration safe to connect to an agent?

No — not without reading the findings first. The audit graded it D (69/100) and found 3 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does Atlassian Integration need?

It reads ATLASSIAN_OAUTH_ACCESS_TOKEN, ATLASSIAN_OAUTH_ALLOWED_CLIENT_REDIRECT_URIS, ATLASSIAN_OAUTH_ALLOWED_GRANT_TYPES, ATLASSIAN_OAUTH_CLIENT_ID, ATLASSIAN_OAUTH_CLIENT_SECRET, ATLASSIAN_OAUTH_CLOUD_ID, ATLASSIAN_OAUTH_ENABLE, ATLASSIAN_OAUTH_INSTANCE_URL, ATLASSIAN_OAUTH_REDIRECT_URI, ATLASSIAN_OAUTH_SCOPE, CLOUD_E2E_API_TOKEN and CLOUD_E2E_JSM_ISSUE_KEY from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does Atlassian Integration run?

It speaks sse, stdio and streamable-http, so it runs as a local process your client starts. It is published on PyPI as mcp-atlassian.

How current is this page?

The grade is for one exact copy of the source (1c8f08d9a884), read on 2026-09-15. The repository is watched and re-audited when it changes.

Provenance: OBSERVED · read 2026-09-15 · job trust-audit-2026-09-15