Skip to main content
Glama

🔗 Atlassian MCP Server

npm version License: MIT

An MCP (Model Context Protocol) server that gives AI assistants full access to Jira, Confluence, and Bitbucket Cloud APIs -- 102 tools covering deep CRUD across all three products.

What It Does

This server acts as a bridge between any MCP-compatible AI client (Claude Desktop, etc.) and your Atlassian Cloud instance. Instead of switching between browser tabs, you ask your AI assistant to search Confluence, create Jira tickets, review pull requests, and more -- all through natural language.

Key Features

  • Confluence (22 tools) -- Search (text or raw CQL), create, read, update, and delete pages. Manage spaces, child pages, comments (full CRUD, replies, and text-anchored inline comments), attachments, labels, and version history. Input accepts Markdown (auto-converted to ADF); output is native ADF JSON.

  • Jira (50 tools) -- Full issue lifecycle: search (with nextPageToken paging), CRUD, assign, comments, transitions (with an optional comment), attachments, issue links, worklogs, watchers, subtasks, labels, history, agile boards, sprints (incl. moving issues into a sprint), versions, batch creation (up to 50 issues), dev status, epic linking, and user lookup.

  • Bitbucket (30 tools) -- Repository management, branches, commits, pull requests (create/update/list, reviewers, approve/request changes, merge/decline), PR comments with resolve/unresolve, PR diffstat and per-file diffs, file content at a ref, CI/pipeline status and step logs, and issue tracking.

  • Smart Field Handling -- AI-driven field suggestions during Jira transitions. Analyzes issue context to auto-suggest values for required fields (e.g., DB scripts, test cases), reducing manual input.

  • Snapshot Safety Net -- Automatic local snapshots of mutating operations (create/update/delete) with configurable retention, so you can recover from accidental changes.

Related MCP server: Jira MCP Server

Prerequisites

  • Node.js >= 18

  • Atlassian Cloud account(s) with API tokens

  • An MCP-compatible client (e.g., Claude Desktop)

Installation

npm install -g @jagadeesh52423/atlassian-mcp-server

Or run without installing:

npx @jagadeesh52423/atlassian-mcp-server

From source

git clone https://github.com/jagadeeshpulamarasetti/atlassian-mcp-server.git
cd atlassian-mcp-server
npm install
npm run build

Configuration

1. Set environment variables

Copy the template and fill in your credentials:

cp .env.example .env
# Confluence
CONFLUENCE_DOMAIN=your-domain.atlassian.net
CONFLUENCE_EMAIL=your-email@example.com
CONFLUENCE_API_TOKEN=your-confluence-api-token

# Jira
JIRA_DOMAIN=your-domain.atlassian.net
JIRA_EMAIL=your-email@example.com
JIRA_API_TOKEN=your-jira-api-token

# Bitbucket
BITBUCKET_WORKSPACE=your-workspace
BITBUCKET_USERNAME=your-username
BITBUCKET_API_TOKEN=your-bitbucket-api-token

You can also set legacy ATLASSIAN_* variables as a fallback for Confluence and Jira. Bitbucket always requires its own credentials.

# Jira OAuth (advanced auth)
JIRA_CLIENT_ID=your-client-id
JIRA_CLIENT_SECRET=your-client-secret

# Snapshot safety net (defaults shown)
MCP_SNAPSHOTS_ENABLED=true
MCP_SNAPSHOT_DIR=~/.atlassian-mcp-snapshots
MCP_SNAPSHOT_RETENTION_DAYS=30

2. Get an API token

  1. Go to Atlassian API Tokens

  2. Click Create API token, give it a name, and copy the value

  3. For Bitbucket, create a token under Personal settings > Access tokens with repo, issue, and PR scopes

Usage

Running the server

# Global install
atlassian-mcp-server

# From source
npm start

# Development (auto-reload)
npm run dev

Claude Desktop integration

Add one of the following to your Claude Desktop config:

macOS: ~/Library/Application Support/Claude/claude_desktop_config.json Windows: %APPDATA%/Claude/claude_desktop_config.json

