MCP Atlassian Server
Provides tools to interact with Atlassian Cloud APIs, enabling management of Confluence pages and Jira issues, including search, creation, updates, and user management.
Enables reading, searching, creating, updating Confluence pages, managing attachments, labels, comments, and exporting pages as HTML or Markdown.
Allows reading, searching, creating Jira issues, adding comments, listing projects, boards, sprints, and tracking user activity and worklogs.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@MCP Atlassian ServerShow my active Jira sprint tasks"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Atlassian Server
This is a maintained fork of Vijay-Duke/mcp-atlassian
Why this fork exists: In January 2026, Atlassian removed the
/rest/api/3/searchendpoint entirely, breaking all Jira search functionality in the original package. This fork migrates to the new/rest/api/3/search/jqlendpoint and implements the new cursor-based pagination. A PR has been submitted to upstream, but as of now there are 14+ unmerged PRs in that repo.Install this fork:
npm install @efithor/mcp-atlassian --registry=https://npm.pkg.github.com
A Model Context Protocol (MCP) server for integrating with Atlassian products (Confluence and Jira). This server provides tools for AI assistants to interact with Atlassian Cloud APIs, enabling document management, search, and export capabilities.
Features
Confluence Integration
Read & Search: Access pages, spaces, and content
Content Management: Create, update pages and comments
Page Hierarchy: Navigate parent/child page relationships
Export: Export pages as HTML or Markdown with embedded images
Attachments: List, download, and upload attachments
Labels: Manage page labels
Users: Find and query users, track personal activity
Personal Dashboard: View recent pages and mentions
Jira Integration
Issues: Read and search issues, get personal tasks
Projects: List and explore projects
Boards & Sprints: List boards, view sprints, track active work
Comments: Add comments to issues
Issue Creation: Create new issues with custom fields
User Management: Get current user details
Personal Dashboard: View your open issues and sprint tasks
Related MCP server: MCP Atlassian Server
Installation
Option 1: GitHub Packages (Recommended)
First, configure npm to use GitHub Packages for the @efithor scope. Add to your ~/.npmrc:
@efithor:registry=https://npm.pkg.github.comThen install:
# Install globally
npm install -g @efithor/mcp-atlassian
# Or install locally
npm install @efithor/mcp-atlassianOption 2: Clone and Build
# Clone this fork
git clone https://github.com/Efithor/mcp-atlassian.git
cd mcp-atlassian
# Install dependencies
npm install
# Build TypeScript
npm run buildOption 3: Install Directly from GitHub
# Install directly from this fork
npm install -g github:Efithor/mcp-atlassian
# Or install in your project
npm install github:Efithor/mcp-atlassianConfiguration
Environment Variables
Create a .env file in the root directory:
ATLASSIAN_BASE_URL=https://yourdomain.atlassian.net
ATLASSIAN_EMAIL=your-email@example.com
ATLASSIAN_API_TOKEN=your-api-tokenGetting API Token
Log in to Atlassian Account Settings
Click "Create API token"
Give it a label and copy the token
Use this token in your
.envfile
MCP Settings Configuration
Add to your Claude Desktop config file:
macOS:
~/Library/Application Support/Claude/claude_desktop_config.jsonWindows:
%APPDATA%\Claude\claude_desktop_config.jsonLinux:
~/.config/Claude/claude_desktop_config.json
Option 1: After npm install -g
{
"mcpServers": {
"mcp-atlassian": {
"command": "npx",
"args": ["@efithor/mcp-atlassian"],
"env": {
"ATLASSIAN_BASE_URL": "https://yourdomain.atlassian.net",
"ATLASSIAN_EMAIL": "your-email@example.com",
"ATLASSIAN_API_TOKEN": "YOUR_API_TOKEN"
}
}
}
}Option 2: From Local Clone
{
"mcpServers": {
"mcp-atlassian": {
"command": "node",
"args": ["/path/to/your/mcp-atlassian/dist/index.js"],
"env": {
"ATLASSIAN_BASE_URL": "https://yourdomain.atlassian.net",
"ATLASSIAN_EMAIL": "your-email@example.com",
"ATLASSIAN_API_TOKEN": "YOUR_API_TOKEN"
}
}
}
}Example with typical paths:
{
"mcpServers": {
"mcp-atlassian": {
"command": "node",
"args": ["~/projects/mcp-atlassian/dist/index.js"],
"env": {
"ATLASSIAN_BASE_URL": "https://yourdomain.atlassian.net",
"ATLASSIAN_EMAIL": "your.email@company.com",
"ATLASSIAN_API_TOKEN": "YOUR_API_TOKEN"
}
}
}
}Option 3: Direct from GitHub using uvx (Coming Soon)
You can run the server directly from GitHub without cloning:
{
"mcpServers": {
"mcp-atlassian": {
"command": "uvx",
"args": ["--from", "git+https://github.com/Efithor/mcp-atlassian.git", "mcp-atlassian"],
"env": {
"ATLASSIAN_BASE_URL": "https://yourdomain.atlassian.net",
"ATLASSIAN_EMAIL": "your-email@example.com",
"ATLASSIAN_API_TOKEN": "YOUR_API_TOKEN"
}
}
}
}Note: The uvx method requires the package to be properly configured for Python packaging. This is planned for a future release.
Available Tools
Confluence Tools
Tool | Description |
| Get details of the authenticated user |
| Get details for a specific user |
| Search pages by user activity |
| List pages authored by a user |
| List attachments uploaded by a user |
| Read a Confluence page by ID or title |
| Search pages using CQL (Confluence Query Language) |
| List all accessible spaces |
| Get details of a specific space |
| Create a new page |
| Update existing page content |
| List child pages of a page |
| Get parent hierarchy of a page |
| Export page as HTML or Markdown with embedded images |
| List page attachments |
| Download specific attachment |
| Upload file to a page |
| Download page with all content |
| Add comment to a page |
| Get page labels |
| Add labels to a page |
| Search for users |
| List your recent pages |
| Find pages that mention you |
Jira Tools
Tool | Description |
| Get details of the authenticated user |
| Get details for a specific user |
| Search issues by user involvement |
| List issues by user role with date filtering |
| Track user activity including comments and transitions |
| Get time tracking entries with formatted totals |
| Read issue details by key |
| Search issues using JQL |
| List all accessible projects |
| Create new issue |
| Add comment to issue |
| List accessible Scrum/Kanban boards |
| List sprints for a board |
| Get detailed sprint information |
| Get your tasks in active sprints |
| Get all your open issues |
Usage Examples
Export Confluence Page
// Export as HTML (raw content with embedded images)
{
"tool": "export_confluence_page",
"arguments": {
"pageId": "123456789",
"format": "html"
}
}
// Export as Markdown with metadata
{
"tool": "export_confluence_page",
"arguments": {
"pageId": "123456789",
"format": "markdown"
}
}Search Confluence
{
"tool": "search_confluence_pages",
"arguments": {
"cql": "space=DEV AND text~'architecture'",
"limit": 10
}
}Create Jira Issue
{
"tool": "create_jira_issue",
"arguments": {
"projectKey": "PROJ",
"issueType": "Task",
"summary": "Implement new feature",
"description": "Detailed description here",
"priority": "Medium"
}
}Get Your Sprint Tasks
// Get your tasks in the current sprint
{
"tool": "get_my_tasks_in_current_sprint",
"arguments": {
"projectKey": "PROJ"
}
}
// Get all your open issues
{
"tool": "get_my_open_issues",
"arguments": {
"projectKeys": ["PROJ1", "PROJ2"],
"maxResults": 50
}
}Work with Boards and Sprints
// List boards for a project
{
"tool": "list_jira_boards",
"arguments": {
"projectKeyOrId": "PROJ",
"type": "scrum"
}
}
// Get active sprints for a board
{
"tool": "list_jira_sprints",
"arguments": {
"boardId": 123,
"state": "active"
}
}User-Specific Jira Operations
// Get user details
{
"tool": "get_jira_user",
"arguments": {
"username": "john.doe"
}
}
// Search issues by user involvement
{
"tool": "search_jira_issues_by_user",
"arguments": {
"username": "john.doe",
"searchType": "assignee",
"status": "In Progress",
"maxResults": 20
}
}
// Get user's work logs
{
"tool": "get_user_jira_worklog",
"arguments": {
"username": "john.doe",
"startDate": "2024-01-01",
"endDate": "2024-01-31",
"projectKeys": ["PROJ1", "PROJ2"]
}
}
// Track user activity
{
"tool": "get_user_jira_activity",
"arguments": {
"username": "john.doe",
"activityType": "all",
"days": 7
}
}Content Format Support
Markdown ↔ Confluence Storage Format
The server automatically converts between Markdown and Confluence's storage format:
Write content in Markdown when creating/updating pages
Read pages in either storage format or converted to Markdown
Preserves formatting, links, and structure
Export Formats
HTML: Raw Confluence HTML with all images embedded as base64 data URIs
Markdown: Clean Markdown with YAML frontmatter, includes metadata and embedded images
Development
# Run in development mode with console logging
npm run dev
# Build for production
npm run build
# Run built server in MCP mode (no console output)
npm start
# Run built server in development mode (with console output)
npm run start:dev
# Run tests
npm testLogging Behavior
The server defaults to MCP mode where console output is disabled to prevent interference with the JSON-RPC protocol. Console logging is only enabled when MCP_SERVER_MODE=false is set, which is done automatically by the dev and start:dev scripts.
Project Structure
mcp-atlassian/
├── src/
│ ├── index.ts # Main server entry point
│ ├── types/ # TypeScript type definitions
│ ├── confluence/
│ │ ├── handlers.ts # Confluence API handlers
│ │ └── tools.ts # Tool definitions
│ ├── jira/
│ │ ├── handlers.ts # Jira API handlers
│ │ └── tools.ts # Tool definitions
│ └── utils/
│ ├── http-client.ts # Axios HTTP client setup
│ ├── content-converter.ts # Markdown ↔ Storage conversion
│ └── export-converter.ts # HTML/Markdown export utilities
├── dist/ # Compiled JavaScript
├── .env # Environment variables (not in git)
├── package.json
└── tsconfig.jsonSecurity Notes
API tokens are stored in environment variables, never in code
Uses Basic Authentication with API tokens (not passwords)
All requests are made over HTTPS
Supports Atlassian Cloud only (not Server/Data Center)
Limitations
No delete operations implemented (by design for safety)
Export to PDF requires browser conversion (HTML → Print → PDF)
Some Confluence macros may not convert perfectly to Markdown
Rate limits apply based on Atlassian Cloud API limits
CI/CD Pipeline
This project uses GitHub Actions for continuous integration and deployment.
Workflows
🔄 Continuous Integration (ci.yml)
Triggers: Push to main/develop, Pull requests
Jobs:
Test: Runs tests on Node.js 18.x, 20.x, and 22.x
Build: Compiles TypeScript and validates the build
Lint: Type checking and security audit
Validate Package: Ensures package size and structure
📦 Publish to npm (publish.yml)
Triggers: GitHub releases, Manual dispatch
Features:
Automatic version bumping
npm publishing with provenance
GitHub release creation
Changelog updates
🔒 Security Scanning (security.yml)
Triggers: Push to main, PRs, Weekly schedule
Scans:
npm audit for vulnerabilities
CodeQL analysis
OWASP dependency check
Snyk security scanning (optional)
🏷️ Release Management (release.yml)
Triggers: Version tags, Manual dispatch
Features:
Automatic changelog generation
GitHub release creation
Build artifacts attachment
Release notes formatting
✅ PR Validation (pr-validation.yml)
Triggers: Pull request events
Checks:
Semantic PR title validation
PR size labeling
Auto-labeling based on files changed
🤖 Automated Dependency Updates
Dependabot is configured to:
Check for npm dependency updates weekly
Check for GitHub Actions updates weekly
Group non-major updates together
Create PRs with proper labels
Setting Up CI/CD
Required GitHub Secrets
NPM_TOKEN: npm authentication token for publishing
Generate at: https://www.npmjs.com/settings/YOUR_USERNAME/tokens
Required scopes:
publish
SNYK_TOKEN (Optional): For Snyk security scanning
Get from: https://app.snyk.io/account
Branch Protection
Recommended branch protection rules for main:
Require PR reviews before merging
Require status checks to pass (CI tests)
Require branches to be up to date
Include administrators in restrictions
Local Development
Before pushing changes:
# Run tests locally
npm test
# Build the project
npm run build
# Check for security vulnerabilities
npm audit
# Type check
npx tsc --noEmitContributing
Contributions are welcome! Please feel free to submit a Pull Request.
License
MIT License - see LICENSE file for details
Support
For issues and questions:
Create an issue in this fork's GitHub repository
Check Atlassian API documentation for API-specific questions
Review MCP documentation for protocol-related topics
Acknowledgments
Built with:
TypeScript, Node.js, Axios
Contributors
Thanks goes to these wonderful people (emoji key):
This project follows the all-contributors specification. Contributions of any kind welcome!
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Vijay-Duke/mcp-atlassian'
If you have feedback or need assistance with the MCP directory API, please join our Discord server