mcp-atlassian-extended
mcp-atlassian-extended
Install: uvx mcp-atlassian-extended | PyPI | MCP Registry | Changelog
mcp-atlassian-extended is a Model Context Protocol (MCP) server that extends mcp-atlassian with 26 tools, 15 resources, and 5 prompts for Jira and Confluence: issue creation with custom fields, issue links, attachments, agile boards, sprints, backlog management, user search, project versions (API v2), calendars, time-off tracking, and sprint capacity planning. Works with Claude Desktop, Claude Code, Cursor, Windsurf, VS Code Copilot, and any MCP-compatible client.
Supports Jira Cloud, Jira Data Center, Confluence Cloud, and Confluence Data Center (self-hosted). No Atlassian Premium required.
Built with FastMCP, httpx, and Pydantic.
Relationship to mcp-atlassian
This project runs alongside mcp-atlassian, not as a replacement. Configure both servers:
mcp-atlassian handles: issues, search, transitions, comments, worklog, pages, Confluence search
mcp-atlassian-extended handles: attachments, agile, users, fields, versions (API v2), calendars, time-off
There is no tool overlap — this server only implements tools that mcp-atlassian lacks.
1-Click Installation
💡 Tip: For other AI assistants (Claude Code, Windsurf, IntelliJ, Gemini CLI), visit the Atlassian Extended MCP Installation Gateway.
Prerequisite: Install
uvfirst (required for alluvxinstall flows). Install uv.
Claude Code
claude mcp add atlassian-extended -- uvx mcp-atlassian-extendedWindsurf & IntelliJ
Windsurf: Add to ~/.codeium/windsurf/mcp_config.json
IntelliJ: Add to Settings | Tools | MCP Servers
Note: The actual server config starts at
atlassian-extendedinside themcpServersobject.
{
"mcpServers": {
"atlassian-extended": {
"command": "uvx",
"args": ["mcp-atlassian-extended"],
"env": {
"JIRA_URL": "https://your-company.atlassian.net",
"JIRA_USERNAME": "your.email@company.com",
"JIRA_API_TOKEN": "your_api_token",
"CONFLUENCE_URL": "https://your-company.atlassian.net/wiki",
"CONFLUENCE_USERNAME": "your.email@company.com",
"CONFLUENCE_API_TOKEN": "your_api_token"
}
}
}
}Gemini CLI
gemini mcp add -e JIRA_URL=https://your-company.atlassian.net -e JIRA_USERNAME=your.email@company.com -e JIRA_API_TOKEN=your_api_token -e CONFLUENCE_URL=https://your-company.atlassian.net/wiki -e CONFLUENCE_USERNAME=your.email@company.com -e CONFLUENCE_API_TOKEN=your_api_token atlassian-extended uvx mcp-atlassian-extendedpip / uv
uv pip install mcp-atlassian-extendedConfiguration
Jira Cloud (Basic Auth)
Variable | Required | Default | Description |
| Yes | - | Jira instance URL (e.g. |
| Yes | - | Email address for Jira Cloud |
| Yes | - | API token from id.atlassian.com/manage-profile/security/api-tokens |
Jira Data Center / Self-Hosted (Bearer Token)
Variable | Required | Default | Description |
| Yes | - | Jira instance URL |
| Yes | - | Personal access token (see fallback order below) |
The server checks these environment variables in order — first match wins:
JIRA_PATJIRA_PERSONAL_TOKENJIRA_TOKEN
Confluence Cloud (Basic Auth)
Variable | Required | Default | Description |
| Yes | - | Confluence URL (e.g. |
| Yes | - | Email address for Confluence Cloud |
| Yes | - | API token (same as Jira if same Atlassian account) |
Confluence Data Center / Self-Hosted (Bearer Token)
Variable | Required | Default | Description |
| Yes | - | Confluence instance URL |
| Yes | - | Personal access token (see fallback order below) |
The server checks these environment variables in order — first match wins:
CONFLUENCE_PATCONFLUENCE_PERSONAL_TOKENCONFLUENCE_TOKEN
Optional settings
Variable | Default | Description |
|
| Set to |
|
| HTTP request timeout for Jira in seconds |
|
| Set to |
|
| HTTP request timeout for Confluence in seconds |
|
| Set to |
Compatibility
Client | Supported | Install Method |
Claude Desktop | Yes |
|
Claude Code | Yes |
|
Cursor | Yes | One-click deeplink or |
Windsurf | Yes |
|
VS Code Copilot | Yes |
|
Any MCP client | Yes | stdio or HTTP transport |
Tools (26)
Category | Count | Tools |
Jira Issues | 3 | create (with custom fields), update (with custom fields), create epic |
Jira Links | 2 | create link, delete link |
Jira Attachments | 4 | get, upload, download, delete |
Jira Users | 1 | search by name/email |
Jira Metadata | 3 | list projects, list fields, backlog |
Jira Agile | 4 | get board, board config, get sprint, move to sprint |
Jira Versions | 3 | get project versions, create version, update version |
Confluence Calendars | 6 | list, search, time-off, who-is-out, person time-off, sprint capacity |
Jira Issues
Tool | Description |
| Create issue with standard and custom fields |
| Update issue fields and custom fields |
| Create an epic (sets issue type automatically) |
Jira Links
Tool | Description |
| Create a link between two issues (Relates, Blocks, etc.) |
| Delete an issue link by ID |
Jira Attachments
Tool | Description |
| List attachments on an issue |
| Upload file to issue |
| Download attachment to local file |
| Delete an attachment |
Jira Users
Tool | Description |
| Search users by name/email |
Jira Metadata
Tool | Description |
| List all accessible projects |
| List fields (with search/custom filter) |
| Get backlog issues for a board |
Jira Agile
Tool | Description |
| Get board details |
| Get board column configuration |
| Get sprint details |
| Move issues to a sprint |
Jira Versions
Tool | Description |
| List all versions for a project (REST API v2, Server/DC + Cloud) |
| Create a new version in a project (REST API v2) |
| Update an existing version (REST API v2) |
Confluence Calendars
Tool | Description |
| List all calendars |
| Search calendars by name/space |
| Get time-off events for date range |
| Check who is out on a date |
| Get person's time-off events |
| Calculate sprint capacity with time-off |
Resources (15)
The server exposes curated Jira and Confluence workflow guides as MCP resources.
URI | Name | Description |
| Jira Issue Hierarchy | Epic/story/task/subtask relationships, when to use each level |
| Jira Ticket Writing Standards | Summary format, description structure, acceptance criteria placement |
| Acceptance Criteria Standards | Given/When/Then format, testability, DoD vs AC |
| Sprint Hygiene Rules | Capacity planning, carryover policy, sprint goals, retrospective items |
| Jira Workflow & Automation | Status transitions, automation triggers, post-functions |
| Issue Linking Best Practices | Link types (blocks, relates, duplicates), cross-project links, epic links |
| Story Point Estimation | Fibonacci scale, relative sizing, team calibration, anti-patterns |
| Definition of Done Checklists | Checklist format, team-level vs org-level DoD, verification steps |
| Jira Label Taxonomy | Naming conventions, label categories, label vs component |
| JQL Query Library | Common queries, date functions, custom field syntax, saved filters |
| Jira Custom Field Governance | Field types, screen schemes, context, naming standards |
| Confluence Space Organization | Space types, permission schemes, archiving, templates |
| Agile Ceremony Standards | Standup, planning, review, retro formats and time-boxing |
| Git-Jira Integration Patterns | Smart commits, branch naming, PR linking, status transitions |
| Confluence Page Templates | ADR, runbook, onboarding, postmortem page structures |
Prompts (5)
The server provides MCP prompts — reusable multi-tool workflow templates that clients can surface as slash commands.
Prompt | Parameters | Workflow |
|
| Gather fields → set custom fields (DoD, privacy, security) → create → add links |
|
| Check sprint → review backlog → calculate capacity → suggest scope → move issues |
|
| Verify DoD → check linked MR → transition statuses → add closing comment |
|
| Check who is out → per-person time-off → calculate capacity → flag conflicts |
|
| List attachments → identify stale/duplicates → upload/download → clean up |
Usage Examples
Issue Management
"Create a story in PROJ with custom story points"
→ jira_create_issue(project_key="PROJ", summary="Add OAuth login", issue_type="Story",
custom_fields={"customfield_10004": 5})
"Update a ticket's priority and add labels"
→ jira_update_issue(issue_key="PROJ-123", fields={"priority": {"name": "High"}, "labels": ["urgent"]})
"Create an epic and link related stories"
→ jira_create_epic(project_key="PROJ", epic_name="Q1 Auth Overhaul")
→ jira_create_link(link_type="Relates", inward_issue="PROJ-100", outward_issue="PROJ-200")Attachments
"List attachments on PROJ-123"
→ jira_get_attachments(issue_key="PROJ-123")
"Upload a screenshot to a ticket"
→ jira_upload_attachment(issue_key="PROJ-123", file_path="./screenshot.png")
"Download an attachment"
→ jira_download_attachment(content_url="https://jira.example.com/rest/api/2/attachment/content/456",
save_path="./downloads/report.pdf")Agile & Sprint Management
"Get the current sprint for board 42"
→ jira_get_board(board_id=42) → jira_get_sprint(sprint_id=7)
"Move tickets into the next sprint"
→ jira_move_to_sprint(sprint_id=8, issue_keys=["PROJ-1", "PROJ-2", "PROJ-3"])
"View backlog for board 42"
→ jira_backlog(board_id=42, max_results=50)Version Management
"List versions for project PROJ"
→ jira_get_project_versions(project_key="PROJ")
"Create a new release version"
→ jira_create_version(project_key="PROJ", name="v2.0.0", release_date="2026-04-01")
"Mark version as released"
→ jira_update_version(version_id="200", released=True)Time-Off & Sprint Capacity
"Who is out today?"
→ confluence_who_is_out(date="today")
"Get team time-off for the next two weeks"
→ confluence_get_time_off(start_date="today", end_date="+14d", group_by_person=True)
"Calculate sprint capacity accounting for PTO"
→ confluence_sprint_capacity(
team_members=["Alice", "Bob", "Carol"],
sprint_start="2025-03-03", sprint_end="2025-03-14")Security Considerations
Token scope: For Jira Cloud, use API tokens scoped to the minimum required permissions. For Data Center, use PATs with project-level access.
Read-only mode: Set
ATLASSIAN_READ_ONLY=trueto disable all write operations (create, update, delete, upload). Enforced server-side before any API call.File upload validation:
jira_upload_attachmentvalidates file paths (no traversal, max 100MB, file must exist).Download path restriction:
jira_download_attachmentonly accepts relative paths resolved within the working directory. Absolute paths and path traversal (../) are rejected.Download URL validation: Attachment download URLs are validated against the configured Jira URL domain to prevent SSRF.
SSL verification: Enabled by default for both Jira and Confluence. Only disable for self-signed certificates in trusted networks.
MCP tool annotations: Each tool declares
readOnlyHint,destructiveHint, andidempotentHintfor client-side permission prompts.No credential storage: Tokens are read from environment variables at startup and never persisted.
Rate Limits & Permissions
Rate Limits
Jira Cloud enforces per-user rate limits. When rate-limited, tools return a 429 error with a hint to wait. Confluence Calendar API calls may be slower due to the Team Calendars plugin architecture.
Required Permissions
Operation | Minimum Jira Permission |
List projects, fields, boards | Browse Projects |
Search users | Browse Users |
Create/update issues, epics | Create Issues + Edit Issues |
Create/delete issue links | Link Issues |
Upload/delete attachments | Create Attachments + Delete Own Attachments |
Move issues to sprint | Manage Sprints |
Create/update versions | Administer Projects |
Confluence calendars/time-off | View space content |
CLI & Transport Options
# Default: stdio transport (for MCP clients)
uvx mcp-atlassian-extended
# HTTP transport (SSE or streamable-http)
uvx mcp-atlassian-extended --transport sse --host 127.0.0.1 --port 8000
uvx mcp-atlassian-extended --transport streamable-http --port 9000
# CLI overrides for config
uvx mcp-atlassian-extended --jira-url https://jira.example.com --jira-token xxx --read-onlyThe server loads .env files from the working directory automatically via python-dotenv.
Partial configuration: If only Jira credentials are set, the server starts with Jira tools only (no Confluence tools). The reverse also works — set only Confluence credentials to get calendar/time-off tools without Jira.
Related MCP Servers
mcp-gitlab — GitLab integration (76 tools, 6 resources, 5 prompts)
mcp-coda — Coda.io integration (54 tools, 12 resources, 5 prompts)
Attribution
Inspired by mcp-atlassian by sooperset. Architecture and patterns follow similar conventions.
Development
git clone https://github.com/vish288/mcp-atlassian-extended.git
cd mcp-atlassian-extended
uv sync --all-extras
uv run pytest --cov
uv run ruff check .
uv run ruff format --check .License
MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/vish288/mcp-atlassian-extended'
If you have feedback or need assistance with the MCP directory API, please join our Discord server