JIRA MCP Server

JIRA MCP Server

Provides comprehensive access to Jira Cloud and Data Center instances for managing issues, epics, and attachments with AI-optimized data cleaning. It supports relationship tracking and dual transport modes via STDIO and Streamable HTTP.

Category
Visit Server

README

JIRA MCP Server

A Model Context Protocol (MCP) server implementation that provides access to JIRA data with relationship tracking, optimized data payloads, and data cleaning for AI context windows.

ℹ️ There is a separate MCP server for Confluence


Jira Cloud & Jira Server (Data Center) Support

This MCP server supports both Jira Cloud and Jira Server (Data Center) instances. You can select which type to use by setting the JIRA_TYPE environment variable:

  • cloud (default): For Jira Cloud (Atlassian-hosted)
  • server: For Jira Server/Data Center (self-hosted)

The server will automatically use the correct API version and authentication method for the selected type.


Features

  • Search JIRA issues using JQL (maximum 50 results per request)
  • Retrieve epic children with comment history and optimized payloads (maximum 100 issues per request)
  • Get detailed issue information including comments and related issues
  • Create, update, and manage JIRA issues
  • Add comments to issues
  • Extract issue mentions from Atlassian Document Format
  • Track issue relationships (mentions, links, parent/child, epics)
  • Clean and transform rich JIRA content for AI context efficiency
  • Support for file attachments with secure multipart upload handling
  • Supports both Jira Cloud and Jira Server (Data Center) APIs
  • Dual transport modes: STDIO (default) and Streamable HTTP (MCP 2025-03-26) for tools like Postman and MCP Inspector

Prerequisites

  • Bun (v1.0.0 or higher)
  • JIRA account with API access

Environment Variables

JIRA_API_TOKEN=your_api_token            # API token for Cloud, PAT or password for Server/DC
JIRA_BASE_URL=your_jira_instance_url     # e.g., https://your-domain.atlassian.net
JIRA_USER_EMAIL=your_email               # Your Jira account email
JIRA_TYPE=cloud                          # 'cloud' or 'server' (optional, defaults to 'cloud')
JIRA_AUTH_TYPE=basic                     # 'basic' or 'bearer' (optional, defaults to 'basic')
TRANSPORT_MODE=stdio                     # 'stdio' or 'http' (optional, defaults to 'stdio')
HTTP_PORT=3000                           # Port for HTTP transport (optional, defaults to 3000)

Authentication Methods

  • Jira Cloud: Use API tokens with Basic authentication

  • Jira Server/Data Center:

    • Basic Auth: Use username/password or API tokens
      • Set JIRA_AUTH_TYPE=basic (default)
    • Bearer Auth: Use Personal Access Tokens (PATs) - available in Data Center 8.14.0+
      • Create a PAT in your profile settings
      • Set JIRA_AUTH_TYPE=bearer
      • Use the PAT as your JIRA_API_TOKEN

Installation & Setup

1. Clone the repository

git clone [repository-url]
cd jira-mcp

2. Install dependencies and build

bun install
bun run build

3. Configure the MCP server

The server supports two transport modes: STDIO (default, for Claude Desktop/Cline) and HTTP (for Postman and other HTTP-based clients).

Option A: STDIO Transport (Default - Claude Desktop/Cline)

Edit the appropriate configuration file:

macOS:

  • Cline: ~/Library/Application Support/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
  • Claude Desktop: ~/Library/Application Support/Claude/claude_desktop_config.json

Windows:

  • Cline: %APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json
  • Claude Desktop: %APPDATA%\Claude Desktop\claude_desktop_config.json

Linux:

  • Cline: ~/.config/Code/User/globalStorage/saoudrizwan.claude-dev/settings/cline_mcp_settings.json
  • Claude Desktop: sadly doesn't exist yet

Add the following configuration under the mcpServers object:

{
  "mcpServers": {
    "jira": {
      "command": "node",
      "args": ["/absolute/path/to/jira-mcp/build/index.js"],
      "env": {
        "JIRA_API_TOKEN": "your_api_token",
        "JIRA_BASE_URL": "your_jira_instance_url",
        "JIRA_USER_EMAIL": "your_email",
        "JIRA_TYPE": "cloud",
        "JIRA_AUTH_TYPE": "basic"
      }
    }
  }
}

