UNPKG

@cloudkinetix/bmad-enhanced

Version:

Cloud-Kinetix enhanced fork of BMAD-METHOD - Breakthrough Method of Agile AI-driven Development with robust versioning and unified validation.

418 lines (279 loc) 9.55 kB
# JIRA MCP Integration Utility ## Purpose Wrapper utility for Atlassian MCP tools providing simplified JIRA operations for BMAD integration tasks. ## MCP Availability Detection ### Check MCP Integration Status Before any JIRA operations, verify MCP tools are available using your analytical capabilities: **MCP Detection Strategy:** Apply systematic verification to ensure JIRA tools are accessible: - List available tools in your environment - Filter for tools with prefix `mcp__mcp-atlassian__` - Count matching tools to confirm availability - Test basic connectivity if tools are found **Availability Assessment:** When checking MCP status, determine: - **Available**: Atlassian MCP tools detected and accessible - **Not Available**: No JIRA MCP tools found in environment - **Partial**: Some tools present but not fully functional **Setup Guidance:** When MCP tools are not available, provide clear instructions: ``` JIRA MCP Setup Required: 1. Install Atlassian MCP tools: npm install -g @modelcontextprotocol/cli mcp install @modelcontextprotocol/atlassian 2. Configure JIRA connection: - JIRA instance URL (e.g., https://company.atlassian.net) - API token or authentication credentials - Project permissions 3. Verify connection: Test JIRA connectivity through MCP 4. Restart your IDE/environment to pick up new MCP tools ``` **Help References:** - Natural setup: "Set up JIRA integration for our team" - Documentation: https://docs.anthropic.com/en/docs/claude-code/mcp **Error Handling Pattern:** When MCP is unavailable, provide structured error response: - Clear error message explaining the issue - Setup instructions for resolution - Alternative approaches if available - Help command references ## Available Operations ### Authentication Setup Before using JIRA operations, ensure MCP is configured with: - JIRA instance URL - API token or authentication credentials - Project permissions ### Core Functions #### 1. Search Issues **Tool**: `mcp__mcp-atlassian__jira_search` **Purpose**: Find issues using JQL queries **Common Query Patterns:** - Find by title: `summary ~ "story title"` - Find in project: `project = PROJ` - Find epics: `issuetype = Epic AND project = PROJ` - Find by label: `labels = bmad-sync` **Usage Guidelines:** - Use JQL (JIRA Query Language) syntax - Include field list for specific data - Handle pagination for large results - Filter by project when possible #### 2. Get Issue Details **Tool**: `mcp__mcp-atlassian__jira_get_issue` **Purpose**: Retrieve full issue information **Field Selection:** - Use specific field names for efficiency - Request "all details" for complete information - Common fields: summary, status, assignee, priority - Custom fields require exact IDs #### 3. Create Issue **Tool**: `mcp__mcp-atlassian__jira_create_issue` **Purpose**: Create new JIRA issues **Required Fields:** - project_key: Target project identifier - summary: Issue title - issue_type: Bug, Story, Task, etc. **Optional Fields:** - description: Detailed information - assignee: User identifier - components: Component names - additional_fields: Custom field values #### 4. Update Issue **Tool**: `mcp__mcp-atlassian__jira_update_issue` **Purpose**: Update existing issues **Capabilities:** - All field updates - Status transitions - Attachment management - Custom field modifications #### 5. Field Detection **Tool**: `mcp__mcp-atlassian__jira_search_fields` **Purpose**: Auto-detect custom field IDs **Common Searches:** - "epic" for Epic Link field - "sprint" for Sprint field - "points" for Story Points field **Usage Pattern:** 1. Search for field by keyword 2. Parse results for custom field IDs 3. Store IDs in configuration 4. Use IDs in create/update operations #### 6. Status Transitions **Get Transitions Tool**: `mcp__mcp-atlassian__jira_get_transitions` **Purpose**: Get available status transitions **Transition Tool**: `mcp__mcp-atlassian__jira_transition_issue` **Purpose**: Change issue status **Workflow Pattern:** 1. Get current issue status 2. Fetch available transitions 3. Find matching transition ID 4. Execute transition with required fields #### 7. Bulk Operations **Tool**: `mcp__mcp-atlassian__jira_batch_create_issues` **Purpose**: Create multiple issues at once **Format**: JSON array of issue objects **Efficiency**: Reduces API calls for multiple issues **Use Cases**: Story breakdowns, bulk imports #### 8. Link Management **Epic Linking Tool**: `mcp__mcp-atlassian__jira_link_to_epic` **Purpose**: Link issues to epics **General Linking Tool**: `mcp__mcp-atlassian__jira_create_issue_link` **Purpose**: Create other issue links **Link Types:** - Blocks/Is Blocked By - Relates To - Duplicates - Clones ## Common Patterns ### Auto-Detection Pattern **Field Discovery Process:** 1. Use `jira_search_fields` with keywords: - "epic" for Epic Link field - "sprint" for Sprint field - "points" for Story Points field 2. Parse results for custom field IDs 3. Store in configuration for reuse 4. Apply in issue operations **Implementation Strategy:** - Cache discovered field IDs - Validate fields before use - Handle field permission errors - Provide fallback options ### Issue Creation Pattern **Standard Creation Flow:** 1. Prepare fields object with required fields 2. Add additional_fields for custom fields: - Epic link: `{'customfield_10014': epic_key}` - Sprint: `{'customfield_10020': sprint_id}` - Story points: `{'customfield_10016': points}` 3. Create issue and capture returned key 4. Add attachments if needed 5. Create links to related issues ### Status Sync Pattern **Status Update Flow:** 1. Get issue current status 2. Get available transitions 3. Find matching transition for target status 4. Execute transition with any required fields 5. Verify status change completed **Transition Mapping:** - To Do → In Progress: "Start Progress" - In Progress → Done: "Resolve Issue" - Any → Closed: "Close Issue" ### Search Pattern **Effective Search Strategy:** 1. Build JQL query with appropriate filters 2. Set appropriate field list for efficiency 3. Handle pagination if needed: - Use start_at and max_results - Iterate through pages - Aggregate results 4. Process and filter results 5. Handle no results gracefully ## Error Handling ### Automatic Retry Logic [[LLM: Implement retry for transient failures: 1. Network errors: Retry 3 times with exponential backoff (1s, 2s, 4s) 2. Rate limits: Wait specified time or 60s default 3. Auth errors: Retry once after re-validation 4. Other errors: No automatic retry Show user-friendly messages: - "Connection hiccup, trying again..." - "JIRA is busy, waiting a moment..." - "Let me try that once more..." ]] ### Authentication Errors **Common Causes:** - Invalid API token - Expired credentials - Network connectivity issues **Resolution Steps:** - Verify MCP configuration - Check API token validity - Confirm project permissions - Test with simple query first ### Field Not Found **Common Causes:** - Custom field doesn't exist - No permission to view field - Field name changed **Resolution Steps:** - Run field detection utility - Check field permissions - Try alternative field names - Verify with JIRA admin ### Invalid Values **Common Causes:** - Wrong value format - Value not in allowed list - Type mismatch **Resolution Steps:** - Verify value formats - Check allowed values via API - Use field configuration endpoint - Match exact case/format ### Permission Errors **Common Causes:** - User lacks project access - Issue type restrictions - Workflow permissions **Resolution Steps:** - Confirm user has project access - Check issue type permissions - Verify custom field visibility - Review workflow restrictions ## Best Practices ### 1. Cache Field IDs Store detected custom field IDs in configuration to avoid repeated lookups ### 2. Batch Operations Use batch endpoints when processing multiple issues to reduce API calls ### 3. Field Validation Verify fields exist before using them to avoid runtime errors ### 4. Error Recovery Implement retry logic for transient failures with exponential backoff ### 5. Preview Mode Always show what will change before executing modifications ## Integration with BMAD When using in BMAD tasks, follow these guidelines: ### 1. Configuration Loading - Load JIRA configuration first - Validate required settings exist - Use environment variables for secrets ### 2. Field Mapping - Use field mappings from configuration - Support both cloud and server field differences - Handle missing custom fields gracefully ### 3. Audit Trail - Maintain operation history in BMAD metadata - Log all JIRA modifications - Track sync timestamps ### 4. Error Messages - Provide clear, actionable error messages - Include setup instructions when needed - Suggest alternative approaches ### 5. Performance - Cache frequently used data - Minimize API calls through batching - Use appropriate field selections ## Common Integration Scenarios ### Story to JIRA Sync 1. Parse BMAD story format 2. Map to JIRA fields 3. Create or update issue 4. Store JIRA key in metadata ### Bug Analysis Workflow 1. Fetch bug details 2. Download attachments 3. Analyze content 4. Update bug with findings ### Sprint Planning 1. Get current sprint 2. List sprint issues 3. Update story points 4. Move issues to sprint ### Epic Management 1. Create epic from feature 2. Link stories to epic 3. Track epic progress 4. Update epic status