Skip to content

pointdotcom-eng/jira-backlog-manager-mcp

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

JIRA Backlog Manager MCP Server

A Model Context Protocol (MCP) server that provides intelligent tools for analyzing and managing JIRA backlogs. This server offers capabilities for backlog analysis, ticket splitting suggestions, and smart search functionality.

Why a Custom JIRA MCP?

While other JIRA MCP implementations exist, this custom server provides:

  • Enhanced Security: Built specifically for Point's infrastructure with controlled data access
  • Tailored Functionality: Features designed for Point's specific backlog management workflows
  • Complete Customization: Easy to extend and modify for evolving team needs
  • Direct Integration: Connects directly to your JIRA instance without additional intermediary services

Features

  • 📊 Backlog Data Analysis: Fetch structured backlog data with flexible filtering
  • 🔍 Smart Search: Natural language and JQL-powered issue search
  • ✂️ Ticket Splitting: AI-powered suggestions for breaking down large tickets
  • 👥 Team Workload Analysis: Real-time capacity and assignment analysis
  • 🎯 Team Expertise Mapping: Skills tracking and component ownership analysis
  • 🔗 Dependency Analysis: Blocking relationships and bottleneck identification
  • 📈 Historical Metrics: Performance trends and velocity tracking
  • 💼 Business Context: SLA compliance, priority analysis, and release planning
  • 🏷️ Flexible Filtering: Filter by status, issue types, and other criteria

AI-Powered Backlog Management Examples

Check for Duplicate Issues

Check for duplicates in our backlog - look for similar summaries and descriptions

Suggest Issue Assignments

Which unassigned tickets should be assigned to specific team members?

Identify Issues with Unresolved Questions

Which tickets have unresolved questions or are blocked?

Backlog Health Analysis

Analyze our backlog health and suggest improvements

Sprint Planning Assistance

Help me plan the next sprint based on priorities and team capacity

Tools Available

Core Tools

get_backlog_data

Fetch comprehensive backlog data for analysis including issue details, status, assignees, and metadata.

Parameters:

  • project (string, optional): Project key (default: "GRO")
  • maxResults (number, optional): Max issues to fetch (10-500, default: 200)
  • statusFilter (string, optional): Comma-separated statuses (e.g., "BACKLOG,IN PROGRESS")
  • issueTypes (string, optional): Comma-separated types (e.g., "Story,Bug,Epic")

smart_search_issues

Search issues using natural language queries or JQL with AI assistance.

Parameters:

  • query (string, required): Natural language query or JQL
  • project (string, optional): Project key (default: "GRO")
  • maxResults (number, optional): Max results (1-100, default: 50)

get_ticket_info_for_splitting

Get comprehensive ticket information including comments and links for splitting analysis.

Parameters:

  • issueKey (string, required): The issue key to get information for

perform_split

Split a ticket into multiple new tickets with optional updates to the original ticket.

Parameters:

  • originalTicket (string, required): The original ticket key to split
  • newTickets (array, required): Array of new tickets to create, each with summary, description, and optional fields like issueType, assignee, priority, labels, components, and storyPoints
  • updateOriginal (object, optional): Updates to apply to the original ticket (e.g., new summary, description, or status)
  • linkType (string, optional): Type of link to create between original and new tickets (default: relates)
  • dryRun (boolean, optional): If true, only shows what would be created without making changes (default: true)

Advanced Analytics Tools

get_team_workload

Get current team workload and capacity analysis. Shows active assignments, story points in progress, and available capacity.

Parameters:

  • project (string, optional): Project key (default: "GRO")
  • sprintFilter (string, optional): Filter by sprint status: "active", "future", or "all" (default: active)

Example Usage:

// Get current team workload
use_mcp_tool("jira-backlog-manager", "get_team_workload", {})

// Focus on future sprint capacity
use_mcp_tool("jira-backlog-manager", "get_team_workload", {
  "sprintFilter": "future"
})

get_team_expertise

Analyze team member expertise based on historical assignments and component ownership.

Parameters:

  • project (string, optional): Project key (default: "GRO")
  • lookbackDays (number, optional): Days to look back for historical data (30-365, default: 90)

Example Usage:

// Get team expertise analysis
use_mcp_tool("jira-backlog-manager", "get_team_expertise", {
  "lookbackDays": 180
})

get_ticket_dependencies

Analyze ticket dependencies, blocking relationships, and related work.

Parameters:

  • issueKey (string, optional): Issue key to analyze (if not provided, analyzes all active tickets)
  • project (string, optional): Project key (default: "GRO")

Example Usage:

// Analyze all dependencies project-wide
use_mcp_tool("jira-backlog-manager", "get_ticket_dependencies", {})

// Analyze dependencies for specific ticket
use_mcp_tool("jira-backlog-manager", "get_ticket_dependencies", {
  "issueKey": "GRO-123"
})

get_historical_metrics

Get historical performance metrics for similar ticket types and team members.

Parameters:

  • project (string, optional): Project key (default: "GRO")
  • issueType (string, optional): Filter by issue type (Bug, Story, Epic, etc.)
  • component (string, optional): Filter by component name
  • lookbackDays (number, optional): Days to look back (30-730, default: 180)

Example Usage:

// Get overall performance metrics
use_mcp_tool("jira-backlog-manager", "get_historical_metrics", {})

// Analyze bug resolution performance
use_mcp_tool("jira-backlog-manager", "get_historical_metrics", {
  "issueType": "Bug",
  "lookbackDays": 90
})