{
  "mcpServers": {
    "atlassian": {
      "command": "npx",
      "args": ["-y", "@jagadeesh52423/atlassian-mcp-server"],
      "env": {
        "CONFLUENCE_DOMAIN": "your-domain.atlassian.net",
        "CONFLUENCE_EMAIL": "your-email@example.com",
        "CONFLUENCE_API_TOKEN": "your-token",
        "JIRA_DOMAIN": "your-domain.atlassian.net",
        "JIRA_EMAIL": "your-email@example.com",
        "JIRA_API_TOKEN": "your-token",
        "BITBUCKET_WORKSPACE": "your-workspace",
        "BITBUCKET_USERNAME": "your-username",
        "BITBUCKET_API_TOKEN": "your-token"
      }
    }
  }
}

Global install:

{
  "mcpServers": {
    "atlassian": {
      "command": "atlassian-mcp-server",
      "env": { "..." : "same env vars as above" }
    }
  }
}

From source:

{
  "mcpServers": {
    "atlassian": {
      "command": "node",
      "args": ["/path/to/atlassian-mcp-server/dist/index.js"]
    }
  }
}

Available Tools

Confluence (22 tools)

Tool

Description

confluence_search_pages

Search pages by text query or raw cql (results restricted to pages for query)

confluence_get_page

Get a page by ID (returns ADF JSON body)

confluence_create_page

Create a page (accepts Markdown)

confluence_update_page

Update a page (accepts Markdown). Re-anchors inline comments automatically; reports any it could not

confluence_reattach_inline_comments

Repair inline comments detached by an earlier update, using page history. dryRun defaults to true

confluence_delete_page

Delete a page

confluence_get_spaces

List all spaces

confluence_get_pages_by_space

Get pages in a space

confluence_get_page_children

Get child pages

confluence_get_page_history

Get page version history

confluence_get_attachments

List page attachments

confluence_add_attachment

Upload an attachment

confluence_delete_attachment

Delete an attachment

confluence_get_comments

Get footer and/or inline comments (ADF JSON). commentType: footer | inline | all (default all)

confluence_add_comment

Add a comment (Markdown), or reply via parentCommentId

confluence_add_inline_comment

Add an inline comment anchored to exact page text

confluence_update_comment

Update a comment (Markdown)

confluence_delete_comment

Delete a comment

confluence_get_labels

Get page labels

confluence_add_labels

Add labels to a page

confluence_remove_label

Remove a label

confluence_embed_image

Deprecated: not supported, always returns an error (use confluence_add_attachment)

Jira (50 tools)

Category

Tools

Core

search_issues, get_issue, create_issue, update_issue, delete_issue, get_projects, get_issue_types, get_fields, lookup_user, assign_issue

Comments

add_comment, get_comments, update_comment, delete_comment

Transitions

get_issue_transitions, transition_issue, transition_issue_interactive (smart field handling); both accept an optional comment

Attachments

get_attachments, add_attachment, delete_attachment

Issue Links

get_issue_links, create_issue_link, delete_issue_link, get_link_types

Worklogs

get_worklogs, add_worklog, update_worklog, delete_worklog

Watchers

get_watchers, add_watcher, remove_watcher

Subtasks

get_subtasks, create_subtask

Labels

get_labels, add_labels, remove_labels

History

get_issue_history

Agile

get_agile_boards, get_board_issues, get_sprints, get_sprint_issues, create_sprint, update_sprint, move_issues_to_sprint

Versions

get_project_versions, create_version, update_version

Batch/Dev

batch_create_issues, get_dev_status

Epic

link_to_epic

All Jira tools are prefixed with jira_.

Bitbucket (30 tools)

Tool

Description

bitbucket_get_repositories

List workspace repositories

bitbucket_get_repository

Get repository details

bitbucket_create_repository

Create a repository

bitbucket_get_pull_requests

List pull requests

bitbucket_get_pull_request

Get a PR with diff

bitbucket_create_pull_request

Create a pull request

bitbucket_update_pull_request

Update a pull request

bitbucket_get_branches

List branches

bitbucket_get_commits

List commits

bitbucket_get_issues

List repository issues

bitbucket_create_issue

Create an issue

bitbucket_get_pr_comments

Get PR comments

bitbucket_add_pr_comment

Add a PR comment

bitbucket_update_pr_comment

Update a PR comment

bitbucket_delete_pr_comment

Delete a PR comment

bitbucket_resolve_pr_comment

Mark a PR comment thread as resolved

bitbucket_unresolve_pr_comment

Reopen (unresolve) a PR comment thread

