Tools for Atlassian products (Confluence and Jira). This integration supports both Atlassian Cloud and Jira Server/Data Center deployments.
10K+
42 Tools
Version 4.43 or later needs to be installed to add the server automatically
Use cases
About
Tools for Atlassian products (Confluence and Jira). This integration supports both Atlassian Cloud and Jira Server/Data Center deployments.
| Attribute | Details |
|---|---|
| Docker Image | mcp/atlassian |
| Author | sooperset |
| Repository | https://github.com/sooperset/mcp-atlassian |
| Attribute | Details |
|---|---|
| Dockerfile | https://github.com/sooperset/mcp-atlassian/blob/3b07fd3d05f88cd18c37a1739d4e0a1f37fa9aa5/Dockerfile |
| Docker Image built by | Docker Inc. |
| Docker Scout Health Score | |
| Verify Signature | COSIGN_REPOSITORY=mcp/signatures cosign verify mcp/atlassian --key https://raw.githubusercontent.com/docker/keyring/refs/heads/main/public/mcp/latest.pub |
| Licence | MIT License |
| Tools provided by this Server | Short Description |
|---|---|
confluence_add_comment | Add a comment to a Confluence page. |
confluence_add_label | Add label to an existing Confluence page. |
confluence_create_page | Create a new Confluence page. |
confluence_delete_page | Delete an existing Confluence page. |
confluence_get_comments | Get comments for a specific Confluence page. |
confluence_get_labels | Get labels for a specific Confluence page. |
confluence_get_page | Get content of a specific Confluence page by its ID, or by its title and space key. |
confluence_get_page_children | Get child pages of a specific Confluence page. |
confluence_search | Search Confluence content using simple terms or CQL. |
confluence_search_user | Search Confluence users using CQL. |
confluence_update_page | Update an existing Confluence page. |
jira_add_comment | Add a comment to a Jira issue. |
jira_add_worklog | Add a worklog entry to a Jira issue. |
jira_batch_create_issues | Create multiple Jira issues in a batch. |
jira_batch_create_versions | Batch create multiple versions in a Jira project. |
jira_batch_get_changelogs | Get changelogs for multiple Jira issues (Cloud only). |
jira_create_issue | Create a new Jira issue with optional Epic link or parent for subtasks. |
jira_create_issue_link | Create a link between two Jira issues. |
jira_create_remote_issue_link | Create a remote issue link (web link or Confluence link) for a Jira issue. |
jira_create_sprint | Create Jira sprint for a board. |
jira_create_version | Create a new fix version in a Jira project. |
jira_delete_issue | Delete an existing Jira issue. |
jira_download_attachments | Download attachments from a Jira issue. |
jira_get_agile_boards | Get jira agile boards by name, project key, or type. |
jira_get_all_projects | Get all Jira projects accessible to the current user. |
jira_get_board_issues | Get all issues linked to a specific board filtered by JQL. |
jira_get_issue | Get details of a specific Jira issue including its Epic links and relationship information. |
jira_get_link_types | Get all available issue link types. |
jira_get_project_issues | Get all issues for a specific Jira project. |
jira_get_project_versions | Get all fix versions for a specific Jira project. |
jira_get_sprint_issues | Get jira issues from sprint. |
jira_get_sprints_from_board | Get jira sprints from board by state. |
jira_get_transitions | Get available status transitions for a Jira issue. |
jira_get_user_profile | Retrieve profile information for a specific Jira user. |
jira_get_worklog | Get worklog entries for a Jira issue. |
jira_link_to_epic | Link an existing issue to an epic. |
jira_remove_issue_link | Remove a link between two Jira issues. |
jira_search | Search Jira issues using JQL (Jira Query Language). |
jira_search_fields | Search Jira fields by keyword with fuzzy match. |
jira_transition_issue | Transition a Jira issue to a new status. |
jira_update_issue | Update an existing Jira issue including changing status, adding Epic links, updating fields, etc. |
jira_update_sprint | Update jira sprint. |
confluence_add_commentAdd a comment to a Confluence page.
| Parameters | Type | Description |
|---|---|---|
content | string | The comment content in Markdown format |
page_id | string | The ID of the page to add a comment to |
confluence_add_labelAdd label to an existing Confluence page.
| Parameters | Type | Description |
|---|---|---|
name | string | The name of the label |
page_id | string | The ID of the page to update |
confluence_create_pageCreate a new Confluence page.
| Parameters | Type | Description |
|---|---|---|
content | string | The content of the page. Format depends on content_format parameter. Can be Markdown (default), wiki markup, or storage format |
space_key | string | The key of the space to create the page in (usually a short uppercase code like 'DEV', 'TEAM', or 'DOC') |
title | string | The title of the page |
content_format | stringoptional | (Optional) The format of the content parameter. Options: 'markdown' (default), 'wiki', or 'storage'. Wiki format uses Confluence wiki markup syntax |
enable_heading_anchors | booleanoptional | (Optional) Whether to enable automatic heading anchor generation. Only applies when content_format is 'markdown' |
parent_id | stringoptional | (Optional) parent page ID. If provided, this page will be created as a child of the specified page |
confluence_delete_pageDelete an existing Confluence page.
| Parameters | Type | Description |
|---|---|---|
page_id | string | The ID of the page to delete |
confluence_get_commentsGet comments for a specific Confluence page.
| Parameters | Type | Description |
|---|---|---|
page_id | string | Confluence page ID (numeric ID, can be parsed from URL, e.g. from 'https://example.atlassian.net/wiki/spaces/TEAM/pages/123456789/Page+Title' -> '123456789') |
confluence_get_labelsGet labels for a specific Confluence page.
| Parameters | Type | Description |
|---|---|---|
page_id | string | Confluence page ID (numeric ID, can be parsed from URL, e.g. from 'https://example.atlassian.net/wiki/spaces/TEAM/pages/123456789/Page+Title' -> '123456789') |
confluence_get_pageGet content of a specific Confluence page by its ID, or by its title and space key.
| Parameters | Type | Description |
|---|---|---|
convert_to_markdown | booleanoptional | Whether to convert page to markdown (true) or keep it in raw HTML format (false). Raw HTML can reveal macros (like dates) not visible in markdown, but CAUTION: using HTML significantly increases token usage in AI responses. |
include_metadata | booleanoptional | Whether to include page metadata such as creation date, last update, version, and labels. |
page_id | stringoptional | Confluence page ID (numeric ID, can be found in the page URL). For example, in the URL 'https://example.atlassian.net/wiki/spaces/TEAM/pages/123456789/Page+Title', the page ID is '123456789'. Provide this OR both 'title' and 'space_key'. If page_id is provided, title and space_key will be ignored. |
space_key | stringoptional | The key of the Confluence space where the page resides (e.g., 'DEV', 'TEAM'). Required if using 'title'. |
title | stringoptional | The exact title of the Confluence page. Use this with 'space_key' if 'page_id' is not known. |
confluence_get_page_childrenGet child pages of a specific Confluence page.
| Parameters | Type | Description |
|---|---|---|
parent_id | string | The ID of the parent page whose children you want to retrieve |
convert_to_markdown | booleanoptional | Whether to convert page content to markdown (true) or keep it in raw HTML format (false). Only relevant if include_content is true. |
expand | stringoptional | Fields to expand in the response (e.g., 'version', 'body.storage') |
include_content | booleanoptional | Whether to include the page content in the response |
limit | integeroptional | Maximum number of child pages to return (1-50) |
start | integeroptional | Starting index for pagination (0-based) |
confluence_searchSearch Confluence content using simple terms or CQL.
| Parameters | Type | Description |
|---|---|---|
query | string | Search query - can be either a simple text (e.g. 'project documentation') or a CQL query string. Simple queries use 'siteSearch' by default, to mimic the WebUI search, with an automatic fallback to 'text' search if not supported. Examples of CQL: |
limit|integeroptional|Maximum number of results (1-50)
spaces_filter|stringoptional|(Optional) Comma-separated list of space keys to filter results by. Overrides the environment variable CONFLUENCE_SPACES_FILTER if provided. Use empty string to disable filtering.confluence_search_userSearch Confluence users using CQL.
| Parameters | Type | Description |
|---|---|---|
query | string | Search query - a CQL query string for user search. Examples of CQL: |
limit|integeroptional|Maximum number of results (1-50)confluence_update_pageUpdate an existing Confluence page.
| Parameters | Type | Description |
|---|---|---|
content | string | The new content of the page. Format depends on content_format parameter |
page_id | string | The ID of the page to update |
title | string | The new title of the page |
content_format | stringoptional | (Optional) The format of the content parameter. Options: 'markdown' (default), 'wiki', or 'storage'. Wiki format uses Confluence wiki markup syntax |
enable_heading_anchors | booleanoptional | (Optional) Whether to enable automatic heading anchor generation. Only applies when content_format is 'markdown' |
is_minor_edit | booleanoptional | Whether this is a minor edit |
parent_id | stringoptional | Optional the new parent page ID |
version_comment | stringoptional | Optional comment for this version |
jira_add_commentAdd a comment to a Jira issue.
| Parameters | Type | Description |
|---|---|---|
comment | string | Comment text in Markdown format |
issue_key | string | Jira issue key (e.g., 'PROJ-123') |
jira_add_worklogAdd a worklog entry to a Jira issue.
| Parameters | Type | Description |
|---|---|---|
issue_key | string | Jira issue key (e.g., 'PROJ-123') |
time_spent | string | Time spent in Jira format. Examples: '1h 30m' (1 hour and 30 minutes), '1d' (1 day), '30m' (30 minutes), '4h' (4 hours) |
comment | stringoptional | (Optional) Comment for the worklog in Markdown format |
original_estimate | stringoptional | (Optional) New value for the original estimate |
remaining_estimate | stringoptional | (Optional) New value for the remaining estimate |
started | stringoptional | (Optional) Start time in ISO format. If not provided, the current time will be used. Example: '2023-08-01T12:00:00.000+0000' |
jira_batch_create_issuesCreate multiple Jira issues in a batch.
| Parameters | Type | Description |
|---|---|---|
issues | string | JSON array of issue objects. Each object should contain: |
validate_only|booleanoptional|If true, only validates the issues without creating themjira_batch_create_versionsBatch create multiple versions in a Jira project.
| Parameters | Type | Description |
|---|---|---|
project_key | string | Jira project key (e.g., 'PROJ') |
versions | string | JSON array of version objects. Each object should contain: |
jira_batch_get_changelogsGet changelogs for multiple Jira issues (Cloud only).
| Parameters | Type | Description |
|---|---|---|
issue_ids_or_keys | array | List of Jira issue IDs or keys, e.g. ['PROJ-123', 'PROJ-124'] |
fields | stringoptional | (Optional) Filter the changelogs by fields, e.g. ['status', 'assignee']. Default to None for all fields. |
limit | integeroptional | Maximum number of changelogs to return in result for each issue. Default to -1 for all changelogs. Notice that it only limits the results in the response, the function will still fetch all the data. |
jira_create_issueCreate a new Jira issue with optional Epic link or parent for subtasks.
| Parameters | Type | Description |
|---|---|---|
issue_type | string | Issue type (e.g. 'Task', 'Bug', 'Story', 'Epic', 'Subtask'). The available types depend on your project configuration. For subtasks, use 'Subtask' (not 'Sub-task') and include parent in additional_fields. |
project_key | string | The JIRA project key (e.g. 'PROJ', 'DEV', 'SUPPORT'). This is the prefix of issue keys in your project. Never assume what it might be, always ask the user. |
summary | string | Summary/title of the issue |
additional_fields | stringoptional | (Optional) Dictionary of additional fields to set. Examples: |
assignee|stringoptional|(Optional) Assignee's user identifier (string): Email, display name, or account ID (e.g., 'user@example.com', 'John Doe', 'accountid:...')
components|stringoptional|(Optional) Comma-separated list of component names to assign (e.g., 'Frontend,API')
description|stringoptional|Issue descriptionjira_create_issue_linkCreate a link between two Jira issues.
| Parameters | Type | Description |
|---|---|---|
inward_issue_key | string | The key of the inward issue (e.g., 'PROJ-123') |
link_type | string | The type of link to create (e.g., 'Duplicate', 'Blocks', 'Relates to') |
outward_issue_key | string | The key of the outward issue (e.g., 'PROJ-456') |
comment | stringoptional | (Optional) Comment to add to the link |
comment_visibility | stringoptional | (Optional) Visibility settings for the comment (e.g., {'type': 'group', 'value': 'jira-users'}) |
jira_create_remote_issue_linkCreate a remote issue link (web link or Confluence link) for a Jira issue.
This tool allows you to add web links and Confluence links to Jira issues.
The links will appear in the issue's "Links" section and can be clicked to navigate to external resources.
| Parameters | Type | Description |
|---|---|---|
issue_key | string | The key of the issue to add the link to (e.g., 'PROJ-123') |
title | string | The title/name of the link (e.g., 'Documentation Page', 'Confluence Page') |
url | string | The URL to link to (e.g., 'https://example.com/page' or Confluence page URL) |
icon_url | stringoptional | (Optional) URL to a 16x16 icon for the link |
relationship | stringoptional | (Optional) Relationship description (e.g., 'causes', 'relates to', 'documentation') |
summary | stringoptional | (Optional) Description of the link |
jira_create_sprintCreate Jira sprint for a board.
| Parameters | Type | Description |
|---|---|---|
board_id | string | The id of board (e.g., '1000') |
end_date | string | End time for sprint (ISO 8601 format) |
sprint_name | string | Name of the sprint (e.g., 'Sprint 1') |
start_date | string | Start time for sprint (ISO 8601 format) |
goal | stringoptional | (Optional) Goal of the sprint |
jira_create_versionCreate a new fix version in a Jira project.
| Parameters | Type | Description |
|---|---|---|
name | string | Name of the version |
project_key | string | Jira project key (e.g., 'PROJ') |
description | stringoptional | Description of the version |
release_date | stringoptional | Release date (YYYY-MM-DD) |
start_date | stringoptional | Start date (YYYY-MM-DD) |
jira_delete_issueDelete an existing Jira issue.
| Parameters | Type | Description |
|---|---|---|
issue_key | string | Jira issue key (e.g. PROJ-123) |
jira_download_attachmentsDownload attachments from a Jira issue.
| Parameters | Type | Description |
|---|---|---|
issue_key | string | Jira issue key (e.g., 'PROJ-123') |
target_dir | string | Directory where attachments should be saved |
jira_get_agile_boardsGet jira agile boards by name, project key, or type.
| Parameters | Type | Description |
|---|---|---|
board_name | stringoptional | (Optional) The name of board, support fuzzy search |
board_type | stringoptional | (Optional) The type of jira board (e.g., 'scrum', 'kanban') |
limit | integeroptional | Maximum number of results (1-50) |
project_key | stringoptional | (Optional) Jira project key (e.g., 'PROJ-123') |
start_at | integeroptional | Starting index for pagination (0-based) |
jira_get_all_projectsGet all Jira projects accessible to the current user.
| Parameters | Type | Description |
|---|---|---|
include_archived | booleanoptional | Whether to include archived projects in the results |
jira_get_board_issuesGet all issues linked to a specific board filtered by JQL.
| Parameters | Type | Description |
|---|---|---|
board_id | string | The id of the board (e.g., '1001') |
jql | string | JQL query string (Jira Query Language). Examples: |
expand|stringoptional|Optional fields to expand in the response (e.g., 'changelog').
fields|stringoptional|Comma-separated fields to return in the results. Use '*all' for all fields, or specify individual fields like 'summary,status,assignee,priority'
limit|integeroptional|Maximum number of results (1-50)
start_at|integeroptional|Starting index for pagination (0-based)jira_get_issueGet details of a specific Jira issue including its Epic links and relationship information.
| Parameters | Type | Description |
|---|---|---|
issue_key | string | Jira issue key (e.g., 'PROJ-123') |
comment_limit | integeroptional | Maximum number of comments to include (0 or null for no comments) |
expand | stringoptional | (Optional) Fields to expand. Examples: 'renderedFields' (for rendered content), 'transitions' (for available status transitions), 'changelog' (for history) |
fields | stringoptional | (Optional) Comma-separated list of fields to return (e.g., 'summary,status,customfield_10010'). You may also provide a single field as a string (e.g., 'duedate'). Use '*all' for all fields (including custom fields), or omit for essential fields only. |
properties | stringoptional | (Optional) A comma-separated list of issue properties to return |
update_history | booleanoptional | Whether to update the issue view history for the requesting user |
jira_get_link_typesGet all available issue link types.
jira_get_project_issuesGet all issues for a specific Jira project.
| Parameters | Type | Description |
|---|---|---|
project_key | string | The project key |
limit | integeroptional | Maximum number of results (1-50) |
start_at | integeroptional | Starting index for pagination (0-based) |
jira_get_project_versionsGet all fix versions for a specific Jira project.
| Parameters | Type | Description |
|---|---|---|
project_key | string | Jira project key (e.g., 'PROJ') |
jira_get_sprint_issuesGet jira issues from sprint.
| Parameters | Type | Description |
|---|---|---|
sprint_id | string | The id of sprint (e.g., '10001') |
fields | stringoptional | Comma-separated fields to return in the results. Use '*all' for all fields, or specify individual fields like 'summary,status,assignee,priority' |
limit | integeroptional | Maximum number of results (1-50) |
start_at | integeroptional | Starting index for pagination (0-based) |
jira_get_sprints_from_boardGet jira sprints from board by state.
| Parameters | Type | Description |
|---|---|---|
board_id | string | The id of board (e.g., '1000') |
limit | integeroptional | Maximum number of results (1-50) |
start_at | integeroptional | Starting index for pagination (0-based) |
state | stringoptional | Sprint state (e.g., 'active', 'future', 'closed') |
jira_get_transitionsGet available status transitions for a Jira issue.
| Parameters | Type | Description |
|---|---|---|
issue_key | string | Jira issue key (e.g., 'PROJ-123') |
jira_get_user_profileRetrieve profile information for a specific Jira user.
| Parameters | Type | Description |
|---|---|---|
user_identifier | string | Identifier for the user (e.g., email address 'user@example.com', username 'johndoe', account ID 'accountid:...', or key for Server/DC). |
jira_get_worklogGet worklog entries for a Jira issue.
| Parameters | Type | Description |
|---|---|---|
issue_key | string | Jira issue key (e.g., 'PROJ-123') |
jira_link_to_epicLink an existing issue to an epic.
| Parameters | Type | Description |
|---|---|---|
epic_key | string | The key of the epic to link to (e.g., 'PROJ-456') |
issue_key | string | The key of the issue to link (e.g., 'PROJ-123') |
jira_remove_issue_linkRemove a link between two Jira issues.
| Parameters | Type | Description |
|---|---|---|
link_id | string | The ID of the link to remove |
jira_searchSearch Jira issues using JQL (Jira Query Language).
| Parameters | Type | Description |
|---|---|---|
jql | string | JQL query string (Jira Query Language). Examples: |
expand|stringoptional|(Optional) fields to expand. Examples: 'renderedFields', 'transitions', 'changelog'
fields|stringoptional|(Optional) Comma-separated fields to return in the results. Use '*all' for all fields, or specify individual fields like 'summary,status,assignee,priority'
limit|integeroptional|Maximum number of results (1-50)
projects_filter|stringoptional|(Optional) Comma-separated list of project keys to filter results by. Overrides the environment variable JIRA_PROJECTS_FILTER if provided.
start_at|integeroptional|Starting index for pagination (0-based)jira_search_fieldsSearch Jira fields by keyword with fuzzy match.
| Parameters | Type | Description |
|---|---|---|
keyword | stringoptional | Keyword for fuzzy search. If left empty, lists the first 'limit' available fields in their default order. |
limit | integeroptional | Maximum number of results |
refresh | booleanoptional | Whether to force refresh the field list |
jira_transition_issueTransition a Jira issue to a new status.
| Parameters | Type | Description |
|---|---|---|
issue_key | string | Jira issue key (e.g., 'PROJ-123') |
transition_id | string | ID of the transition to perform. Use the jira_get_transitions tool first to get the available transition IDs for the issue. Example values: '11', '21', '31' |
comment | stringoptional | (Optional) Comment to add during the transition. This will be visible in the issue history. |
fields | stringoptional | (Optional) Dictionary of fields to update during the transition. Some transitions require specific fields to be set (e.g., resolution). Example: {'resolution': {'name': 'Fixed'}} |
jira_update_issueUpdate an existing Jira issue including changing status, adding Epic links, updating fields, etc.
| Parameters | Type | Description |
|---|---|---|
fields | object | Dictionary of fields to update. For 'assignee', provide a string identifier (email, name, or accountId). Example: {'assignee': 'user@example.com', 'summary': 'New Summary'} |
issue_key | string | Jira issue key (e.g., 'PROJ-123') |
additional_fields | stringoptional | (Optional) Dictionary of additional fields to update. Use this for custom fields or more complex updates. |
attachments | stringoptional | (Optional) JSON string array or comma-separated list of file paths to attach to the issue. Example: '/path/to/file1.txt,/path/to/file2.txt' or ['/path/to/file1.txt','/path/to/file2.txt'] |
jira_update_sprintUpdate jira sprint.
| Parameters | Type | Description |
|---|---|---|
sprint_id | string | The id of sprint (e.g., '10001') |
end_date | stringoptional | (Optional) New end date for the sprint |
goal | stringoptional | (Optional) New goal for the sprint |
sprint_name | stringoptional | (Optional) New name for the sprint |
start_date | stringoptional | (Optional) New start date for the sprint |
state | stringoptional | (Optional) New state for the sprint (future |
{
"mcpServers": {
"atlassian": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"CONFLUENCE_URL",
"-e",
"CONFLUENCE_USERNAME",
"-e",
"JIRA_URL",
"-e",
"JIRA_USERNAME",
"-e",
"CONFLUENCE_API_TOKEN",
"-e",
"CONFLUENCE_PERSONAL_TOKEN",
"-e",
"JIRA_API_TOKEN",
"-e",
"JIRA_PERSONAL_TOKEN",
"mcp/atlassian"
],
"env": {
"CONFLUENCE_URL": "https://your-company.atlassian.net/wiki",
"CONFLUENCE_USERNAME": "your.email@company.com",
"JIRA_URL": "https://your-company.atlassian.net",
"JIRA_USERNAME": "your.email@company.com",
"CONFLUENCE_API_TOKEN": "your_api_token",
"CONFLUENCE_PERSONAL_TOKEN": "your_api_token",
"JIRA_API_TOKEN": "your_api_token",
"JIRA_PERSONAL_TOKEN": "your_api_token"
}
}
}
}
Manual installation
You can install the MCP server using:
Installation for