Skip to main content
MCP Atlassian provides Docker images for production deployment. This guide covers Docker Compose setups, health checks, and orchestration patterns.

Quick Start

docker run -i --rm \
  -e JIRA_URL=https://your-company.atlassian.net \
  -e JIRA_USERNAME=your.email@example.com \
  -e JIRA_API_TOKEN=your_api_token \
  -e CONFLUENCE_URL=https://your-company.atlassian.net/wiki \
  -e CONFLUENCE_USERNAME=your.email@example.com \
  -e CONFLUENCE_API_TOKEN=your_api_token \
  ghcr.io/sooperset/mcp-atlassian:latest

Docker Compose

Basic Setup

version: "3.8"
services:
  mcp-atlassian:
    image: ghcr.io/sooperset/mcp-atlassian:latest
    env_file: .env
    ports:
      - "8000:8000"
    environment:
      - TRANSPORT=sse
      - PORT=8000
      - HOST=0.0.0.0
    restart: unless-stopped

With Health Checks

version: "3.8"
services:
  mcp-atlassian:
    image: ghcr.io/sooperset/mcp-atlassian:latest
    env_file: .env
    ports:
      - "8000:8000"
    environment:
      - TRANSPORT=sse
      - PORT=8000
      - HOST=0.0.0.0
    healthcheck:
      test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:8000/healthz')"]
      interval: 30s
      timeout: 10s
      retries: 3
      start_period: 10s
    restart: unless-stopped

Multi-Service Setup

Run separate Jira and Confluence services:
version: "3.8"
services:
  jira-mcp:
    image: ghcr.io/sooperset/mcp-atlassian:latest
    env_file: .env.jira
    ports:
      - "8001:8000"
    environment:
      - TRANSPORT=sse
      - PORT=8000
      - ENABLED_TOOLS=jira_search,jira_get_issue,jira_create_issue,jira_update_issue

  confluence-mcp:
    image: ghcr.io/sooperset/mcp-atlassian:latest
    env_file: .env.confluence
    ports:
      - "8002:8000"
    environment:
      - TRANSPORT=sse
      - PORT=8000
      - ENABLED_TOOLS=confluence_search,confluence_get_page,confluence_create_page

Environment File Pattern

Use .env files for sensitive credentials:
# .env
JIRA_URL=https://your-company.atlassian.net
JIRA_USERNAME=your.email@example.com
JIRA_API_TOKEN=your_api_token
CONFLUENCE_URL=https://your-company.atlassian.net/wiki
CONFLUENCE_USERNAME=your.email@example.com
CONFLUENCE_API_TOKEN=your_api_token
Never commit .env files to version control. Add .env to your .gitignore.

Read-Only Mode

For production environments where write operations should be disabled:
environment:
  - READ_ONLY_MODE=true
This disables all create, update, and delete tools at the server level.

Kubernetes Notes

For Kubernetes deployments:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: mcp-atlassian
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mcp-atlassian
  template:
    metadata:
      labels:
        app: mcp-atlassian
    spec:
      containers:
      - name: mcp-atlassian
        image: ghcr.io/sooperset/mcp-atlassian:latest
        ports:
        - containerPort: 8000
        env:
        - name: TRANSPORT
          value: "sse"
        - name: PORT
          value: "8000"
        envFrom:
        - secretRef:
            name: atlassian-credentials
        livenessProbe:
          httpGet:
            path: /healthz
            port: 8000
          initialDelaySeconds: 10
          periodSeconds: 30
        readinessProbe:
          httpGet:
            path: /healthz
            port: 8000
          initialDelaySeconds: 5
          periodSeconds: 10
---
apiVersion: v1
kind: Service
metadata:
  name: mcp-atlassian
spec:
  selector:
    app: mcp-atlassian
  ports:
  - port: 8000
    targetPort: 8000
Use Kubernetes Secrets for credentials. Create with: kubectl create secret generic atlassian-credentials --from-env-file=.env
For high availability, consider running separate deployments for Jira and Confluence services with different ENABLED_TOOLS configurations.