bitbucket_approve_pr

Approve a pull request

bitbucket_unapprove_pr

Remove your approval from a pull request

bitbucket_request_changes_pr

Request changes on a pull request

bitbucket_remove_change_request_pr

Remove your change request from a pull request

bitbucket_merge_pr

Merge a pull request (optional strategy, message, close source branch)

bitbucket_decline_pr

Decline a pull request

bitbucket_get_pr_diffstat

Get per-file change summary for a PR

bitbucket_get_pr_file_diff

Get the diff of a single file in a PR

bitbucket_get_file_content

Get file content at a branch or commit

bitbucket_get_pr_statuses

Get CI/build statuses for a PR with a summary

bitbucket_get_pipelines

List recent Pipelines runs, optionally by branch

bitbucket_get_pipeline_steps

Get per-step status of a pipeline run

bitbucket_get_pipeline_step_log

Get the log of a pipeline step (last 200KB)

PR comment resolution (v1.3.0+)

  • bitbucket_resolve_pr_comment / bitbucket_unresolve_pr_comment use Bitbucket's dedicated resolution sub-resource (POST/DELETE .../comments/{id}/resolve) and return the refreshed comment.

  • Top-level comments only -- Bitbucket only allows resolving/unresolving top-level review comments, not replies. Calling these on a reply returns Comment is not a top-level comment.

  • Comments returned by bitbucket_get_pr_comments, bitbucket_resolve_pr_comment, and bitbucket_unresolve_pr_comment now include a resolved boolean. When a comment is resolved, the single-comment responses also include resolvedOn (ISO timestamp) and resolvedBy (display name); these resolution details are not present in the bulk list response.

Confluence Content Format (v1.2.0+)

Confluence pages and comments use ADF (Atlassian Document Format) natively:

  • Input -- create_page, update_page, add_comment, update_comment accept Markdown, which the server converts to ADF using the official @atlaskit/editor-markdown-transformer.

  • Output -- get_page, get_comments return ADF JSON (an object, not a string).

  • Comments -- get_comments returns both footer (page-level) and inline (text-anchored) comments by default. Use the commentType param (footer | inline | all, default all) to filter. Every comment carries a type field ("footer" or "inline"). Inline comments additionally include anchoredText (the highlighted page text the comment is attached to), resolutionStatus (e.g. "open", "resolved"), markerRef, and webuiLink. Backwards-compatibility note: callers that previously relied on get_comments returning footer comments only will now also receive inline comments under the default all; pass commentType: "footer" to restore the old footer-only behaviour. The new type field is additive and does not remove any existing field.

  • Inline comment anchors -- An inline comment is not a separate resource: it anchors to page text via an annotation mark inside the page body. Any update that rebuilds the body therefore detaches every inline comment on the page. update_page guards against this by reading the live body first and re-anchoring each marker onto text that survived the edit, then reporting inlineComments: { preserved, dropped, ambiguous }. A comment whose text you reworded or deleted appears in dropped; one whose text now occurs in more than one place appears in ambiguous, because the server refuses to pick an occurrence — a wrong guess silently moves a reviewer's question onto unrelated text while reporting success. Either way the comment stays on the page but unattached, which is exactly what Confluence does today. Prefer leaving commented sentences intact. To repair comments detached by an earlier update (including ones made before this feature existed), use confluence_reattach_inline_comments: it walks page history to find where each orphan was anchored, re-marks only unambiguous matches, and reports the rest rather than guessing. It never alters page text, and searches back at most 50 versions. Anchors are keyed by surrounding content (table header + first-column value, or block type + text) rather than by position, so they survive rows and paragraphs being inserted above them — which is what lets a comment on a repeated field name like unique_id resolve even though that text appears ten times on the page. Note that anchoredText from get_comments is truncated by Confluence at ~250 characters (252 observed); the history lookup recovers the full anchor.

  • Inline images -- Not currently supported via ADF media nodes (requires Atlassian Media API tokens). Use confluence_add_attachment instead.

Project Structure

