A comprehensive, enterprise-grade Model Context Protocol (MCP) server for Jira and Confluence that provides advanced workflow management, analytics, automation, and custom field capabilities using official REST API endpoints.
- Direct REST API Integration: Uses official Jira Cloud REST API v3 and Confluence REST API
- 111 Professional Tools: Complete enterprise solution for Jira and Confluence management
- TypeScript & Zod Validation: Full type safety with runtime validation
- Modern MCP Patterns: Built with latest MCP SDK patterns and best practices
- Advanced Analytics Engine: Comprehensive reporting and dashboard capabilities
- Automation Framework: Rule-based automation with smart value processing
- Custom Field Management: Advanced custom field configuration and validation
- Confluence Integration: Full Confluence workspace management and documentation automation
issue.create- Create new issues with full field support and validationissue.get- Retrieve issue details with customizable fields and expansionissue.update- Update existing issues with field validationissue.delete- Delete issues with subtask handling and cascade optionsissue.transition- Transition issues through workflow states with validationissue.transitions.list- Get available transitions for an issue with conditionsissue.comment.add- Add comments to issues with rich formatting supportissue.comments.get- Retrieve issue comments with pagination and filtering
issuelink.create- Create links between issues with validationissuelink.get- Retrieve issue link details and metadataissuelink.delete- Remove issue links with proper cleanupissuelink.types.list- List all available issue link typesissuelink.remote.create- Create remote issue links to external resources
attachment.upload- Upload files to issues with size validationattachment.get- Retrieve attachment metadata and propertiesattachment.download- Download attachment content to local filesattachment.delete- Remove attachments with proper cleanupattachment.metadata.update- Update attachment metadata (planned)attachment.settings.get- Get attachment configuration and limits
watchers.add- Add watchers to issues with user validationwatchers.remove- Remove watchers from issues with proper cleanupwatchers.list- List all watchers of an issue with detailsnotifications.send- Send custom notifications with flexible recipient targeting
version.create- Create new project versions with full configurationversion.update- Update version properties and release statusversion.delete- Delete versions with issue migration optionsversion.get- Retrieve version details with expansion optionsversion.list- List all project versions with filteringversion.move- Move issues between versions with validationversion.merge- Merge versions with issue consolidation
advanced.jql.builder.new- Interactive JQL query builder with syntax validationadvanced.export.data.new- Export data in multiple formats (JSON, CSV) with custom templates
customfield.create.new- Create custom fields with advanced configuration optionscustomfield.update.new- Update custom field properties and configurationscustomfield.delete.new- Delete custom fields with dependency checkingcustomfield.get.new- Retrieve custom field details and configurationscustomfield.search.new- Search custom fields with filtering and sortingcustomfield.context.create.new- Create field contexts with project and issue type scopingcustomfield.options.set.new- Set field options for select lists and multi-select fieldscustomfield.cascading.set.new- Configure cascading select field optionscustomfield.validate.new- Validate field values against field configurationscustomfield.calculate.new- Calculate computed field values using expressions
fieldconfig.list.new- List all field configurations with filteringfieldconfig.create.new- Create new field configurationsfieldconfig.update.new- Update field configuration propertiesfieldconfig.delete.new- Delete field configurations with validationfieldconfig.items.update.new- Update field configuration items and behaviorsfieldconfig.scheme.create.new- Create field configuration schemesfieldconfig.scheme.assign.new- Assign schemes to projectsfieldconfig.validate.new- Validate field configuration integrityfieldconfig.copy.new- Copy field configurations between projects
confluence.page.create- Create Confluence pages with rich contentconfluence.page.update- Update existing pages with version controlconfluence.page.get- Retrieve page content and metadataconfluence.space.create- Create new Confluence spaces with permissionsconfluence.jira.link- Link Jira issues to Confluence pagesconfluence.documentation.create- Auto-generate documentation from Jira dataconfluence.pages.search- Search pages across spaces with advanced filtersconfluence.spaces.get- List and filter Confluence spacesconfluence.space.permissions.get- Retrieve space permissions and access controls
automation.rule.create- Create automation rules with triggers and actionsautomation.rule.update- Update existing automation rulesautomation.rule.delete- Delete automation rules with dependency checkingautomation.rule.get- Retrieve automation rule details and configurationsautomation.rules.list- List all automation rules with filteringautomation.rule.execute- Execute automation rules manuallyautomation.executions.get- Get automation execution history and logsautomation.rule.validate- Validate automation rule syntax and logic
advanced.dashboard.metrics.enhanced- Generate dashboard metrics with KPIs and trend analysisadvanced.burndown.chart.enhanced- Create burndown charts with sprint analysis and forecastingadvanced.velocity.tracking.enhanced- Track team velocity with trend analysis and predictionsadvanced.jql.builder.enhanced- Enhanced interactive JQL query builder with advanced validationadvanced.export.data.enhanced- Export data in multiple formats with custom templates and filtering
jql.search- Advanced JQL-based issue searching with pagination, field expansion, and result optimization
project.get- Get detailed project information including permissions and configurationsproject.search- Search and filter projects with advanced criteria
user.get- Get user details, permissions, and group membershipsuser.search- Search for users across the organization with filtering
workflow.bulk_transition- Perform bulk transitions with conditions and validationworkflow.conditional_transition- Execute conditional transitions based on complex rulesworkflow.validate- Validate workflow configurations and transition rules
workflow.analytics- Generate comprehensive workflow analytics with statistical insightsworkflow.cycle_time- Calculate cycle time metrics with percentiles and trend analysisworkflow.lead_time- Measure lead time from creation to completion with bottleneck analysisworkflow.throughput- Analyze delivery rate and trends with forecastingworkflow.report- Generate reports in multiple formats (JSON, CSV, Markdown, HTML, PDF)workflow.dashboard- Create interactive dashboards for multiple projects with real-time updatesworkflow.export_issues- Export issues with detailed analytics data and custom formatting
customfield.create- Create custom fields with advanced configuration optionscustomfield.update- Update custom field properties and configurationscustomfield.delete- Delete custom fields with dependency checkingcustomfield.get- Retrieve custom field details and configurationscustomfield.search- Search custom fields with filtering and sortingcustomfield.context.create- Create field contexts with project and issue type scopingcustomfield.options.set- Set field options for select lists and multi-select fieldscustomfield.cascading.set- Configure cascading select field optionscustomfield.validate- Validate field values against field configurationscustomfield.calculate- Calculate computed field values using expressions
fieldconfig.list- List all field configurations with filteringfieldconfig.create- Create new field configurationsfieldconfig.update- Update field configuration propertiesfieldconfig.delete- Delete field configurations with validationfieldconfig.items.update- Update field configuration items and behaviorsfieldconfig.scheme.create- Create field configuration schemesfieldconfig.scheme.assign- Assign schemes to projectsfieldconfig.validate- Validate field configuration integrityfieldconfig.copy- Copy field configurations between projects
advanced.jql.builder- Interactive JQL query builder with syntax validationadvanced.dashboard.metrics- Generate dashboard metrics with KPIsadvanced.burndown.chart- Create burndown charts with sprint analysisadvanced.velocity.tracking- Track team velocity with trend analysisadvanced.export.data- Export data in multiple formats with custom templates
confluence.page.create- Create Confluence pages with rich contentconfluence.page.update- Update existing pages with version controlconfluence.page.get- Retrieve page content and metadataconfluence.space.create- Create new Confluence spaces with permissionsconfluence.jira.link- Link Jira issues to Confluence pagesconfluence.documentation.create- Auto-generate documentation from Jira dataconfluence.pages.search- Search pages across spaces with advanced filtersconfluence.spaces.get- List and filter Confluence spacesconfluence.space.permissions.get- Retrieve space permissions and access controls
automation.rule.create- Create automation rules with triggers and actionsautomation.rule.update- Update existing automation rulesautomation.rule.delete- Delete automation rules with dependency checkingautomation.rule.get- Retrieve automation rule details and configurationsautomation.rules.list- List all automation rules with filteringautomation.rule.execute- Execute automation rules manuallyautomation.executions.get- Get automation execution history and logsautomation.rule.validate- Validate automation rule syntax and logic
- Comprehensive Monitoring: Real-time metrics collection with Prometheus export
- Intelligent Error Handling: Automatic error recovery with circuit breaker pattern
- Multi-Level Caching: Advanced caching with intelligent invalidation and warming
- Performance Optimization: Request timing, memory monitoring, and bottleneck detection
- Health Monitoring: Built-in health checks and system monitoring at
/healthand/metrics(port 9090) - Observability: Detailed logging, metrics, and performance analytics
- âś… Advanced Reporting & Analytics: 5 new enhanced tools for comprehensive analytics
- âś… Dashboard Metrics: Generate KPIs with trend analysis and priority breakdowns
- âś… Burndown Charts: Create sprint burndown charts with forecasting capabilities
- âś… Velocity Tracking: Track team velocity with trend analysis and predictions
- âś… Enhanced JQL Builder: Advanced JQL query builder with syntax validation
- âś… Enhanced Data Export: Export data in multiple formats with custom templates
- âś… Production Ready: All tools tested and validated
- Node.js 18+
- TypeScript 5+
- Jira Cloud instance with API access
- Clone and install dependencies:
git clone <repository-url>
cd mcp-jira-rest
npm install- Configure environment:
cp .env.example .env
# Edit .env with your Jira configuration- Build the project:
npm run build- Run tests:
npm test# Jira instance URL
JIRA_BASE_URL=https://your-domain.atlassian.net
# Authentication (choose one method)
# Method 1: API Token (recommended)
JIRA_EMAIL=your-email@example.com
JIRA_API_TOKEN=your-api-token
# Method 2: OAuth 2.0
# JIRA_OAUTH_ACCESS_TOKEN=your-oauth-access-token# Performance tuning
REQUEST_TIMEOUT=30000
MAX_RETRIES=3
RETRY_DELAY=1000
# Logging
LOG_LEVEL=info
# MCP Server
MCP_SERVER_NAME=jira-rest
MCP_SERVER_VERSION=1.0.1- Go to Atlassian Account Settings
- Create a new API token
- Set
JIRA_EMAILandJIRA_API_TOKENin your.envfile
- Create an OAuth app in Atlassian Developer Console
- Configure scopes:
read:jira-user,read:jira-work,write:jira-work - Set
JIRA_OAUTH_ACCESS_TOKENin your.envfile
The Enhanced MCP Jira REST Server includes comprehensive monitoring capabilities:
- Performance Metrics: Request timing, throughput, and latency tracking
- System Metrics: Memory usage, CPU utilization, and event loop monitoring
- Business Metrics: Tool execution rates, success/failure ratios, and user activity
- Custom Metrics: Extensible metrics system for domain-specific monitoring
# Built-in health checks
- JIRA connection status
- Confluence connection status
- Memory usage monitoring
- Event loop lag detection
- Circuit breaker status# Export metrics in Prometheus format
GET /metrics
# Example metrics
mcp_tool_executions_total{tool="issue.create",success="true"} 150
mcp_tool_execution_duration_ms{tool="issue.create"} 245.5
mcp_cache_hits_total 1250
mcp_cache_misses_total 85Advanced error management with automatic recovery:
- Network Errors: Automatic retry with exponential backoff
- Authentication Errors: Token refresh and re-authentication
- Rate Limiting: Intelligent backoff and request queuing
- Validation Errors: Input sanitization and correction
- System Errors: Graceful degradation and failover
// Automatic circuit breaking for failing operations
- Failure threshold: 5 consecutive failures
- Recovery timeout: 60 seconds
- Half-open state testing
- Automatic recovery on success- Network Retry: Exponential backoff for transient failures
- Rate Limit Backoff: Intelligent waiting for rate limit reset
- Authentication Refresh: Automatic token renewal
- Data Sanitization: Input validation and correction
Multi-level caching system with advanced features:
- TTL-based Expiration: Configurable time-to-live for entries
- Tag-based Invalidation: Bulk invalidation by tags
- LRU Eviction: Least Recently Used eviction policy
- Compression: Automatic compression for large entries
- Cache Warming: Proactive cache population
- Statistics: Detailed hit/miss ratios and performance metrics
// Cache with tags for easy invalidation
await cacheManager.set('user:123', userData, {
ttl: 300000, // 5 minutes
tags: ['user', 'profile'],
compress: true
});
// Invalidate all user-related cache entries
cacheManager.invalidateByTags(['user']);
// Get-or-set pattern
const userData = await cacheManager.getOrSet(
'user:123',
async () => fetchUserFromAPI(),
{ ttl: 300000, tags: ['user'] }
);- Connection Pooling: Efficient HTTP connection management
- Request Batching: Combine multiple operations
- Parallel Processing: Concurrent request execution
- Response Streaming: Memory-efficient large data handling
- Garbage Collection Monitoring: Track memory usage patterns
- Memory Leak Detection: Automatic leak detection and reporting
- Resource Cleanup: Proper cleanup of connections and handles
- Memory Pressure Handling: Adaptive behavior under memory constraints
- Tool Registration: < 100ms for 111 tools
- Tool Lookup: < 10ms for 1000 operations
- Memory Usage: < 50MB increase under load
- Concurrent Operations: 50 operations < 100ms
- Cache Access: < 1ms average access time
- Error Recovery: < 5s average recovery time
- XSS Prevention: HTML sanitization and encoding
- SQL Injection Protection: Parameterized queries and validation
- Path Traversal Prevention: File path sanitization
- Data Size Limits: Protection against large payload attacks
- Token Validation: Format and expiration checking
- Rate Limiting: Per-user and per-operation limits
- Audit Logging: Security event tracking
- Error Information Disclosure: Sanitized error messages
- HTTPS Enforcement: Secure communication requirements
- Secure Defaults: Security-first default configurations
- Environment Validation: Runtime security checks
- Secrets Management: Secure handling of sensitive data
The Enhanced MCP Jira REST Server is production-ready with enterprise-grade features:
# Build and run with Docker
docker build -f deployment/docker/Dockerfile -t mcp-jira-server:1.0.0 .
docker run -d --name mcp-jira-server --env-file .env -p 3000:3000 mcp-jira-server:1.0.0
# Or use Docker Compose
cd deployment/docker && docker-compose up -d# Deploy to Kubernetes
kubectl create namespace mcp-system
kubectl apply -f deployment/k8s/deployment.yaml
# With monitoring stack
kubectl apply -f deployment/k8s/- Prometheus Metrics: Industry-standard metrics collection
- Health Endpoints:
/health,/ready,/live,/metrics - Performance Analytics: Real-time performance tracking
- Alert Rules: Comprehensive alerting for production issues
- Grafana Dashboards: Pre-built visualization dashboards
- Horizontal Scaling: Auto-scaling based on CPU/memory
- Load Balancing: Built-in support for load balancers
- Circuit Breakers: Automatic failure protection
- Graceful Shutdown: Proper cleanup on termination
- Rolling Updates: Zero-downtime deployments
- Non-root Containers: Security-hardened container images
- Read-only Filesystem: Immutable container filesystem
- Secret Management: Kubernetes secrets integration
- TLS Termination: HTTPS-only communication
- Rate Limiting: DoS protection and throttling
- Multi-level Caching: Intelligent caching with compression
- Connection Pooling: Efficient HTTP connection management
- Memory Management: Automatic garbage collection optimization
- Resource Limits: Configurable CPU and memory limits
- Load Testing: Comprehensive performance validation
- Tool execution rates and success ratios
- Response time percentiles (P50, P95, P99)
- Error rates by category and severity
- Cache hit/miss ratios and performance
- Memory usage and garbage collection
- Circuit breaker states and recovery
- Application health status
- JIRA/Confluence connectivity
- System resource utilization
- Event loop lag monitoring
- Error recovery statistics
- Service availability alerts
- Performance degradation alerts
- Error rate threshold alerts
- Resource utilization alerts
- Security incident alerts
- Throughput: 100+ requests/second sustained
- Response Time: < 500ms (95th percentile)
- Concurrent Users: 200+ simultaneous connections
- Memory Efficiency: < 512MB under normal load
- Error Rate: < 1% under stress conditions
# Run comprehensive load tests
npm run test:load
npm run test:stress
npm run test:performance# Production configuration
NODE_ENV=production
LOG_LEVEL=info
METRICS_ENABLED=true
CACHE_MAX_SIZE=104857600
RATE_LIMIT_MAX=100- ConfigMaps for application settings
- Secrets for sensitive credentials
- Resource quotas and limits
- Network policies and security contexts
- Ingress controllers and TLS certificates
For detailed production deployment instructions, see Production Deployment Guide:
- Prerequisites and system requirements
- Environment configuration and secrets
- Docker and Kubernetes deployment steps
- Monitoring and alerting setup
- Security configuration and hardening
- Performance tuning and optimization
- Troubleshooting and maintenance
- Environment variables configured
- Secrets properly managed
- Health checks responding
- Metrics being collected
- Alerts configured and tested
- Load testing completed
- Security scan passed
- Backup and recovery tested
- Documentation updated
- Team training completed
npm run devnpm start{
"name": "issuelink.create",
"arguments": {
"type": { "name": "Relates" },
"inwardIssue": { "key": "PROJ-123" },
"outwardIssue": { "key": "PROJ-456" }
}
}{
"name": "attachment.upload",
"arguments": {
"issueIdOrKey": "PROJ-123",
"filePath": "/path/to/file.pdf",
"filename": "requirements.pdf"
}
}{
"name": "issuelink.remote.create",
"arguments": {
"issueIdOrKey": "PROJ-123",
"object": {
"url": "https://github.com/user/repo/pull/42",
"title": "Pull Request #42"
}
}
}{
"name": "version.create",
"arguments": {
"name": "v2.0.0",
"projectId": "10001",
"description": "Major release version",
"releaseDate": "2024-12-31"
}
}{
"name": "watchers.add",
"arguments": {
"issueIdOrKey": "PROJ-123",
"accountId": "user-account-id"
}
}{
"name": "notifications.send",
"arguments": {
"issueIdOrKey": "PROJ-123",
"subject": "Issue Update Notification",
"textBody": "The issue has been updated with new information",
"to": {
"users": [{"accountId": "user-account-id"}],
"watchers": true
}
}
}{
"name": "advanced.jql.builder.new",
"arguments": {
"project": "PROJ",
"issueType": "Task",
"status": "In Progress",
"priority": "High",
"createdAfter": "2024-01-01"
}
}{
"name": "advanced.export.data.new",
"arguments": {
"jql": "project = PROJ AND resolved >= -30d",
"format": "csv",
"outputPath": "./reports/monthly-report.csv",
"maxResults": 1000
}
}{
"name": "customfield.create.new",
"arguments": {
"name": "Story Points",
"type": "com.atlassian.jira.plugin.system.customfieldtypes:float",
"description": "Estimation field for story points"
}
}{
"name": "customfield.search.new",
"arguments": {
"query": "story",
"maxResults": 10,
"startAt": 0
}
}{
"name": "customfield.validate.new",
"arguments": {
"fieldId": "customfield_10016",
"value": 5,
"issueId": "PROJ-123"
}
}{
"name": "fieldconfig.list.new",
"arguments": {
"maxResults": 10,
"startAt": 0
}
}{
"name": "fieldconfig.create.new",
"arguments": {
"name": "Development Configuration",
"description": "Field configuration for development projects"
}
}{
"name": "fieldconfig.validate.new",
"arguments": {
"id": 10000
}
}{
"name": "fieldconfig.copy.new",
"arguments": {
"sourceId": 10000,
"name": "Copied Configuration",
"description": "Copy of existing configuration"
}
}{
"name": "confluence.page.create",
"arguments": {
"spaceKey": "DEV",
"title": "API Documentation",
"body": "<h1>API Documentation</h1><p>This page contains API documentation.</p>"
}
}{
"name": "confluence.jira.link",
"arguments": {
"issueKey": "PROJ-123",
"pageId": "123456789"
}
}{
"name": "confluence.documentation.create",
"arguments": {
"spaceKey": "DOC",
"projectKey": "PROJ",
"title": "Project Documentation",
"includeIssues": true
}
}{
"name": "confluence.pages.search",
"arguments": {
"cql": "space = DEV AND type = page",
"limit": 25
}
}{
"name": "automation.rule.create",
"arguments": {
"name": "Auto-assign Task",
"description": "Automatically assign tasks to team lead",
"trigger": {
"component": "TRIGGER",
"type": "jira.issue.event.trigger"
},
"actions": [
{
"component": "ACTION",
"type": "jira.issue.assign"
}
]
}
}{
"name": "automation.rule.execute",
"arguments": {
"ruleId": "12345",
"issueKey": "PROJ-123"
}
}{
"name": "automation.rules.list",
"arguments": {
"maxResults": 25,
"projectKey": "PROJ"
}
}{
"name": "automation.rule.validate",
"arguments": {
"ruleId": "12345"
}
}{
"name": "advanced.dashboard.metrics.enhanced",
"arguments": {
"projectKeys": ["PROJ1", "PROJ2"],
"timeRange": "30d",
"metrics": ["resolution_rate", "velocity", "burndown"]
}
}{
"name": "advanced.burndown.chart.enhanced",
"arguments": {
"projectKey": "PROJ",
"sprintId": "123",
"startDate": "2024-01-01",
"endDate": "2024-01-14"
}
}{
"name": "advanced.velocity.tracking.enhanced",
"arguments": {
"projectKey": "PROJ",
"sprintCount": 6,
"teamId": "team-123"
}
}{
"name": "advanced.jql.builder.enhanced",
"arguments": {
"project": "PROJ",
"issueType": "Story",
"status": "In Progress",
"labels": ["frontend", "urgent"],
"createdAfter": "2024-01-01",
"validate": true
}
}{
"name": "advanced.export.data.enhanced",
"arguments": {
"jql": "project = PROJ AND resolved >= -30d",
"format": "csv",
"outputPath": "./reports/monthly-report.csv",
"fields": ["key", "summary", "status", "assignee"],
"maxResults": 1000
}
}{
"name": "issue.create",
"arguments": {
"fields": {
"project": { "key": "PROJ" },
"summary": "New feature request",
"description": "Detailed description of the feature",
"issuetype": { "name": "Task" },
"assignee": { "accountId": "user-account-id" },
"priority": { "name": "High" },
"labels": ["feature", "urgent"]
}
}
}{
"name": "jql.search",
"arguments": {
"jql": "project = PROJ AND status = 'In Progress' AND assignee = currentUser()",
"maxResults": 25,
"fields": ["summary", "status", "assignee", "priority"]
}
}{
"name": "issue.transition",
"arguments": {
"issueIdOrKey": "PROJ-123",
"transition": { "id": "31" },
"fields": {
"resolution": { "name": "Done" }
}
}
}{
"name": "issue.comment.add",
"arguments": {
"issueIdOrKey": "PROJ-123",
"body": "This issue has been reviewed and approved for development."
}
}{
"name": "workflow.analytics",
"arguments": {
"jql": "project = PROJ AND resolved >= -30d",
"groupBy": "assignee",
"startDate": "2024-01-01",
"endDate": "2024-01-31"
}
}{
"name": "workflow.report",
"arguments": {
"jql": "project = PROJ AND resolved >= -90d",
"format": "html",
"outputPath": "./reports/quarterly-report.html",
"includeRecommendations": true
}
}The system includes powerful CLIs for comprehensive management:
# Generate comprehensive analytics
jira-workflow analytics -j "project = MYPROJ AND resolved >= -30d" -g assignee
# Calculate cycle time metrics
jira-workflow cycle-time -j "project = MYPROJ" -s "In Progress" -e "Done"
# Generate HTML report
jira-workflow report -j "project = MYPROJ" -f html -o "./reports/report.html"
# Create multi-project dashboard
jira-workflow dashboard -p "PROJ1,PROJ2" -t 30d -o "./dashboards"
# Export issues with analytics
jira-workflow export -j "project = MYPROJ" -f csv --include-history# Bulk transition issues
jira-workflow bulk-transition -j "project = MYPROJ AND status = 'To Do'" -t 21
# Validate workflow configuration
jira-workflow validate -p MYPROJ
# Check JIRA connection
jira-workflow health# Create documentation from Jira data
jira-confluence create-docs -p MYPROJ -s "Documentation Space"
# Link Jira issues to pages
jira-confluence link-issues -j "project = MYPROJ" -p "page-id"
# Search across spaces
jira-confluence search -q "API documentation" -s "DEV,QA"# Create custom field
jira-customfield create -n "Story Points" -t number -p MYPROJ
# Update field configuration
jira-customfield config -f "customfield_10001" -r required
# Validate field values
jira-customfield validate -f "customfield_10001" -v "5"# Create automation rule
jira-automation create -n "Auto-assign" -t "issue.created" -a "assign.user"
# Execute rule manually
jira-automation execute -r "rule-id" -i "PROJ-123"
# View execution history
jira-automation history -r "rule-id" --days 7src/
├── http/
│ ├── JiraRestClient.ts # Core HTTP client with auth & error handling
│ └── ConfluenceRestClient.ts # Confluence API client
├── types/
│ ├── index.ts # TypeScript types and Zod schemas
│ └── confluence.ts # Confluence-specific types
├── tools/
│ ├── createIssue.ts # Issue creation tool
│ ├── getIssue.ts # Issue retrieval tool
│ ├── updateIssue.ts # Issue update tool
│ ├── deleteIssue.ts # Issue deletion tool
│ ├── transitionIssue.ts # Issue transition tool
│ ├── getIssueTransitions.ts # Get available transitions
│ ├── searchIssues.ts # JQL search tool
│ ├── addComment.ts # Add comment tool
│ ├── getComments.ts # Get comments tool
│ ├── getProject.ts # Project retrieval tool
│ ├── searchProjects.ts # Project search tool
│ ├── getUser.ts # User retrieval tool
│ ├── searchUsers.ts # User search tool
│ ├── workflowTransitionManager.ts # Advanced workflow management
│ ├── workflowAnalytics.ts # Workflow analytics engine
│ ├── workflowReporting.ts # Report generation and export
│ ├── customFieldManager.ts # Custom field management
│ ├── customFieldConfiguration.ts # Field configuration management
│ ├── automationTools.ts # Automation engine tools
│ └── confluenceTools.ts # Confluence integration tools
├── services/
│ └── ConfluenceService.ts # Confluence service layer
├── automation/
│ ├── AutomationEngine.ts # Core automation engine
│ ├── RuleValidator.ts # Rule validation logic
│ ├── ActionExecutor.ts # Action execution engine
│ ├── TriggerManager.ts # Trigger management
│ ├── SmartValueProcessor.ts # Smart value processing
│ ├── WebhookManager.ts # Webhook handling
│ ├── NotificationManager.ts # Notification system
│ └── ConfluenceAutomation.ts # Confluence automation
├── analytics/
│ ├── advancedReporting.ts # Advanced reporting tools
│ └── scheduledReporting.ts # Scheduled report generation
├── cli/
│ ├── workflow-cli.ts # Workflow command-line interface
│ ├── confluence-cli.ts # Confluence CLI
│ ├── automation-cli.ts # Automation CLI
│ └── customfield-cli.ts # Custom field CLI
├── utils/
│ ├── logger.ts # Logging utilities
│ ├── errorCodes.ts # Error handling and mapping
│ ├── configValidator.ts # Configuration validation
│ └── healthCheck.ts # Health monitoring
└── index.ts # Main server entry point
- Direct HTTP client for Jira REST API
- Handles authentication, retries, and error mapping
- Provides convenience methods for common operations
- Built-in support for pagination and field expansion
- Comprehensive Zod schemas for validation
- TypeScript types for all Jira entities
- Input validation for all tool arguments
- Runtime type checking and error reporting
- Specific error types for different scenarios
- Automatic retry logic for transient failures
- Detailed error messages with context
- Graceful degradation for partial failures
If you're migrating from the original MCP Jira SDK that used jira.js:
- Direct REST API: No more jira.js dependency
- Comprehensive Tool Set: 111 tools instead of basic functionality
- Modern Architecture: Advanced automation, analytics, and reporting capabilities
- Enhanced Performance: Optimized HTTP client with better retry logic
- Enterprise Features: Custom fields, field configurations, and Confluence integration
| Original Tool | New Tool | Notes |
|---|---|---|
issue.get |
issue.get |
Same interface, enhanced performance |
issue.create |
issue.create |
Improved ADF handling |
issue.update |
issue.update |
Better field validation |
issue.delete |
issue.delete |
Added subtask handling |
issue.transition |
issue.transition |
Enhanced transition support |
jql.search |
jql.search |
Improved pagination |
project.get |
project.get |
More comprehensive data |
user.search |
user.search |
Better search capabilities |
| N/A | workflow.* |
New advanced workflow tools |
| N/A | customfield.* |
New custom field management |
| N/A | confluence.* |
New Confluence integration |
| N/A | automation.* |
New automation engine |
- Replace
JIRA_HOSTwithJIRA_BASE_URL - API token authentication remains the same
- OAuth configuration simplified
npm run buildThe Enhanced MCP Jira REST Server includes a comprehensive test suite with multiple testing strategies:
Unit Tests
npm run test:unit- Individual component testing
- Mock-based isolation
- Fast execution
- High coverage requirements
Integration Tests
npm run test:integration- Component interaction testing
- Real API simulation
- End-to-end workflows
- Error handling validation
End-to-End Tests
npm run test:e2e-new- Complete system testing
- MCP protocol validation
- Tool registration verification
- Performance benchmarking
Security Tests
npm run test:security- Input validation testing
- Authentication security
- XSS/injection prevention
- Data sanitization
Performance Tests
npm run test:performance- Load testing
- Memory usage validation
- Concurrent operation testing
- Resource cleanup verification
Automation Tests
npm run test:automation- Automation tool validation
- Rule execution testing
- Trigger/action verification
- Metrics collection testing
CLI Tests
npm run test:cli- CLI executable validation
- Command-line interface testing
- Help/version verification
- Error handling testing
All Tests with Coverage
npm run test:all
npm run test:coverageContinuous Integration
npm run test:ciWatch Mode (Development)
npm run test:watchDebug Mode
npm run test:debugTest results are generated in multiple formats:
- Console Output: Real-time test execution
- JUnit XML:
test-results/junit.xml(CI integration) - HTML Report:
test-results/test-report.html(detailed view) - Coverage Report:
coverage/directory (lcov, html) - JSON Summary:
test-results/test-summary.json
- Lines: 80% minimum
- Functions: 80% minimum
- Branches: 80% minimum
- Statements: 80% minimum
npm run lint:check # Check for linting issues
npm run lint # Fix linting issues automatically
npm run type-check # TypeScript type checking
npm run validate # Run all validation (lint + type + test)- Fork the repository
- Create a feature branch
- Make your changes with tests
- Ensure all tests pass
- Submit a pull request
- Use TypeScript strict mode
- Follow ESLint configuration
- Add Zod schemas for new types
- Include comprehensive error handling
- Write tests for new functionality
MIT License - see LICENSE file for details.
For issues and questions:
- Check the troubleshooting guide
- Review Jira REST API documentation
- Open an issue on GitHub
- Verify your API token is valid and not expired
- Check that your email matches the token owner
- Ensure your Jira instance URL is correct
- Verify you have appropriate Jira permissions
- Check project-level permissions for project operations
- Ensure user has "Browse Projects" permission
- Check firewall settings for outbound HTTPS
- Verify DNS resolution for your Jira instance
- Consider proxy configuration if needed
- Validate input arguments match the schema
- Check Jira field configurations for custom fields
- Verify issue types and workflows exist in your instance
Set LOG_LEVEL=debug in your environment to enable detailed logging:
LOG_LEVEL=debug npm run devThis will show:
- HTTP request/response details
- Authentication information
- Error stack traces
- Performance metrics