Option B: Streamable HTTP Transport (MCP Inspector & Postman)

  1. Start the server in HTTP mode:
# Set environment variables
export JIRA_API_TOKEN="your_api_token"
export JIRA_BASE_URL="your_jira_instance_url"
export JIRA_USER_EMAIL="your_email"
export TRANSPORT_MODE="http"
export HTTP_PORT="3000"  # optional, defaults to 3000

# Run the server
bun run build/index.js

Or use a .env file:

# .env
JIRA_API_TOKEN=your_api_token
JIRA_BASE_URL=your_jira_instance_url
JIRA_USER_EMAIL=your_email
JIRA_TYPE=cloud
JIRA_AUTH_TYPE=basic
TRANSPORT_MODE=http
HTTP_PORT=3000
  1. The server will start with Streamable HTTP endpoint:
╔════════════════════════════════════════════════════════════╗
║  🚀 JIRA MCP Server - Streamable HTTP Transport           ║
╠════════════════════════════════════════════════════════════╣
║  Protocol:        MCP 2025-03-26 (Streamable HTTP)       ║
║  Endpoint:        http://localhost:3000/mcp               ║
║  Health Check:    http://localhost:3000/health            ║
║                                                            ║
║  🔧 Supported Methods:                                     ║
║     GET /mcp     → Establish SSE connection               ║
║     POST /mcp    → Send JSON-RPC message                  ║
║     DELETE /mcp  → Terminate session                      ║
╚════════════════════════════════════════════════════════════╝
  1. Configure MCP Inspector:

In MCP Inspector v0.15.x+, add a new server connection:

{
  "mcpServers": {
    "jira": {
      "type": "sse",
      "url": "http://localhost:3000/mcp"
    }
  }
}
  1. Configure Postman MCP Client:

In Postman, add a new MCP server connection:

  • URL: http://localhost:3000/mcp
  • Method: GET
  • Transport: SSE (Server-Sent Events)

Or import the provided Postman collection: tests/manual/postman_collection.json

The server implements the MCP Streamable HTTP protocol (2025-03-26) with full session management and is compatible with MCP Inspector v0.15.x and Postman MCP Client.

4. Restart the MCP server

For STDIO mode: Within Cline's MCP settings, restart the MCP server. Restart Claude Desktop to load the new MCP server.

For HTTP mode: Simply run the server with TRANSPORT_MODE=http environment variable set.

Development

Run tests:

bun test

Watch mode for development:

bun run dev

To rebuild after changes:

bun run build

Available MCP Tools

search_issues

Search JIRA issues using JQL. Returns up to 50 results per request.

Input Schema:

{
  searchString: string; // JQL search string
}

get_epic_children

Get all child issues in an epic including their comments and relationship data. Limited to 100 issues per request.

Input Schema:

{
  epicKey: string; // The key of the epic issue
}

get_issue

Get detailed information about a specific JIRA issue including comments and all relationships.

Input Schema:

{
  issueId: string; // The ID or key of the JIRA issue
}

create_issue

Create a new JIRA issue with specified fields.

Input Schema:

{
  projectKey: string, // The project key where the issue will be created
  issueType: string, // The type of issue (e.g., "Bug", "Story", "Task")
  summary: string, // The issue summary/title
  description?: string, // Optional issue description
  fields?: { // Optional additional fields
    [key: string]: any
  }
}

update_issue

Update fields of an existing JIRA issue.

Input Schema:

{
  issueKey: string, // The key of the issue to update
  fields: { // Fields to update
    [key: string]: any
  }
}

add_attachment

Add a file attachment to a JIRA issue.

Input Schema:

{
  issueKey: string, // The key of the issue
  fileContent: string, // Base64 encoded file content
  filename: string // Name of the file to be attached
}

add_comment

Add a comment to a JIRA issue. Accepts plain text and converts it to the required Atlassian Document Format internally.

Input Schema:

{
  issueIdOrKey: string, // The ID or key of the issue to add the comment to
  body: string // The content of the comment (plain text)
}

Data Cleaning Features

  • Extracts text from Atlassian Document Format
  • Tracks issue mentions in descriptions and comments
  • Maintains formal issue links with relationship types
  • Preserves parent/child relationships
  • Tracks epic associations
  • Includes comment history with author information
  • Removes unnecessary metadata from responses
  • Recursively processes content nodes for mentions
  • Deduplicates issue mentions

Technical Details

  • Built with TypeScript in strict mode
  • Uses Bun runtime for improved performance
  • Vite for optimized builds
  • Dual transport support:
    • STDIO: For Claude Desktop and Cline (default)
    • Streamable HTTP (MCP 2025-03-26): For MCP Inspector v0.15.x+ and Postman MCP Client
  • Session management with automatic cleanup (1-hour expiry)
  • UUID-based session tracking with Mcp-Session-Id headers
  • Uses JIRA REST API v3 (Cloud) or v2 (Server/Data Center)
  • Supports multiple authentication methods:
    • Basic authentication with API tokens or username/password
    • Bearer authentication with Personal Access Tokens (PATs)
  • Batched API requests for related data
  • Optimized response payloads for AI context windows
  • Efficient transformation of complex Atlassian structures
  • Robust error handling
  • Rate limiting considerations
  • Maximum limits:
    • Search results: 50 issues per request
    • Epic children: 100 issues per request
  • Support for multipart form data for secure file attachments
  • Automatic content type detection and validation
  • CORS enabled for cross-origin requests in HTTP mode

Error Handling

The server implements a comprehensive error handling strategy:

  • Network error detection and appropriate messaging
  • HTTP status code handling (especially 404 for issues)
  • Detailed error messages with status codes
  • Error details logging to console
  • Input validation for all parameters
  • Safe error propagation through MCP protocol
  • Specialized handling for common JIRA API errors
  • Base64 validation for attachments
  • Multipart request failure handling
  • Rate limit detection
  • Attachment parameter validation

Transport Modes Comparison

Feature STDIO Transport Streamable HTTP Transport
Use Case Claude Desktop, Cline MCP Inspector, Postman, HTTP clients
Protocol MCP over stdio MCP Streamable HTTP (2025-03-26)
Configuration MCP config file Environment variables
Connection Process stdin/stdout HTTP + Server-Sent Events
Default Port N/A 3000
Session Management N/A Yes (UUID-based, 1-hour expiry)
Endpoints N/A GET/POST/DELETE /mcp
CORS Support N/A Yes
Health Check No Yes (/health endpoint)
Best For Production AI assistants Development, testing, debugging
Inspector Compatibility N/A v0.15.x+

Manual Testing

The tests/manual/ directory contains comprehensive test scripts:

  • test_sse.sh - Test SSE connection and session establishment
  • test_initialize.sh - Test initialize handshake
  • test_tools_list.sh - Test tools/list request
  • test_tool_execution.sh - Test tool execution (search_issues)
  • postman_collection.json - Complete Postman test collection
  • README.md - Detailed testing instructions

Run all tests:

cd tests/manual
./test_sse.sh
./test_initialize.sh
./test_tools_list.sh
./test_tool_execution.sh

LICENCE

This project is licensed under the MIT License - see the LICENCE file for details.

Recommended Servers

playwright-mcp

playwright-mcp

A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.

Official
Featured
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.

Official
Featured
Local
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.

Official
Featured
Local
TypeScript
VeyraX MCP

VeyraX MCP

Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.

Official
Featured
Local
Kagi MCP Server

Kagi MCP Server

An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.

Official
Featured
Python
graphlit-mcp-server

graphlit-mcp-server

The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.

Official
Featured
TypeScript
Qdrant Server

Qdrant Server

This repository is an example of how to create a MCP server for Qdrant, a vector search engine.

Official
Featured
Neon Database

Neon Database

MCP server for interacting with Neon Management API and databases

Official
Featured
Exa Search

Exa Search

A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.

Official
Featured
E2B

E2B

Using MCP to run code via e2b.

Official
Featured