get_business_context

Get business context including SLAs, customer impact, and release requirements for tickets.

Parameters:

  • project (string, optional): Project key (default: "GRO")
  • includeLabels (boolean, optional): Include label-based business context analysis (default: true)

Example Usage:

// Get comprehensive business context
use_mcp_tool("jira-backlog-manager", "get_business_context", {})

Installation & Setup

Prerequisites

  • Node.js 18+
  • TypeScript
  • JIRA Cloud instance with API access
  • JIRA API token

Environment Variables

Create a .env file or set the following environment variables:

JIRA_BASE_URL=https://your-domain.atlassian.net
JIRA_EMAIL=your-email@company.com
JIRA_API_TOKEN=your-api-token
JIRA_PROJECT_KEY=YOUR_PROJECT_KEY  # Optional, defaults to "GRO"

Getting Your JIRA API Token

  1. Go to Atlassian Account Settings
  2. Click "Create API token"
  3. Give it a descriptive name (e.g., "MCP Backlog Manager")
  4. Copy the generated token - save it securely as it won't be shown again

Build & Run

# Install dependencies
npm install

# Build the project
npm run build

# Start the server
npm start

Development

# Watch mode for development
npm run dev

MCP Configuration

Add this server to your MCP client configuration:

{
  "mcpServers": {
    "jira-backlog-manager": {
      "command": "node",
      "args": ["/path/to/jira-backlog-manager/build/index.js"],
      "env": {
        "JIRA_BASE_URL": "https://your-domain.atlassian.net",
        "JIRA_EMAIL": "your-email@company.com",
        "JIRA_API_TOKEN": "your-api-token",
        "JIRA_PROJECT_KEY": "YOUR_PROJECT_KEY"
      }
    }
  }
}

Usage Examples

Basic Tool Usage

Get Backlog Data

// Get all backlog issues
use_mcp_tool("jira-backlog-manager", "get_backlog_data", {})

// Filter by status and issue type
use_mcp_tool("jira-backlog-manager", "get_backlog_data", {
  "statusFilter": "BACKLOG,TO DO",
  "issueTypes": "Story,Bug",
  "maxResults": 100
})

Smart Search

// Natural language search
use_mcp_tool("jira-backlog-manager", "smart_search_issues", {
  "query": "authentication issues with login"
})

// JQL search
use_mcp_tool("jira-backlog-manager", "smart_search_issues", {
  "query": "assignee = currentUser() AND status = 'In Progress'"
})

Split Large Tickets

use_mcp_tool("jira-backlog-manager", "split_large_ticket", {
  "issueKey": "PROJ-123"
})

Advanced Analytics

// Check team workload for sprint planning
use_mcp_tool("jira-backlog-manager", "get_team_workload", {})

// Identify subject matter experts for assignment
use_mcp_tool("jira-backlog-manager", "get_team_expertise", {})

// Find blocking dependencies
use_mcp_tool("jira-backlog-manager", "get_ticket_dependencies", {})

// Analyze team performance trends
use_mcp_tool("jira-backlog-manager", "get_historical_metrics", {})

// Check SLA breaches and release blockers
use_mcp_tool("jira-backlog-manager", "get_business_context", {})

Security

  • No hardcoded credentials: All sensitive data uses environment variables
  • Secure authentication: Uses JIRA API tokens (recommended over passwords)
  • Minimal permissions: Only requires read access to JIRA issues
  • Local execution: Runs locally, no data sent to third parties

Data Privacy

This MCP server:

  • Connects directly to your JIRA instance
  • Processes data locally on your machine
  • Does not store or transmit data to external services
  • Only accesses JIRA data you explicitly request through tool calls

Development

Project Structure

├── src/
│   ├── index.ts          # Main MCP server implementation
│   └── tools/            # Modular tool implementations
│       ├── teamWorkload.ts      # Team workload analysis
│       ├── teamExpertise.ts     # Skills and expertise mapping
│       ├── ticketDependencies.ts # Dependency analysis
│       ├── historicalMetrics.ts # Performance metrics
│       └── businessContext.ts   # SLA and business priority analysis
├── build/                # Compiled JavaScript output (git ignored)
├── package.json          # Dependencies and scripts
├── tsconfig.json         # TypeScript configuration
└── README.md            # This file

Key Dependencies

  • @modelcontextprotocol/sdk: MCP protocol implementation
  • axios: HTTP client for JIRA API calls
  • string-similarity: Text similarity analysis

Troubleshooting

Authentication Issues

  • Verify your JIRA_BASE_URL includes the full domain (e.g., https://company.atlassian.net)
  • Ensure your API token is valid and hasn't expired
  • Check that your email matches your JIRA account

Permission Issues

  • Verify you have read access to the specified JIRA project
  • Some features may require additional JIRA permissions

Connection Issues

  • Ensure your JIRA instance is accessible from your network
  • Check firewall/proxy settings if running in corporate environment

Contributing

  1. Fork the repository
  2. Create a feature branch: git checkout -b feature-name
  3. Commit changes: git commit -am 'Add feature'
  4. Push to branch: git push origin feature-name
  5. Submit a Pull Request

License

MIT License - see LICENSE file for details.

Support

For issues and questions:

  • Create an issue in this repository
  • Check existing issues for similar problems
  • Provide relevant error messages and environment details

About

JIRA Backlog Manager MCP Server - Tools for analyzing and managing JIRA backlogs

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published