src/
├── index.ts              # Server entry point and tool routing
├── config.ts             # Environment variable loading and validation
├── types.ts              # TypeScript interfaces
├── constants.ts          # Shared constants
├── error-handler.ts      # Structured error responses
├── formatters/           # Markdown-to-ADF and ADF-to-text converters
├── clients/              # HTTP clients (one per Atlassian product)
├── services/             # Business logic for each product
│   └── jira/             # Jira sub-modules (agile, comments, transitions, etc.)
├── handlers/             # MCP request handlers
├── tools/                # MCP tool definitions (schemas)
├── registry/             # Tool dispatch registry
└── snapshot/             # Snapshot safety net (auto-backup before mutations)

Security

  • Credentials are read from environment variables only; never committed to source control.

  • All API calls use HTTPS with Basic Auth (base64-encoded email:token).

  • Grant tokens the minimum required permissions.

  • Snapshots are stored locally in ~/.atlassian-mcp-snapshots by default.

License

MIT

Available Tools

86 tools
bitbucket_add_pr_commentA

Add a comment to a Bitbucket pull request. Supports both general and inline (file/line) comments.

Inputs: prId (required), content (required), repoName (required), inlineTo, +3 more.

bitbucket_create_issueB

Create a new issue in a repository

Inputs: title (required), repoName (required), kind, content.

bitbucket_create_pull_requestB

Create a new pull request

Inputs: title (required), repoName (required), sourceBranch (required), description, +1 more.

bitbucket_create_repositoryB

Create a new Bitbucket repository

Inputs: name (required), language, isPrivate, description.

bitbucket_delete_pr_commentB

Delete a comment from a Bitbucket pull request

Inputs: prId (required), repoName (required), commentId (required).

bitbucket_get_branchesB

Get branches for a repository

Inputs: repoName (required), limit.

bitbucket_get_commitsC

Get commits for a repository

Inputs: repoName (required), limit, branch.

bitbucket_get_issuesC

Get issues for a repository

Inputs: repoName (required), limit, state.

bitbucket_get_pr_commentsB

Get all comments for a Bitbucket pull request

Inputs: prId (required), repoName (required).

bitbucket_get_pull_requestB

Get details of a specific pull request

Inputs: prId (required), repoName (required), includeDiff.

bitbucket_get_pull_requestsC

Get pull requests for a repository

Inputs: repoName (required), limit, state.

bitbucket_get_repositoriesB

Get list of Bitbucket repositories in workspace

Inputs: limit, query.

bitbucket_get_repositoryA

Get details of a specific Bitbucket repository

Inputs: repoName (required).

bitbucket_resolve_pr_commentB

Resolve a comment on a Bitbucket pull request

Inputs: prId (required), repoName (required), commentId (required).

bitbucket_unresolve_pr_commentB

Unresolve (reopen) a comment on a Bitbucket pull request

Inputs: prId (required), repoName (required), commentId (required).

bitbucket_update_pr_commentA

Update an existing comment on a Bitbucket pull request

Inputs: prId (required), content (required), repoName (required), commentId (required).

bitbucket_update_pull_requestB

Update an existing pull request (title, description, or destination branch). At least one of title, description, or destinationBranch must be provided.

Inputs: prId (required), repoName (required), title, description, +1 more.

confluence_add_attachmentB

Add an attachment to a Confluence page. Provide either filePath (local file) or fileContent (base64).

Inputs: pageId (required), filePath, filename, fileContent.

confluence_add_commentB

Add a comment to a Confluence page

Inputs: body (required), pageId (required).

confluence_add_labelsB

Add labels to a Confluence page

Inputs: labels (required), pageId (required).

confluence_create_pageA

Create a new Confluence page. The content field accepts Markdown — the server converts it to ADF (Atlassian Document Format) using the official @atlaskit transformer and submits it via the v2 API. The returned content is the ADF JSON document. Do not pass storage-format HTML or hand-written ADF JSON.

Inputs: title (required), content (required), spaceKey (required), images, +1 more.

confluence_delete_attachmentC

Delete an attachment from a Confluence page

Inputs: attachmentId (required).

confluence_delete_commentB

Delete a comment from a Confluence page

Inputs: commentId (required).

confluence_delete_pageB

Delete a Confluence page

Inputs: pageId (required).

confluence_embed_imageA

NOT SUPPORTED in this version. Inline image embedding requires the Atlassian Media API (ADF media nodes) and is not implemented. Use confluence_add_attachment to upload the file and reference it from the Confluence UI. Calling this tool will return an error.

Inputs: pageId (required), alt, align, width, +6 more.

confluence_get_attachmentsB

