Model Context Protocol (MCP) server for Atlassian products (Confluence and Jira). This integration supports both Confluence & Jira Cloud and Server/Data Center deployments.
Ask your AI assistant to:
- 📝 Automatic Jira Updates - "Update Jira from our meeting notes"
- 🔍 AI-Powered Confluence Search - "Find our OKR guide in Confluence and summarize it"
- 🐛 Smart Jira Issue Filtering - "Show me urgent bugs in PROJ project from last week"
- 📄 Content Creation & Management - "Create a tech design doc for XYZ feature"
mcp-atlassian-jira-demo.mp4
Confluence Demo
confluence-1k.mp4
Product | Deployment Type | Support Status |
---|---|---|
Confluence | Cloud | ✅ Fully supported |
Confluence | Server/Data Center | ✅ Supported (version 6.0+) |
Jira | Cloud | ✅ Fully supported |
Jira | Server/Data Center | ✅ Supported (version 8.14+) |
MCP Atlassian supports three authentication methods:
- Go to https://id.atlassian.com/manage-profile/security/api-tokens
- Click Create API token, name it
- Copy the token immediately
- Go to your profile (avatar) → Profile → Personal Access Tokens
- Click Create token, name it, set expiry
- Copy the token immediately
-
Create an OAuth 2.0 integration in Atlassian:
- Go to https://developer.atlassian.com/console/myapps/
- Click "Create" and select "OAuth 2.0 integration"
- Follow the wizard to create your app
- Configure permissions for both Jira and Confluence as needed
- Add a callback URL (e.g., http://localhost:8080/callback)
-
Run the OAuth authorization helper:
uvx mcp-atlassian@latest --oauth-setup
This will guide you through the setup process by prompting for the required values (Client ID, Client Secret, etc.).
Alternatively, you can clone the repository and run the script directly:
# Clone the repository if you haven't already git clone https://github.com/sooperset/mcp-atlassian.git cd mcp-atlassian # Run the OAuth authorization script python scripts/oauth_authorize.py \ --client-id YOUR_CLIENT_ID \ --client-secret YOUR_CLIENT_SECRET \ --redirect-uri "http://localhost:8080/callback" \ --scope "read:jira-work write:jira-work read:confluence-space.summary write:confluence-content"
-
Follow the browser prompt to authorize the application
-
After successful authorization, add the displayed environment variables to your .env file
MCP Atlassian is distributed as a Docker image. This is the recommended way to run the server, especially for IDE integration. Ensure you have Docker installed.
# Pull Pre-built Image
docker pull ghcr.io/sooperset/mcp-atlassian:latest
MCP Atlassian is designed to be used with AI assistants through IDE integration.
Tip
For Claude Desktop: Locate and edit the configuration file directly:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Linux:
~/.config/Claude/claude_desktop_config.json
For Cursor: Open Settings → MCP → + Add new global MCP server
There are two main approaches to configure the Docker container:
- Passing Variables Directly (shown in examples below)
- Using an Environment File with
--env-file
flag (shown in collapsible sections)
Note
Common environment variables include:
CONFLUENCE_SPACES_FILTER
: Filter by space keys (e.g., "DEV,TEAM,DOC")JIRA_PROJECTS_FILTER
: Filter by project keys (e.g., "PROJ,DEV,SUPPORT")READ_ONLY_MODE
: Set to "true" to disable write operationsMCP_VERBOSE
: Set to "true" for more detailed loggingENABLED_TOOLS
: Comma-separated list of tool names to enable (e.g., "confluence_search,jira_get_issue")
See the .env.example file for all available options.
Method 1 (Passing Variables Directly):
{
"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"
}
}
}
}
Alternative: Using Environment File
{
"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
For Server/Data Center deployments, use direct variable passing:
{
"mcpServers": {
"mcp-atlassian": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e", "CONFLUENCE_URL",
"-e", "CONFLUENCE_PERSONAL_TOKEN",
"-e", "CONFLUENCE_SSL_VERIFY",
"-e", "JIRA_URL",
"-e", "JIRA_PERSONAL_TOKEN",
"-e", "JIRA_SSL_VERIFY",
"ghcr.io/sooperset/mcp-atlassian:latest"
],
"env": {
"CONFLUENCE_URL": "https://confluence.your-company.com",
"CONFLUENCE_PERSONAL_TOKEN": "your_confluence_pat",
"CONFLUENCE_SSL_VERIFY": "false",
"JIRA_URL": "https://jira.your-company.com",
"JIRA_PERSONAL_TOKEN": "your_jira_pat",
"JIRA_SSL_VERIFY": "false"
}
}
}
}
[!NOTE] Set
CONFLUENCE_SSL_VERIFY
andJIRA_SSL_VERIFY
to "false" only if you have self-signed certificates.
OAuth 2.0 Authentication Configuration
For Atlassian Cloud with OAuth 2.0:
{
"mcpServers": {
"mcp-atlassian": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e", "CONFLUENCE_URL",
"-e", "JIRA_URL",
"-e", "ATLASSIAN_OAUTH_CLIENT_ID",
"-e", "ATLASSIAN_OAUTH_CLIENT_SECRET",
"-e", "ATLASSIAN_OAUTH_REDIRECT_URI",
"-e", "ATLASSIAN_OAUTH_SCOPE",
"-e", "ATLASSIAN_OAUTH_CLOUD_ID",
"ghcr.io/sooperset/mcp-atlassian:latest"
],
"env": {
"CONFLUENCE_URL": "https://your-company.atlassian.net/wiki",
"JIRA_URL": "https://your-company.atlassian.net",
"ATLASSIAN_OAUTH_CLIENT_ID": "your_client_id",
"ATLASSIAN_OAUTH_CLIENT_SECRET": "your_client_secret",
"ATLASSIAN_OAUTH_REDIRECT_URI": "http://localhost:8080/callback",
"ATLASSIAN_OAUTH_SCOPE": "read:jira-work write:jira-work read:confluence-space.summary write:confluence-content",
"ATLASSIAN_OAUTH_CLOUD_ID": "your_cloud_id"
}
}
}
}
[!TIP] Run the
scripts/oauth_authorize.py
script to get your access token and cloud ID. OAuth 2.0 authentication takes precedence over other authentication methods if configured.
Proxy Configuration
MCP Atlassian supports routing API requests through standard HTTP/HTTPS/SOCKS proxies. Configure using environment variables:
- Supports standard
HTTP_PROXY
,HTTPS_PROXY
,NO_PROXY
,SOCKS_PROXY
. - Service-specific overrides are available (e.g.,
JIRA_HTTPS_PROXY
,CONFLUENCE_NO_PROXY
). - Service-specific variables override global ones for that service.
Add the relevant proxy variables to the args
(using -e
) and env
sections of your MCP configuration:
{
"mcpServers": {
"mcp-atlassian": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e", "... existing Confluence/Jira vars",
"-e", "HTTP_PROXY",
"-e", "HTTPS_PROXY",
"-e", "NO_PROXY",
"ghcr.io/sooperset/mcp-atlassian:latest"
],
"env": {
"... existing Confluence/Jira vars": "...",
"HTTP_PROXY": "http://proxy.internal:8080",
"HTTPS_PROXY": "http://proxy.internal:8080",
"NO_PROXY": "localhost,.your-company.com"
}
}
}
}
Credentials in proxy URLs are masked in logs. If you set NO_PROXY
, it will be respected for requests to matching hosts.
Single Service Configurations
For Confluence Cloud only:
{
"mcpServers": {
"mcp-atlassian": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e", "CONFLUENCE_URL",
"-e", "CONFLUENCE_USERNAME",
"-e", "CONFLUENCE_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_api_token"
}
}
}
}
For Confluence Server/DC, use:
{
"mcpServers": {
"mcp-atlassian": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e", "CONFLUENCE_URL",
"-e", "CONFLUENCE_PERSONAL_TOKEN",
"ghcr.io/sooperset/mcp-atlassian:latest"
],
"env": {
"CONFLUENCE_URL": "https://confluence.your-company.com",
"CONFLUENCE_PERSONAL_TOKEN": "your_personal_token"
}
}
}
}
For Jira Cloud only:
{
"mcpServers": {
"mcp-atlassian": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e", "JIRA_URL",
"-e", "JIRA_USERNAME",
"-e", "JIRA_API_TOKEN",
"ghcr.io/sooperset/mcp-atlassian:latest"
],
"env": {
"JIRA_URL": "https://your-company.atlassian.net",
"JIRA_USERNAME": "your.email@company.com",
"JIRA_API_TOKEN": "your_api_token"
}
}
}
}
For Jira Server/DC, use:
{
"mcpServers": {
"mcp-atlassian": {
"command": "docker",
"args": [
"run",
"--rm",
"-i",
"-e", "JIRA_URL",
"-e", "JIRA_PERSONAL_TOKEN",
"ghcr.io/sooperset/mcp-atlassian:latest"
],
"env": {
"JIRA_URL": "https://jira.your-company.com",
"JIRA_PERSONAL_TOKEN": "your_personal_token"
}
}
}
}
Using SSE Instead of stdio
-
Start the server manually in a terminal:
docker run --rm -p 9000:9000 \ --env-file /path/to/your/.env \ ghcr.io/sooperset/mcp-atlassian:latest \ --transport sse --port 9000 -vv
-
Configure your IDE to connect to the running server via its URL:
{ "mcpServers": { "mcp-atlassian-sse": { "url": "http://localhost:9000/sse" } } }
confluence_search
: Search Confluence content using CQLconfluence_get_page
: Get content of a specific pageconfluence_create_page
: Create a new pageconfluence_update_page
: Update an existing page
jira_get_issue
: Get details of a specific issuejira_search
: Search issues using JQLjira_create_issue
: Create a new issuejira_update_issue
: Update an existing issuejira_transition_issue
: Transition an issue to a new statusjira_add_comment
: Add a comment to an issue
View All Tools
Tools marked with * are only available on Jira Cloud.
Confluence Tools | Jira Tools |
---|---|
confluence_search |
jira_get_issue |
confluence_get_page |
jira_search |
confluence_get_page_children |
jira_get_project_issues |
confluence_get_comments |
jira_create_issue |
confluence_create_page |
jira_batch_create_issues |
confluence_update_page |
jira_update_issue |
confluence_delete_page |
jira_delete_issue |
confluence_get_labels |
jira_get_transitions |
confluence_add_label |
jira_transition_issue |
jira_add_comment |
|
jira_add_worklog |
|
jira_get_worklog |
|
jira_batch_get_changelogs * |
|
jira_download_attachments |
|
jira_link_to_epic |
|
jira_get_agile_boards |
|
jira_get_board_issues |
|
jira_get_sprints_from_board |
|
jira_get_sprint_issues |
|
jira_create_sprint |
|
jira_update_sprint |
|
jira_get_issue_link_types |
|
jira_create_issue_link |
|
jira_remove_issue_link |
The server provides two ways to control tool access:
-
Tool Filtering: Use
--enabled-tools
flag orENABLED_TOOLS
environment variable to specify which tools should be available:# Via environment variable ENABLED_TOOLS="confluence_search,jira_get_issue,jira_search" # Or via command line flag docker run ... --enabled-tools "confluence_search,jira_get_issue,jira_search" ...
-
Read/Write Control: Tools are categorized as read or write operations. When
READ_ONLY_MODE
is enabled, only read operations are available regardless ofENABLED_TOOLS
setting.
- Authentication Failures:
- For Cloud: Check your API tokens (not your account password)
- For Server/Data Center: Verify your personal access token is valid and not expired
- For older Confluence servers: Some older versions require basic authentication with
CONFLUENCE_USERNAME
andCONFLUENCE_API_TOKEN
(where token is your password)
- SSL Certificate Issues: If using Server/Data Center and encounter SSL errors, set
CONFLUENCE_SSL_VERIFY=false
orJIRA_SSL_VERIFY=false
- Permission Errors: Ensure your Atlassian account has sufficient permissions to access the spaces/projects
# Using MCP Inspector for testing
npx @modelcontextprotocol/inspector uvx mcp-atlassian ...
# For local development version
npx @modelcontextprotocol/inspector uv --directory /path/to/your/mcp-atlassian run mcp-atlassian ...
# View logs
# macOS
tail -n 20 -f ~/Library/Logs/Claude/mcp*.log
# Windows
type %APPDATA%\C
6D4E
laude\logs\mcp*.log | more
- Never share API tokens
- Keep .env files secure and private
- See SECURITY.md for best practices
We welcome contributions to MCP Atlassian! If you'd like to contribute:
- Check out our CONTRIBUTING.md guide for detailed development setup instructions.
- Make changes and submit a pull request.
We use pre-commit hooks for code quality and follow semantic versioning for releases.
Licensed under MIT - see LICENSE file. This is not an official Atlassian product.