# Authentication
Source: https://personal-1d37018d.mintlify.app/docs/authentication
Configure authentication for MCP Atlassian - API tokens, PATs, and OAuth 2.0
# Authentication
MCP Atlassian supports three authentication methods depending on your Atlassian deployment type.
## API Token (Cloud) - Recommended
The simplest method for Atlassian Cloud users.
Go to [https://id.atlassian.com/manage-profile/security/api-tokens](https://id.atlassian.com/manage-profile/security/api-tokens)
Click **Create API token**, give it a name
Copy the token immediately - you won't see it again
**Environment variables:**
```bash theme={null}
JIRA_URL=https://your-company.atlassian.net
JIRA_USERNAME=your.email@company.com
JIRA_API_TOKEN=your_api_token
CONFLUENCE_URL=https://your-company.atlassian.net/wiki
CONFLUENCE_USERNAME=your.email@company.com
CONFLUENCE_API_TOKEN=your_api_token
```
## Personal Access Token (Server/Data Center)
For Server or Data Center deployments.
Go to your profile (avatar) → **Profile** → **Personal Access Tokens**
Click **Create token**, name it, set expiry
Copy the token immediately
**Environment variables:**
```bash theme={null}
JIRA_URL=https://jira.your-company.com
JIRA_PERSONAL_TOKEN=your_personal_access_token
CONFLUENCE_URL=https://confluence.your-company.com
CONFLUENCE_PERSONAL_TOKEN=your_personal_access_token
```
For self-signed certificates, set `JIRA_SSL_VERIFY=false` and/or `CONFLUENCE_SSL_VERIFY=false`.
## OAuth 2.0 (Cloud) - Advanced
OAuth 2.0 provides enhanced security features but requires more setup. For most users, API Token authentication is simpler and sufficient.
### Setup Steps
Go to [Atlassian Developer Console](https://developer.atlassian.com/console/myapps/) and create an "OAuth 2.0 (3LO) integration" app
Add scopes for Jira/Confluence as needed
Set to `http://localhost:8080/callback`
```bash theme={null}
# Using uvx
uvx mcp-atlassian --oauth-setup -v
# Or using Docker
docker run --rm -i \
-p 8080:8080 \
-v "${HOME}/.mcp-atlassian:/home/app/.mcp-atlassian" \
ghcr.io/sooperset/mcp-atlassian:latest --oauth-setup -v
```
Follow prompts for Client ID, Secret, URI, and Scope, then complete browser authorization
**Environment variables (after setup):**
```bash theme={null}
JIRA_URL=https://your-company.atlassian.net
CONFLUENCE_URL=https://your-company.atlassian.net/wiki
ATLASSIAN_OAUTH_CLOUD_ID=your_cloud_id_from_wizard
ATLASSIAN_OAUTH_CLIENT_ID=your_oauth_client_id
ATLASSIAN_OAUTH_CLIENT_SECRET=your_oauth_client_secret
ATLASSIAN_OAUTH_REDIRECT_URI=http://localhost:8080/callback
ATLASSIAN_OAUTH_SCOPE=read:jira-work write:jira-work read:confluence-content.all write:confluence-content offline_access
```
Include `offline_access` in your scope to allow automatic token refresh.
### Bring Your Own Token (BYOT)
If you manage OAuth tokens externally (e.g., through a central identity provider):
```bash theme={null}
ATLASSIAN_OAUTH_CLOUD_ID=your_cloud_id
ATLASSIAN_OAUTH_ACCESS_TOKEN=your_pre_existing_access_token
```
Token refresh is your responsibility - the server does not handle it for BYOT.
### Multi-Cloud OAuth
For multi-tenant applications where users provide their own OAuth tokens:
1. Enable minimal OAuth mode:
```bash theme={null}
# Using uvx
ATLASSIAN_OAUTH_ENABLE=true uvx mcp-atlassian --transport streamable-http --port 9000
# Or using Docker
docker run -e ATLASSIAN_OAUTH_ENABLE=true -p 9000:9000 \
ghcr.io/sooperset/mcp-atlassian:latest \
--transport streamable-http --port 9000
```
2. Users provide authentication via HTTP headers:
* `Authorization: Bearer `
* `X-Atlassian-Cloud-Id: `
See [HTTP Transport](/http-transport) for more details on multi-user authentication.
# Configuration
Source: https://personal-1d37018d.mintlify.app/docs/configuration
IDE integration, environment variables, and advanced configuration options
# Configuration
This guide covers IDE integration, environment variables, and advanced configuration options.
## IDE Integration
### Configuration File Locations
| IDE | Location |
| ------------------------ | ----------------------------------------------------------------- |
| Claude Desktop (Windows) | `%APPDATA%\Claude\claude_desktop_config.json` |
| Claude Desktop (macOS) | `~/Library/Application Support/Claude/claude_desktop_config.json` |
| Claude Desktop (Linux) | `~/.config/Claude/claude_desktop_config.json` |
| Cursor | Settings → MCP → + Add new global MCP server |
### Basic Configuration (uvx)
```json theme={null}
{
"mcpServers": {
"mcp-atlassian": {
"command": "uvx",
"args": ["mcp-atlassian"],
"env": {
"JIRA_URL": "https://your-company.atlassian.net",
"JIRA_USERNAME": "your.email@company.com",
"JIRA_API_TOKEN": "your_api_token"
}
}
}
}
```
### Docker with Environment File
```json theme={null}
{
"mcpServers": {
"mcp-atlassian": {
"command": "docker",
"args": [
"run", "--rm", "-i",
"--env-file", "/path/to/your/mcp-atlassian.env",
"ghcr.io/sooperset/mcp-atlassian:latest"
]
}
}
}
```
### Server/Data Center Configuration
```json theme={null}
{
"mcpServers": {
"mcp-atlassian": {
"command": "uvx",
"args": ["mcp-atlassian"],
"env": {
"JIRA_URL": "https://jira.your-company.com",
"JIRA_PERSONAL_TOKEN": "your_pat",
"JIRA_SSL_VERIFY": "false",
"CONFLUENCE_URL": "https://confluence.your-company.com",
"CONFLUENCE_PERSONAL_TOKEN": "your_pat",
"CONFLUENCE_SSL_VERIFY": "false"
}
}
}
}
```
### Single Service Configuration
```json theme={null}
{
"mcpServers": {
"mcp-atlassian": {
"command": "uvx",
"args": ["mcp-atlassian"],
"env": {
"CONFLUENCE_URL": "https://your-company.atlassian.net/wiki",
"CONFLUENCE_USERNAME": "your.email@company.com",
"CONFLUENCE_API_TOKEN": "your_api_token"
}
}
}
}
```
```json theme={null}
{
"mcpServers": {
"mcp-atlassian": {
"command": "uvx",
"args": ["mcp-atlassian"],
"env": {
"JIRA_URL": "https://your-company.atlassian.net",
"JIRA_USERNAME": "your.email@company.com",
"JIRA_API_TOKEN": "your_api_token"
}
}
}
}
```
## Environment Variables
### Connection Settings
| Variable | Description |
| --------------------------- | -------------------------------------------- |
| `JIRA_URL` | Jira instance URL |
| `JIRA_USERNAME` | Jira username (email for Cloud) |
| `JIRA_API_TOKEN` | Jira API token (Cloud) |
| `JIRA_PERSONAL_TOKEN` | Jira Personal Access Token (Server/DC) |
| `JIRA_SSL_VERIFY` | SSL verification (`true`/`false`) |
| `CONFLUENCE_URL` | Confluence instance URL |
| `CONFLUENCE_USERNAME` | Confluence username (email for Cloud) |
| `CONFLUENCE_API_TOKEN` | Confluence API token (Cloud) |
| `CONFLUENCE_PERSONAL_TOKEN` | Confluence Personal Access Token (Server/DC) |
| `CONFLUENCE_SSL_VERIFY` | SSL verification (`true`/`false`) |
### Filtering Options
| Variable | Description | Example |
| -------------------------- | ----------------------------------- | ---------------------------------- |
| `JIRA_PROJECTS_FILTER` | Limit to specific Jira projects | `PROJ,DEV,SUPPORT` |
| `CONFLUENCE_SPACES_FILTER` | Limit to specific Confluence spaces | `DEV,TEAM,DOC` |
| `ENABLED_TOOLS` | Enable only specific tools | `confluence_search,jira_get_issue` |
### Server Options
| Variable | Description |
| -------------------- | ---------------------------------------------------------- |
| `TRANSPORT` | Transport type (`stdio`, `sse`, `streamable-http`) |
| `STATELESS` | Enable stateless mode for streamable-http (`true`/`false`) |
| `PORT` | Port for HTTP transports (default: `8000`) |
| `HOST` | Host for HTTP transports (default: `0.0.0.0`) |
| `READ_ONLY_MODE` | Disable write operations (`true`/`false`) |
| `MCP_VERBOSE` | Enable verbose logging (`true`/`false`) |
| `MCP_VERY_VERBOSE` | Enable debug logging (`true`/`false`) |
| `MCP_LOGGING_STDOUT` | Log to stdout instead of stderr (`true`/`false`) |
See [.env.example](https://github.com/sooperset/mcp-atlassian/blob/main/.env.example) for all available options.
## Proxy Configuration
MCP Atlassian supports routing API requests through HTTP/HTTPS/SOCKS proxies.
| Variable | Description |
| ------------------------ | ------------------------------- |
| `HTTP_PROXY` | HTTP proxy URL |
| `HTTPS_PROXY` | HTTPS proxy URL |
| `SOCKS_PROXY` | SOCKS proxy URL |
| `NO_PROXY` | Hosts to bypass proxy |
| `JIRA_HTTPS_PROXY` | Jira-specific HTTPS proxy |
| `CONFLUENCE_HTTPS_PROXY` | Confluence-specific HTTPS proxy |
Service-specific variables override global ones.
## Custom HTTP Headers
Add custom HTTP headers to all API requests. Useful in corporate environments.
| Variable | Description |
| --------------------------- | -------------------------------------- |
| `JIRA_CUSTOM_HEADERS` | Custom headers for Jira requests |
| `CONFLUENCE_CUSTOM_HEADERS` | Custom headers for Confluence requests |
**Format:** Comma-separated `key=value` pairs.
```bash theme={null}
JIRA_CUSTOM_HEADERS=X-Forwarded-User=service-account,X-Custom-Auth=token
CONFLUENCE_CUSTOM_HEADERS=X-Service=mcp-integration,X-ALB-Token=secret
```
Header values are masked in debug logs for security.
## Tool Filtering
Control which tools are available:
```bash theme={null}
# Enable specific tools
ENABLED_TOOLS="confluence_search,jira_get_issue,jira_search"
# Read-only mode (disables all write operations)
READ_ONLY_MODE=true
```
Command-line alternative:
```bash theme={null}
uvx mcp-atlassian --enabled-tools "confluence_search,jira_get_issue"
```
# HTTP Transport
Source: https://personal-1d37018d.mintlify.app/docs/http-transport
Run MCP Atlassian as an HTTP service for multi-user scenarios
# HTTP Transport
Instead of using `stdio`, you can run the server as a persistent HTTP service. This enables multi-user scenarios and remote deployment.
## Transport Types
| Transport | Endpoint | Use Case |
| ----------------- | -------- | -------------------------------------- |
| `sse` | `/sse` | Server-Sent Events, good for streaming |
| `streamable-http` | `/mcp` | HTTP-based, good for multi-user |
## Stateless Mode
For Kubernetes deployments or environments where session state should be ephemeral, use the `--stateless` flag with streamable-http transport:
```bash theme={null}
# Using uvx
uvx mcp-atlassian --transport streamable-http --stateless --port 9000 -vv
# Or using Docker
docker run --rm -p 9000:9000 \
--env-file /path/to/your/.env \
ghcr.io/sooperset/mcp-atlassian:latest \
--transport streamable-http --stateless --port 9000 -vv
# Or via environment variable
STATELESS=true uvx mcp-atlassian --transport streamable-http --port 9000
```
The `--stateless` flag is only supported with `streamable-http` transport. Using it with `stdio` or `sse` will result in an error.
## Basic Setup
```bash theme={null}
# Using uvx
uvx mcp-atlassian --transport sse --port 9000 -vv
# Or using Docker
docker run --rm -p 9000:9000 \
--env-file /path/to/your/.env \
ghcr.io/sooperset/mcp-atlassian:latest \
--transport sse --port 9000 -vv
```
**IDE Configuration:**
```json theme={null}
{
"mcpServers": {
"mcp-atlassian-http": {
"url": "http://localhost:9000/sse"
}
}
}
```
```bash theme={null}
# Using uvx
uvx mcp-atlassian --transport streamable-http --port 9000 -vv
# Or using Docker
docker run --rm -p 9000:9000 \
--env-file /path/to/your/.env \
ghcr.io/sooperset/mcp-atlassian:latest \
--transport streamable-http --port 9000 -vv
```
**IDE Configuration:**
```json theme={null}
{
"mcpServers": {
"mcp-atlassian-service": {
"url": "http://localhost:9000/mcp"
}
}
}
```
## Multi-User Authentication
Both transport types support per-request authentication where each user provides their own credentials.
### Authentication Methods
```json theme={null}
{
"mcpServers": {
"mcp-atlassian-service": {
"url": "http://localhost:9000/mcp",
"headers": {
"Authorization": "Bearer "
}
}
}
}
```
```json theme={null}
{
"mcpServers": {
"mcp-atlassian-service": {
"url": "http://localhost:9000/mcp",
"headers": {
"Authorization": "Token "
}
}
}
}
```
### Server Setup for Multi-User
```bash theme={null}
# Using uvx
uvx mcp-atlassian --oauth-setup -v
# Or using Docker
docker run --rm -i \
-p 8080:8080 \
-v "${HOME}/.mcp-atlassian:/home/app/.mcp-atlassian" \
ghcr.io/sooperset/mcp-atlassian:latest --oauth-setup -v
```
```bash theme={null}
# Using uvx (with env vars set)
uvx mcp-atlassian --transport streamable-http --port 9000 -vv
# Or using Docker
docker run --rm -p 9000:9000 \
--env-file /path/to/your/.env \
ghcr.io/sooperset/mcp-atlassian:latest \
--transport streamable-http --port 9000 -vv
```
```bash theme={null}
JIRA_URL=https://your-company.atlassian.net
CONFLUENCE_URL=https://your-company.atlassian.net/wiki
ATLASSIAN_OAUTH_CLIENT_ID=your_oauth_app_client_id
ATLASSIAN_OAUTH_CLIENT_SECRET=your_oauth_app_client_secret
ATLASSIAN_OAUTH_REDIRECT_URI=http://localhost:8080/callback
ATLASSIAN_OAUTH_SCOPE=read:jira-work write:jira-work read:confluence-content.all write:confluence-content offline_access
ATLASSIAN_OAUTH_CLOUD_ID=your_cloud_id_from_setup_wizard
```
### Multi-Cloud Support
For multi-tenant applications where each user connects to their own Atlassian cloud instance:
1. Enable minimal OAuth mode:
```bash theme={null}
# Using uvx
ATLASSIAN_OAUTH_ENABLE=true uvx mcp-atlassian --transport streamable-http --port 9000
# Or using Docker
docker run -e ATLASSIAN_OAUTH_ENABLE=true -p 9000:9000 \
ghcr.io/sooperset/mcp-atlassian:latest \
--transport streamable-http --port 9000
```
2. Users provide authentication via HTTP headers:
* `Authorization: Bearer `
* `X-Atlassian-Cloud-Id: `
### Python Example
```python theme={null}
import asyncio
from mcp.client.streamable_http import streamablehttp_client
from mcp import ClientSession
user_token = "user-specific-oauth-token"
user_cloud_id = "user-specific-cloud-id"
async def main():
async with streamablehttp_client(
"http://localhost:9000/mcp",
headers={
"Authorization": f"Bearer {user_token}",
"X-Atlassian-Cloud-Id": user_cloud_id
}
) as (read_stream, write_stream, _):
async with ClientSession(read_stream, write_stream) as session:
await session.initialize()
result = await session.call_tool(
"jira_get_issue",
{"issue_key": "PROJ-123"}
)
print(result)
asyncio.run(main())
```
* The server uses fallback authentication when requests don't include user-specific credentials
* User tokens are isolated per request - no cross-tenant data leakage
* Falls back to global `ATLASSIAN_OAUTH_CLOUD_ID` if header not provided
# MCP Atlassian
Source: https://personal-1d37018d.mintlify.app/docs/index
Model Context Protocol server for Jira and Confluence
# MCP Atlassian
Model Context Protocol (MCP) server for Atlassian products (Confluence and Jira). Supports both Cloud and Server/Data Center deployments.
Get started in 5 minutes with uvx
Set up API tokens, PATs, or OAuth 2.0
Browse all available Jira and Confluence tools
IDE setup and environment variables
## Example Usage
Ask your AI assistant to:
* **"Find issues assigned to me in PROJ project"**
* **"Search Confluence for onboarding docs"**
* **"Create a bug ticket for the login issue"**
* **"Update the status of PROJ-123 to Done"**
## Compatibility
| Product | Deployment | Support |
| ---------- | ------------------ | ------------------ |
| Confluence | Cloud | Fully supported |
| Confluence | Server/Data Center | Supported (v6.0+) |
| Jira | Cloud | Fully supported |
| Jira | Server/Data Center | Supported (v8.14+) |
Python 3.14 is not yet supported due to upstream pydantic-core/PyO3 limitations. Use Python 3.10-3.13.
# Installation
Source: https://personal-1d37018d.mintlify.app/docs/installation
Install MCP Atlassian using uvx, Docker, pip, or from source
# Installation
MCP Atlassian can be installed using several methods. Choose the one that best fits your workflow.
## uvx (Recommended)
The simplest way to run MCP Atlassian without permanent installation using [uvx](https://docs.astral.sh/uv/guides/tools/):
```bash theme={null}
# Run directly (downloads on first use, cached for subsequent runs)
uvx mcp-atlassian --help
# Run with specific Python version (required for Python 3.14+)
uvx --python=3.12 mcp-atlassian --help
```
### IDE Configuration with uvx
Edit your config file:
* **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json`
* **Windows**: `%APPDATA%\Claude\claude_desktop_config.json`
* **Linux**: `~/.config/Claude/claude_desktop_config.json`
```json theme={null}
{
"mcpServers": {
"mcp-atlassian": {
"command": "uvx",
"args": ["mcp-atlassian"],
"env": {
"CONFLUENCE_URL": "https://your-company.atlassian.net/wiki",
"CONFLUENCE_USERNAME": "your.email@company.com",
"CONFLUENCE_API_TOKEN": "your_confluence_api_token",
"JIRA_URL": "https://your-company.atlassian.net",
"JIRA_USERNAME": "your.email@company.com",
"JIRA_API_TOKEN": "your_jira_api_token"
}
}
}
}
```
Open **Settings** → **MCP** → **+ Add new global MCP server**, then use the same JSON configuration.
Python 3.14 is not yet supported due to upstream pydantic-core/PyO3 limitations.
Use `["--python=3.12", "mcp-atlassian"]` as args if needed.
## Docker
Docker provides an isolated environment and is recommended for production deployments or when you need specific version control.
```bash theme={null}
# Pull the latest image
docker pull ghcr.io/sooperset/mcp-atlassian:latest
# Run with environment variables
docker run --rm -i \
-e JIRA_URL=https://your-company.atlassian.net \
-e JIRA_USERNAME=your.email@company.com \
-e JIRA_API_TOKEN=your_api_token \
ghcr.io/sooperset/mcp-atlassian:latest
```
### IDE Configuration with Docker
```json theme={null}
{
"mcpServers": {
"mcp-atlassian": {
"command": "docker",
"args": [
"run", "-i", "--rm",
"-e", "CONFLUENCE_URL",
"-e", "CONFLUENCE_USERNAME",
"-e", "CONFLUENCE_API_TOKEN",
"-e", "JIRA_URL",
"-e", "JIRA_USERNAME",
"-e", "JIRA_API_TOKEN",
"ghcr.io/sooperset/mcp-atlassian:latest"
],
"env": {
"CONFLUENCE_URL": "https://your-company.atlassian.net/wiki",
"CONFLUENCE_USERNAME": "your.email@company.com",
"CONFLUENCE_API_TOKEN": "your_confluence_api_token",
"JIRA_URL": "https://your-company.atlassian.net",
"JIRA_USERNAME": "your.email@company.com",
"JIRA_API_TOKEN": "your_jira_api_token"
}
}
}
}
```
See [Configuration](/configuration) for more Docker options including environment files.
## pip
Install directly with pip for development or when you need the package in your Python environment:
```bash theme={null}
pip install mcp-atlassian
# Run the server
mcp-atlassian --help
```
## uv
If you're using [uv](https://docs.astral.sh/uv/) for package management:
```bash theme={null}
# Add to your project
uv add mcp-atlassian
# Run
uv run mcp-atlassian --help
```
## From Source
For development or contributing:
```bash theme={null}
git clone https://github.com/sooperset/mcp-atlassian.git
cd mcp-atlassian
uv sync --frozen --all-extras --dev
uv run mcp-atlassian --help
```
See [CONTRIBUTING.md](https://github.com/sooperset/mcp-atlassian/blob/main/CONTRIBUTING.md) for development setup details.
# Tools Reference
Source: https://personal-1d37018d.mintlify.app/docs/tools-reference
All available MCP Atlassian tools for Jira and Confluence
# Tools Reference
MCP Atlassian provides tools for interacting with Jira and Confluence.
## Key Tools
| Tool | Description |
| ----------------------- | ------------------------------- |
| `jira_get_issue` | Get details of a specific issue |
| `jira_search` | Search issues using JQL |
| `jira_create_issue` | Create a new issue |
| `jira_update_issue` | Update an existing issue |
| `jira_transition_issue` | Transition issue to new status |
| `jira_add_comment` | Add a comment to an issue |
| Tool | Description |
| ------------------------ | ------------------------------ |
| `confluence_search` | Search content using CQL |
| `confluence_get_page` | Get content of a specific page |
| `confluence_create_page` | Create a new page |
| `confluence_update_page` | Update an existing page |
## Complete Tool List
| Operation | Jira Tools | Confluence Tools |
| --------- | ----------------------------- | ------------------------------ |
| **Read** | `jira_search` | `confluence_search` |
| | `jira_get_issue` | `confluence_get_page` |
| | `jira_get_all_projects` | `confluence_get_page_children` |
| | `jira_get_project_issues` | `confluence_get_comments` |
| | `jira_get_worklog` | `confluence_get_labels` |
| | `jira_get_transitions` | `confluence_search_user` |
| | `jira_search_fields` | |
| | `jira_get_agile_boards` | |
| | `jira_get_board_issues` | |
| | `jira_get_sprints_from_board` | |
| | `jira_get_sprint_issues` | |
| | `jira_get_issue_link_types` | |
| | `jira_batch_get_changelogs`\* | |
| | `jira_get_user_profile` | |
| | `jira_download_attachments` | |
| | `jira_get_project_versions` | |
| **Write** | `jira_create_issue` | `confluence_create_page` |
| | `jira_update_issue` | `confluence_update_page` |
| | `jira_delete_issue` | `confluence_delete_page` |
| | `jira_batch_create_issues` | `confluence_add_label` |
| | `jira_add_comment` | `confluence_add_comment` |
| | `jira_transition_issue` | |
| | `jira_add_worklog` | |
| | `jira_link_to_epic` | |
| | `jira_create_sprint` | |
| | `jira_update_sprint` | |
| | `jira_create_issue_link` | |
| | `jira_remove_issue_link` | |
| | `jira_create_version` | |
| | `jira_batch_create_versions` | |
\* `jira_batch_get_changelogs` is only available on Jira Cloud
## Tool Access Control
### Enable Specific Tools
Use `ENABLED_TOOLS` environment variable or `--enabled-tools` flag:
```bash theme={null}
# Environment variable
ENABLED_TOOLS="confluence_search,jira_get_issue,jira_search"
# Command line
uvx mcp-atlassian --enabled-tools "confluence_search,jira_get_issue,jira_search"
```
### Read-Only Mode
Disable all write operations:
```bash theme={null}
READ_ONLY_MODE=true
```
When enabled, only read operations are available regardless of `ENABLED_TOOLS` setting.
# Troubleshooting
Source: https://personal-1d37018d.mintlify.app/docs/troubleshooting
Common issues and debugging tips for MCP Atlassian
# Troubleshooting
## Common Issues
* Ensure you're using API tokens, not your account password
* Verify the token hasn't expired
* Check that `JIRA_USERNAME` / `CONFLUENCE_USERNAME` is your email address
* Verify your Personal Access Token is valid and not expired
* For older Confluence servers, try basic auth with `CONFLUENCE_USERNAME` and `CONFLUENCE_API_TOKEN` (where token is your password)
For Server/Data Center with self-signed certificates:
```bash theme={null}
JIRA_SSL_VERIFY=false
CONFLUENCE_SSL_VERIFY=false
```
Ensure your Atlassian account has sufficient permissions to access the spaces/projects you're targeting.
Python 3.14 is not yet supported due to upstream pydantic-core/PyO3 limitations.
**Workaround with uvx:**
```bash theme={null}
uvx --python=3.12 mcp-atlassian
```
**In IDE configuration:**
```json theme={null}
{
"args": ["--python=3.12", "mcp-atlassian"]
}
```
## Debugging
### Enable Verbose Logging
```bash theme={null}
# Standard verbose
MCP_VERBOSE=true
# Debug level (includes request details)
MCP_VERY_VERBOSE=true
# Log to stdout instead of stderr
MCP_LOGGING_STDOUT=true
```
### View Logs
```bash theme={null}
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
```
```cmd theme={null}
type %APPDATA%\Claude\logs\mcp*.log | more
```
### MCP Inspector
Test your configuration interactively:
```bash theme={null}
# With uvx
npx @modelcontextprotocol/inspector uvx mcp-atlassian
# With local development version
npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-atlassian run mcp-atlassian
```
## Debugging Custom Headers
### Verify Headers Are Applied
1. Enable debug logging:
```bash theme={null}
MCP_VERY_VERBOSE=true
MCP_LOGGING_STDOUT=true
```
2. Check logs for header confirmation:
```
DEBUG Custom headers applied: {'X-Forwarded-User': '***', 'X-ALB-Token': '***'}
```
### Correct Header Format
```bash theme={null}
# Correct
JIRA_CUSTOM_HEADERS=X-Custom=value1,X-Other=value2
# Incorrect (extra quotes)
JIRA_CUSTOM_HEADERS="X-Custom=value1,X-Other=value2"
# Incorrect (colon instead of equals)
JIRA_CUSTOM_HEADERS=X-Custom: value1,X-Other: value2
# Incorrect (spaces around equals)
JIRA_CUSTOM_HEADERS=X-Custom = value1
```
Header values containing sensitive information are automatically masked in logs.
## Getting Help
* Check [GitHub Issues](https://github.com/sooperset/mcp-atlassian/issues) for known problems
* Review [SECURITY.md](https://github.com/sooperset/mcp-atlassian/blob/main/SECURITY.md) for security-related concerns
* Open a new issue with debug logs if the problem persists