Get all attachments for a Confluence page

Inputs: pageId (required).

confluence_get_commentsA

Get comments for a Confluence page. Returns both footer (page-level) and inline (text-anchored) comments by default. Each comment carries a type field ("footer" or "inline"); the body field is an ADF JSON document. Inline comments also include anchoredText (the highlighted page text the comment is attached to), resolutionStatus (e.g. "open", "resolved"), and markerRef.

Inputs: pageId (required), commentType.

confluence_get_labelsA

Get all labels on a Confluence page

Inputs: pageId (required).

confluence_get_pageB

Get a specific Confluence page by ID. The content field is returned as an ADF JSON document (Atlassian Document Format).

Inputs: pageId (required).

confluence_get_page_childrenA

Get child pages of a Confluence page. v2 returns child summaries only — content, version, created, updated, and spaceKey are not populated; fetch each child by id with confluence_get_page for full details.

Inputs: pageId (required), limit.

confluence_get_page_historyB

Get version history for a Confluence page

Inputs: pageId (required), limit.

confluence_get_pages_by_spaceA

Get pages from a specific Confluence space. The content field on each page is an ADF JSON document. spaceKey is resolved to spaceId internally.

Inputs: spaceKey (required), limit.

confluence_get_spacesC

Get list of Confluence spaces

Inputs: limit.

confluence_remove_labelB

Remove a label from a Confluence page

Inputs: label (required), pageId (required).

confluence_search_pagesA

Search Confluence pages by text query (CQL). Returns matching pages; the content field on each result is opaque (legacy v1 storage HTML) and should not be relied on — fetch the page by id with confluence_get_page for the ADF body.

Inputs: limit, query.

confluence_update_commentB

Update an existing comment on a Confluence page

Inputs: body (required), version (required), commentId (required).

confluence_update_pageA

Update an existing Confluence page. The content field accepts Markdown — the server converts it to ADF and submits it via the v2 API. The returned content is the ADF JSON document.

Inputs: title (required), pageId (required), content (required), version (required).

jira_add_attachmentC

Add an attachment to a Jira issue

Inputs: filename (required), issueKey (required), fileContent (required).

jira_add_commentB

Add a comment to a Jira issue

Inputs: comment (required), issueKey (required).

jira_add_labelsB

Add labels to a Jira issue

Inputs: labels (required), issueKey (required).

jira_add_watcherC

Add a watcher to a Jira issue

Inputs: issueKey (required), accountId (required).

jira_add_worklogB

Add a work log (time spent) to a Jira issue

Inputs: issueKey (required), timeSpentSeconds (required), comment, started.

jira_batch_create_issuesB

Create multiple Jira issues in a single request (max 50)

Inputs: issues (required).

jira_create_issueC

Create a new Jira issue with support for custom fields including due dates

Inputs: summary (required), projectKey (required), description (required), labels, +6 more.

jira_create_sprintB

Create a new sprint on a Jira agile board

Inputs: name (required), boardId (required), goal, endDate, +1 more.

jira_create_subtaskB

Create a sub-task under a parent Jira issue

Inputs: summary (required), parentKey (required), description (required).

jira_create_versionC

Create a new version (release) in a Jira project

Inputs: name (required), projectKey (required), released, startDate, +2 more.

jira_delete_attachmentB

Delete an attachment from a Jira issue

Inputs: attachmentId (required).

jira_delete_commentB

Delete a comment from a Jira issue

Inputs: issueKey (required), commentId (required).

jira_delete_issueB

Delete a Jira issue. Optionally delete its subtasks.

Inputs: issueKey (required), deleteSubtasks.

jira_delete_worklogA

Delete a work log entry from a Jira issue

Inputs: issueKey (required), worklogId (required).

jira_get_agile_boardsB

Get Jira agile boards. Optionally filter by name, type (scrum/kanban), or project.

Inputs: name, type, projectKeyOrId.

jira_get_attachmentsB

Get all attachments for a Jira issue

Inputs: issueKey (required).

jira_get_board_issuesC

Get all issues on a Jira agile board

Inputs: boardId (required), jql, startAt, maxResults.

jira_get_commentsC

Get all comments for a Jira issue

Inputs: issueKey (required).

jira_get_dev_statusB

Get development information (PRs, branches, commits) linked to a Jira issue

Inputs: issueId (required), dataType, applicationType.

