MCP server for Atlassian tools (Confluence, Jira)
docker pull library/postgres
docker run -d --name mcp-atlassian -p 8080:8080 --restart always postgres:15-alpine
podman run -d --name mcp-atlassian -p 8080:8080 --restart always postgres:15-alpine
skopeo inspect docker://docker.io/library/postgres:15-alpine
oras pull postgres:15-alpine
docker compose up -d
services:
jira-db:
image: postgres:15-alpine
environment:
POSTGRES_DB: jira
POSTGRES_USER: jira
POSTGRES_PASSWORD: ${JIRA_DB_PASSWORD}
POSTGRES_INITDB_ARGS: "--lc-collate=C --lc-ctype=C"
volumes:
- jira-db-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U jira"]
interval: 10s
timeout: 5s
retries: 5
confluence-db:
image: postgres:15-alpine
environment:
POSTGRES_DB: confluence
POSTGRES_USER: confluence
POSTGRES_PASSWORD: ${CONFLUENCE_DB_PASSWORD}
volumes:
- confluence-db-data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U confluence"]
interval: 10s
timeout: 5s
retries: 5
jira:
image: atlassian/jira-software:${JIRA_VERSION}
ports:
- "8080:8080"
environment:
ATL_JDBC_URL: jdbc:postgresql://jira-db:5432/jira
ATL_JDBC_USER: jira
ATL_JDBC_PASSWORD: ${JIRA_DB_PASSWORD}
ATL_DB_DRIVER: org.postgresql.Driver
ATL_DB_TYPE: postgres72
JVM_MINIMUM_MEMORY: 1024m
JVM_MAXIMUM_MEMORY: 2048m
CLUSTERED: "false"
volumes:
- jira-data:/var/atlassian/application-data/jira
depends_on:
jira-db:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:8080/status || exit 1"]
interval: 30s
timeout: 10s
retries: 20
start_period: 120s
confluence:
image: atlassian/confluence:${CONFLUENCE_VERSION}
ports:
- "8090:8090"
environment:
ATL_JDBC_URL: jdbc:postgresql://confluence-db:5432/confluence
ATL_JDBC_USER: confluence
ATL_JDBC_PASSWORD: ${CONFLUENCE_DB_PASSWORD}
ATL_DB_DRIVER: org.postgresql.Driver
ATL_DB_TYPE: postgresql
# Confluence 7.9+ reads the license from ATL_LICENSE_KEY at first-time setup,
# skipping the wizard's license step. Written to confluence.cfg.xml on FIRST
# start only โ NOT re-read on restart (ATL_FORCE_CFG_UPDATE defaults false), so a
# restart does not reset the 3h timebomb. Empty -> wizard prompts for a key.
# Docs: https://atlassian.github.io/data-center-helm-charts/containers/CONFLUENCE/
# (Verified 2026-06-18 on confluence:9.2.21: a fresh blank-DB start with this set
# skips the wizard license step. The no-restart-refresh detail above is per those docs.)
ATL_LICENSE_KEY: ${CONFLUENCE_LICENSE_KEY:-}
# After the 3h timebomb expires, re-apply the key by regenerating confluence.cfg.xml:
# ATL_FORCE_CFG_UPDATE=true docker compose up -d confluence
ATL_FORCE_CFG_UPDATE: ${ATL_FORCE_CFG_UPDATE:-false}
JVM_MINIMUM_MEMORY: 1024m
JVM_MAXIMUM_MEMORY: 2048m
CLUSTERED: "false"
volumes:
- confluence-data:/var/atlassian/application-data/confluence
depends_on:
confluence-db:
condition: service_healthy
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:8090/status || exit 1"]
interval: 30s
timeout: 10s
retries: 20
start_period: 120s
volumes:
jira-db-data:
confluence-db-data:
jira-data:
confluence-data: