mcpField
M
MCP Atlassian

MCP Atlassian

Local
github.com/samwang0723Version Control6Updated 34w ago

About MCP Atlassian

MCP Atlassian provides AI agents with tools for working with Confluence and Jira, from content and page operations to issue management. It supports read and write actions, with configurable tool filtering, read-only mode, and PII filtering.

Key features

  1. 01Search and manage Confluence pages and spaces
  2. 02Create, update, and delete pages
  3. 03Manage page labels and comments
  4. 04Search and manage Jira issues
  5. 05Enable read-only mode and tool allowlists
  6. 06Filter PII from responses

Use cases

  1. 01Find Confluence pages and space details
  2. 02Maintain page content, labels, and comments
  3. 03Search, create, or update Jira issues
  4. 04Limit which Atlassian operations an agent can use

MCP support

The MCP server exposes Confluence and Jira tools to clients through a standardized interface and responds over streamable HTTP.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

No install method listed yet

We haven’t collected a package or remote endpoint for this server. Follow the instructions in the project README.

Repository

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

MCP Atlassian

A Model Context Protocol (MCP) server that provides comprehensive tools for interacting with Atlassian products (Confluence and Jira).

Overview

This MCP server allows AI agents to interact with Atlassian products through a standardized interface. It provides extensive tools for:

  • Confluence: Full CRUD operations, content search, space management, page management, comments, labels, and more using v2 REST API
  • Jira: Issue management, project operations, transitions, comments, and comprehensive workflow support

Key Features

  • Modern API Support: Uses Confluence v2 REST API with fallback to v1 for search functionality
  • Comprehensive Toolset: 18+ Confluence tools and 8+ Jira tools covering all major operations
  • Security & Privacy: Built-in PII filtering and SSL verification controls
  • Flexible Configuration: Support for separate service URLs, authentication methods, and tool filtering
  • Pagination Support: Cursor-based pagination for v2 APIs and offset/limit for v1 APIs
  • Error Handling: Comprehensive error handling with detailed error messages
  • Type Safety: Full TypeScript implementation with proper type definitions

Prerequisites

  • Node.js (v16 or higher)
  • npm or yarn
  • Atlassian account with API token
  • Docker (optional, for containerized deployment)

Installation

Standard Installation
  1. Clone the repository:

    git clone https://github.com/yourusername/mcp-atlassian.git
    cd mcp-atlassian
    
  2. Install dependencies:

    npm install
    # or using make
    make install
    
  3. Create a .env file in the root directory with your Atlassian credentials:

    ATLASSIAN_HOST=https://your-domain.atlassian.net
    [email protected]
    ATLASSIAN_API_TOKEN=your-api-token
    
Docker Installation
  1. Clone the repository:

    git clone https://github.com/yourusername/mcp-atlassian.git
    cd mcp-atlassian
    
  2. Create a .env file as described above.

  3. Build and run the Docker container:

    # Build the Docker image
    make docker-build
    
    # Run the Docker container
    make docker-run
    
    # Or use Docker Compose
    make docker-compose
    

Usage

Starting the Server
# Using npm
npm start

# Using make
make start

# Using Docker
make docker-run

This will start the MCP server, which will listen and respond on streamable HTTP.

MCP configuration
    "mcp-searchapi": {
      "name": "mcp-searchapi",
      "type": "streamable-http",
      "streamable": true,
      "url": "http://localhost:3007/mcp"
    }
Available Tools
Confluence Tools

Search & Discovery:

  • search_confluence: Search for content in Confluence using v1 API with CQL

    • Parameters: searchText (string), spaceKey (string, optional), limit (number), start (number)
  • search_confluence_pages_by_title: Search pages by title using v2 API

    • Parameters: title (string, optional), spaceId (string, optional), limit (number), cursor (string, optional)

Space Management:

  • get_confluence_space_by_id_or_key: Get information about a specific Confluence space

    • Parameters: spaceIdOrKey (string)
  • get_confluence_spaces: Get all available spaces

    • Parameters: limit (number, optional), cursor (string, optional)

Page Management:

  • get_confluence_content: Get specific page content by ID

    • Parameters: pageId (string), bodyFormat (enum: storage/atlas_doc_format/wiki, optional)
  • get_confluence_pages: Get all pages in a space

    • Parameters: spaceId (string), limit (number, optional), cursor (string, optional)
  • get_confluence_child_pages: Get child pages of a specific page

    • Parameters: pageId (string), limit (number, optional), cursor (string, optional)
  • confluence_create_page: Create a new Confluence page

    • Parameters: spaceId (string), title (string), content (string), status (enum, optional), representation (enum, optional), parentId (string, optional)
  • confluence_update_page: Update an existing page

    • Parameters: pageId (string), title (string), content (string), version (number), status (enum, optional), representation (enum, optional), versionMessage (string, optional)
  • update_confluence_page_title: Update only the title of a page

    • Parameters: pageId (string), title (string), status (enum, optional)
  • confluence_delete_page: Delete a Confluence page

    • Parameters: pageId (string)

Label Management:

  • get_confluence_pages_by_label: Find pages with specific labels

    • Parameters: label (string), spaceId (string, optional), limit (number, optional), cursor (string, optional)
  • get_confluence_page_labels: Get labels for a specific page

    • Parameters: pageId (string), limit (number, optional), cursor (string, optional)
  • add_confluence_page_labels: Add labels to a page

    • Parameters: pageId (string), labels (array of strings)

Comments:

  • get_confluence_page_comments: Get regular comments on a page

    • Parameters: pageId (string), limit (number, optional), cursor (string, optional)
  • add_confluence_page_comment: Add a comment to a page

    • Parameters: pageId (string), content (string), representation (enum, optional)
  • get_confluence_page_inline_comments: Get inline comments on a page

    • Parameters: pageId (string), limit (number, optional), cursor (string, optional)
  • create_confluence_footer_comment: Create a footer comment

    • Parameters: pageId (string, optional), blogPostId (string, optional), parentCommentId (string, optional), attachmentId (string, optional), customContentId (string, optional), content (string), representation (enum, optional)
Jira Tools
  • search_jira_issues: Search for issues using JQL (Jira Query Language)

    • Parameters: jql (string), maxResults (number, optional)
  • get_jira_issue: Get detailed information about a specific issue

    • Parameters: issueKey (string)
  • jira_get_all_projects: Get all accessible projects

    • Parameters: none
  • jira_create_issue: Create a new Jira issue

    • Parameters: projectKey (string), issueType (string), summary (string), description (string, optional), additional fields
  • jira_update_issue: Update an existing issue

    • Parameters: issueKey (string), fields (object with update data)
  • jira_add_comment: Add a comment to an issue

    • Parameters: issueKey (string), comment (string)
  • jira_get_transitions: Get available transitions for an issue

    • Parameters: issueKey (string)
  • jira_transition_issue: Transition an issue to a different status

    • Parameters: issueKey (string), transitionId (string), comment (string, optional)

Architecture Notes

Confluence API Migration

This server primarily uses the Confluence v2 REST API for most operations, with strategic fallback to v1 API where necessary:

  • v2 API: Used for spaces, pages, comments, labels - provides better performance and modern cursor-based pagination
  • v1 API: Used for content search via CQL - provides more powerful search capabilities
  • SSL Support: Configurable SSL verification bypass for self-hosted instances
  • Authentication: Supports basic auth, OAuth 2.0 (planned), and PAT tokens
Tool Filtering & Security
  • Read-Only Mode: Disable all write operations for safe exploration
  • Tool Whitelist: Enable only specific tools via ENABLED_TOOLS environment variable
  • PII Filtering: Automatic detection and masking of sensitive information in responses
  • Error Context: Detailed error messages without exposing sensitive configuration

Development

Project Structure
src/
├── config/         # Configuration files
│   └── env.ts      # Environment configuration with validation
├── services/       # Service classes for Atlassian APIs
│   ├── confluencev2.ts    # Confluence v2 REST API service (primary)
│   ├── confluence.ts      # Legacy Confluence service (deprecated)
│   └── jira.ts           # Jira REST API service
├── tools/          # MCP tool implementations
│   ├── search-confluence.ts                    # Content search (v1 API)
│   ├── search-confluence-pages-by-title.ts     # Title search (v2 API)
│   ├── get-confluence-space.ts                 # Single space info
│   ├── get-confluence-spaces.ts                # All spaces list
│   ├── get-confluence-content.ts               # Page content by ID
│   ├── get-confluence-pages.ts                 # Pages in space
│   ├── get-confluence-child-pages.ts           # Child pages
│   ├── get-confluence-pages-by-label.ts        # Pages by label
│   ├── get-confluence-page-labels.ts           # Page labels
│   ├── add-confluence-page-labels.ts           # Add labels
│   ├── get-confluence-page-comments.ts         # Page comments
│   ├── add-confluence-page-comment.ts          # Add comment
│   ├── get-confluence-page-inline-comments.ts  # Inline comments
│   ├── confluence-create-page.ts               # Create page
│   ├── confluence-update-page.ts               # Update page
│   ├── update-confluence-page-title.ts         # Update title only
│   ├── confluence-delete-page.ts               # Delete page
│   ├── create-confluence-footer-comment.ts     # Footer comments
│   ├── search-jira-issues.ts                   # Jira search
│   ├── get-jira-issue.ts                       # Single issue
│   ├── jira-create-issue.ts                    # Create issue
│   ├── jira-update-issue.ts                    # Update issue
│   ├── jira-add-comment.ts                     # Add comment
│   ├── jira-get-transitions.ts                 # Get transitions
│   ├── jira-transition-issue.ts                # Transition issue
│   ├── jira-get-all-projects.ts                # All projects
│   ├── utils.ts                                 # Utility functions & PII filtering
│   └── index.ts                                # Tool exports
├── utils/          # Utility modules
│   └── tool-filter.ts      # Tool filtering and access control
└── index.ts        # Main entry point and server setup
Building
# Using npm
npm run build

# Using make
make build
Testing
# Using npm
npm test

# Using make
make test
Makefile Commands

The project includes a Makefile to simplify common operations:

# Display available commands
make help

License

MIT

Contributing

  1. Fork the repository
  2. Create your feature branch (git checkout -b feature/amazing-feature)
  3. Commit your changes (git commit -m 'Add some amazing feature')
  4. Push to the branch (git push origin feature/amazing-feature)
  5. Open a Pull Request

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.