jira_get_fieldsA

Search and discover available Jira fields. Use this to find field IDs (e.g. search "sprint" to find the Sprint custom field ID) for use with jira_get_issue and jira_search_issues fields parameter.

Inputs: type, query.

jira_get_issueA

Get a specific Jira issue by key. Optionally specify which fields to return.

Inputs: issueKey (required), fields.

jira_get_issue_historyB

Get complete change history for a Jira issue

Inputs: issueKey (required).

jira_get_issue_transitionsB

Get available transitions for a Jira issue

Inputs: issueKey (required).

jira_get_issue_typesA

Get available issue types for a Jira project (e.g., Bug, Story, Task, Epic, Sub-task)

Inputs: projectKey (required).

jira_get_labelsA

Get available labels in Jira. Optionally filter by a search query.

Inputs: query, maxResults.

jira_get_projectsA

Get list of Jira projects

Inputs: no named parameters.

jira_get_project_versionsA

Get all versions (releases) for a Jira project

Inputs: projectKey (required).

jira_get_sprint_issuesB

Get all issues in a specific sprint

Inputs: sprintId (required), jql, startAt, maxResults.

jira_get_sprintsB

Get sprints for a Jira agile board

Inputs: boardId (required), state.

jira_get_subtasksC

Get all sub-tasks for a Jira issue

Inputs: issueKey (required).

jira_get_watchersB

Get all watchers for a Jira issue

Inputs: issueKey (required).

jira_get_worklogsA

Get all work logs (time tracking entries) for a Jira issue

Inputs: issueKey (required).

jira_lookup_userA

Look up Jira users by name or email address. Returns account IDs needed for assignee, watcher, and other user fields.

Inputs: query (required).

jira_move_issues_to_sprintB

Move one or more issues to a sprint

Inputs: sprintId (required), issueKeys (required).

jira_remove_labelsB

Remove labels from a Jira issue

Inputs: labels (required), issueKey (required).

jira_remove_watcherB

Remove a watcher from a Jira issue

Inputs: issueKey (required), accountId (required).

jira_search_issuesA

Search Jira issues with flexible filtering. Use individual filters (assignee, status, project, labels) or provide raw JQL for advanced queries.

Inputs: jql, limit, query, fields, +7 more.

jira_transition_issueB

Transition a Jira issue to a different status with smart field handling

Inputs: issueKey (required), transitionId (required), fieldValues.

jira_transition_issue_interactiveA

Transition a Jira issue with automatic field suggestion and validation

Inputs: issueKey (required), transitionId (required), fieldValues.

jira_update_commentB

Update an existing comment on a Jira issue

Inputs: comment (required), issueKey (required), commentId (required).

jira_update_issueB

Update an existing Jira issue. Supports standard fields and custom fields (use jira_get_fields to discover field IDs).

Inputs: issueKey (required), summary, assignee, description, +1 more.

jira_update_sprintB

Update an existing sprint (name, dates, state, goal)

Inputs: sprintId (required), goal, name, state, +2 more.

jira_update_versionC

Update an existing version (release) in Jira

Inputs: versionId (required), name, archived, released, +3 more.

jira_update_worklogC

Update an existing work log entry

Inputs: issueKey (required), worklogId (required), comment, timeSpentSeconds.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 86 tools

    Disambiguation5/5

    All tools are clearly prefixed by product (confluence_, jira_, bitbucket_) and have distinct verb-noun pairs. Even closely related tools like jira_transition_issue and jira_transition_issue_interactive are differentiated by description. There is no ambiguity between tools.

    Naming Consistency5/5

    All tool names follow a consistent pattern: product_verb_noun in snake_case. For example, confluence_get_page, jira_create_issue, bitbucket_get_pull_requests. No mixing of conventions.

    Tool Count3/5

    86 tools is high, but the server covers three major products (Confluence, Jira, Bitbucket) each requiring many operations. Some tools like confluence_embed_image (not supported) are unnecessary. The count is borderline heavy but justifiable for the scope.

    Completeness4/5

    The tool surface is comprehensive for common workflows: CRUD for issues, pages, repos, comments, attachments, worklogs, etc. Minor gaps exist such as missing inline image embedding in Confluence and some advanced Jira features, but overall coverage is strong.

    Maintenance

    ActivityMaintained
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers