MCP Atlassian
repository·main·Indexed 26 days ago
https://github.com/sooperset/mcp-atlassianAn open-source Model Context Protocol (MCP) server that bridges Atlassian products, specifically Jira and Confluence, with AI language models. It supports Cloud and Server/Data Center deployments, providing 98 tools for searching, creating, and updating issues and pages. The integration supports multiple transport protocols (stdio, sse, streamable-http) and authentication modes, including API tokens, OAuth, and external proxies. It can be deployed via Helm, Docker, Docker Compose, or configured for use in Claude Desktop and Cursor.
What's inside mcp-atlassian
- MCP Atlassian is a Model Context Protocol (MCP) server that connects AI assistants to Atlassian products, specifically Jira and Confluence. It allows AI agents to search, create, and update issues and pages. The server supports both Atlassian Cloud and Server/Data Center deployments.
Install the MCP Atlassian Helm Chart (Cloud with API Tokens)
mainTo deploy the MCP Atlassian server to Kubernetes using Atlassian Cloud API tokens, create a
values.yamlfile containing your Confluence and Jira credentials, then install the chart using Helm.# Create values file cat > my-values.yaml <<YAML confluence: url: "https://your-company.atlassian.net/wiki" username: "your.email@company.com" apiToken: "your_confluence_api_token" jira: url: "https://your-company.atlassian.net" username: "your.email@company.com" apiToken: "your_jira_api_token" YAML # Install the chart helm install mcp-atlassian ./mcp-atlassian -f my-values.yamlConfigure Server/Data Center with mTLS
mainFor Atlassian Server or Data Center instances requiring mTLS, use Personal Access Tokens (PAT) and client certificates.
Important: Encrypted private keys are not supported. You must decrypt your private key before use. Use the following command to decrypt:
openssl rsa -in encrypted.key -out decrypted.keyFor mTLS, you can provide a combined PEM file to
*_CLIENT_CERT, or provide separate files using*_CLIENT_CERTand*_CLIENT_KEY.{ "mcpServers": { "mcp-atlassian": { "command": "uvx", "args": ["mcp-atlassian"], "env": { "JIRA_URL": "https://jira.your-company.com", "JIRA_CLIENT_CERT": "/etc/mcp-atlassian/jira-client-cert.pem", "JIRA_CLIENT_KEY": "/etc/mcp-atlassian/jira-client-key.pem", "CONFLUENCE_URL": "https://confluence.your-company.com/wiki", "CONFLUENCE_CLIENT_CERT": "/etc/mcp-atlassian/confluence-client-combined.pem" } } } }Enable Multi-Cloud Support
mainFor multi-tenant applications where each user connects to their own Atlassian cloud instance, enable minimal OAuth mode and have users provide authentication via HTTP headers.
```bash # 1. Enable minimal OAuth mode # 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 9000User Authentication Headers:
Authorization: Bearer <user_oauth_token>X-Atlassian-Cloud-Id: <user_cloud_id>
Set up Streamable-HTTP Transport
mainTo run the server using streamable-http transport, use the following commands and configure your IDE with the
/mcpendpoint.# 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 -vvIDE Configuration:
{ "mcpServers": { "mcp-atlassian-service": { "url": "http://localhost:9000/mcp" } } }Install MCP Atlassian using uvx (Recommended)
mainThe recommended way to run MCP Atlassian without a permanent installation is using
uvx. This downloads the tool on first use and caches it for subsequent runs.To run the help command directly:
uvx mcp-atlassian --helpTo run with a specific Python version:
uvx --python=3.12 mcp-atlassian --helpuvx mcp-atlassian --helpUse siteSearch for simple text or relevance-ranked queries
mainIf you don't want to write CQL, you can use
confluence_searchin two ways:- Simple Text Search: Pass plain text (e.g.,
project documentation architecture).confluence_searchwill automatically usesiteSearchto mimic the Confluence web UI search. - Relevance-Ranked Search: Explicitly use
siteSearchwith the~operator for relevance-ranked results (e.g.,siteSearch ~ "important concept").
- Simple Text Search: Pass plain text (e.g.,
Understand JQL Basic Syntax
mainJQL (Jira Query Language) is used by the
jira_searchtool to find issues. The basic syntax follows the pattern:field operator value.project = "PROJ" AND status = "In Progress"Test Configuration with MCP Inspector
mainYou can test your
mcp-atlassianconfiguration interactively using the MCP Inspector.Using uvx:
npx @modelcontextprotocol/inspector uvx mcp-atlassianUsing a local development version:
npx @modelcontextprotocol/inspector uv --directory /path/to/mcp-atlassian run mcp-atlassianConfigure IDE Integration for MCP Atlassian
mainTo use MCP Atlassian with an IDE, you must add it to the IDE's MCP configuration.
Claude Desktop Configuration Locations:
- Windows:
%APPDATA%\Claude\claude_desktop_config.json - macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Linux:
~/.config/Claude/claude_desktop_config.json
Cursor: Navigate to
Settings→MCP→+ Add new global MCP server.- Windows:
Best Practices for JQL Queries
mainWhen writing JQL for
jira_search:- Deterministic Results: Always include
ORDER BYin your queries to ensure predictable results. - Relative Dates: Use relative date strings like
"-7d","-1w", or"-1M"instead of absolute dates to make queries reusable. - Function Compatibility: Be aware that some functions (e.g.,
issueHistory()) may be Cloud-only. Verify support with your specific Jira version.
- Deterministic Results: Always include
Create Confluence Documentation Structure
mainOrganize Confluence content using a hierarchy:
- Create a parent page: Use
confluence_create_pagewith aspace_key,title, andcontent. - Create child pages: Use
confluence_create_pageand provide theparent_idof the parent page. - Organize with labels: Use
confluence_add_labelto attach metadata to a page via itspage_id.
- Create a parent page: Use