JIRA MCP Server
Provides system time integration with customizable date and time formatting and locale support.
Allows access to Jira issues directly from the IDE, including viewing assigned issues, getting detailed information on specific issues, and converting Jira issues into local tasks.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@JIRA MCP Server show me my assigned issues due this week"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
π― JIRA MCP Server
β¨ Features
π― Complete JIRA Integration Suite
Issue Management: Full CRUD operations for JIRA issues with comprehensive field support
Project & Board Discovery: Browse projects, boards, and sprints with advanced filtering
Smart Search: JQL and beginner-friendly search with rich formatting
Comment System: Access and manage issue comments with progressive disclosure
ποΈ Enterprise-Grade Architecture (New in v0.5.0)
Modular Design: Feature-based architecture with clear separation of concerns
Robust HTTP Client: Refactored with dedicated utility classes for reliability
Comprehensive Testing: 822+ tests ensuring stability and reliability
Type Safety: Full TypeScript strict mode with enhanced error handling
π Powerful Search & Discovery
Search issues using JQL (JIRA Query Language) or beginner-friendly parameters
Project, board, and sprint discovery with metadata and filtering
Rich markdown formatting with issue previews and direct navigation links
Advanced comment retrieval with author filtering and date ranges
π Advanced Issue Management
Create, update, and transition issues with comprehensive field support
Time tracking, worklog management, and custom field support
ADF (Atlassian Document Format) parsing for rich content display
Array operations for labels, components, and versions
Related MCP server: JIRA MCP Server
π What's New in v0.5.0
ποΈ Major Architecture Overhaul
Complete code reorganization with modular, domain-driven architecture
HTTP client refactoring with dedicated utility classes for improved reliability
Critical bug fix for malformed JIRA API URLs that prevented proper communication
π§ͺ Enhanced Testing & Quality
95+ new tests added for HTTP client utilities and edge cases
822 total tests ensuring comprehensive coverage and stability
Zero linting warnings with enhanced Biome integration
π§ Technical Improvements
Enhanced error handling with better classification and actionable messages
Improved logging with structured debug information and performance monitoring
Type safety enhancements with strict TypeScript checking throughout
π Performance & Reliability
Optimized HTTP requests with better connection management
Enhanced error recovery with improved retry logic and timeout handling
Backward compatibility maintained - seamless upgrade from v0.4.x
π Quick Start
Installation
Add this configuration to your MCP client:
{
"mcpServers": {
"JIRA Tools": {
"command": "bunx",
"args": ["-y", "@dsazz/mcp-jira@latest"],
"env": {
"JIRA_HOST": "https://your-domain.atlassian.net",
"JIRA_USERNAME": "your-email@example.com",
"JIRA_API_TOKEN": "your-jira-api-token"
}
}
}
}Development Setup
For local development and testing:
# Clone the repository
git clone https://github.com/Dsazz/mcp-jira.git
cd mcp-jira
# Install dependencies
bun install
# Set up environment variables
cp .env.example .env
# Edit .env with your JIRA credentials
# Build the project
bun run build
# Test with MCP Inspector
bun run inspectConfiguration
Create a .env file with the following variables:
JIRA_HOST=https://your-instance.atlassian.net
JIRA_USERNAME=your-email@example.com
JIRA_API_TOKEN=your-jira-api-token-hereπ Important Note About JIRA API Tokens
A JIRA API token can be generated at Atlassian API Tokens
Tokens may contain special characters, including the
=signPlace the token on a single line in the
.envfileDo not add quotes around the token value
Paste the token exactly as provided by Atlassian
π§° Available Tools
Core JIRA Tools
Tool | Description | Parameters | Returns |
| Retrieves all issues assigned to you | None | Markdown-formatted list of issues |
| Gets detailed information about a specific issue |
| Markdown-formatted issue details |
| Retrieves comments for a specific issue with configurable options | See comment parameters below | Markdown-formatted comments |
| Create new JIRA issues with comprehensive field support | See issue creation parameters | Markdown-formatted creation result |
| Update existing issues with field changes and status transitions | See issue update parameters | Markdown-formatted update result |
| Retrieve and browse JIRA projects with filtering options | See project parameters | Markdown-formatted project list |
| Get JIRA boards (Scrum/Kanban) with advanced filtering | See board parameters | Markdown-formatted board list |
| Retrieve sprint information for agile project management | See sprint parameters | Markdown-formatted sprint list |
| Add time tracking entries to issues | See worklog parameters below | Markdown-formatted worklog result |
| Retrieve worklog entries for issues with date filtering | See worklog parameters below | Markdown-formatted worklog list |
| Update existing worklog entries | See worklog parameters below | Markdown-formatted update result |
| Delete worklog entries from issues | See worklog parameters below | Markdown-formatted deletion result |
| Get current authenticated user information | None | Markdown-formatted user details |
| Search JIRA issues with JQL or helper parameters | See search parameters below | Markdown-formatted search results |
Issue Creation Parameters
The jira_create_issue tool supports comprehensive issue creation:
Required:
projectKey: String - Project key (e.g.,"PROJ")issueType: String - Issue type (e.g.,"Task","Bug","Story")summary: String - Issue title/summary
Optional Fields:
description: String - Detailed description (supports ADF format)priority: String - Priority level ("Highest","High","Medium","Low","Lowest")assignee: String - Assignee username or emailreporter: String - Reporter username or emaillabels: Array - Labels to apply to the issuecomponents: Array - Component namesfixVersions: Array - Fix version namesaffectsVersions: Array - Affected version namestimeEstimate: String - Time estimate in JIRA format (e.g.,"2h","1d 4h")dueDate: String - Due date in ISO formatenvironment: String - Environment descriptioncustomFields: Object - Custom field values
Examples:
# Basic issue creation
jira_create_issue projectKey:"PROJ" issueType:"Task" summary:"Fix login bug"
# Comprehensive issue with all fields
jira_create_issue projectKey:"PROJ" issueType:"Bug" summary:"Critical login issue" description:"Users cannot log in" priority:"High" assignee:"john.doe" labels:["urgent","security"] timeEstimate:"4h"Issue Update Parameters
The jira_update_issue tool supports comprehensive issue updates:
Required:
issueKey: String - Issue key (e.g.,"PROJ-123")
Field Updates (any combination):
summary: String - Update issue titledescription: String - Update descriptionpriority: String - Change priorityassignee: String - Reassign issuereporter: String - Change reportertimeEstimate: String - Update time estimatetimeSpent: String - Log time spentdueDate: String - Update due dateenvironment: String - Update environment
Array Operations (add/remove/set):
labels: Object - Modify labels ({operation: "add|remove|set", values: ["label1", "label2"]})components: Object - Modify componentsfixVersions: Object - Modify fix versionsaffectsVersions: Object - Modify affected versions
Status Transitions:
status: String - Transition to new status (e.g.,"In Progress","Done")
Worklog:
worklog: Object - Add work log entry ({timeSpent: "2h", comment: "Fixed issue"})
Examples:
# Update basic fields
jira_update_issue issueKey:"PROJ-123" summary:"Updated title" priority:"High"
# Add labels and transition status
jira_update_issue issueKey:"PROJ-123" labels:'{operation:"add",values:["urgent"]}' status:"In Progress"
# Log work and add comment
jira_update_issue issueKey:"PROJ-123" worklog:'{timeSpent:"2h",comment:"Completed testing"}'Project Parameters
The jira_get_projects tool supports project discovery:
Optional Parameters:
maxResults: Number (1-100, default: 50) - Limit number of resultsstartAt: Number (default: 0) - Pagination offsetexpand: Array - Additional fields to include (["description", "lead", "issueTypes", "url", "projectKeys"])
Examples:
# Get all projects
jira_get_projects
# Get projects with additional details
jira_get_projects expand:["description","lead","issueTypes"] maxResults:20Board Parameters
The jira_get_boards tool supports board management:
Optional Parameters:
maxResults: Number (1-100, default: 50) - Limit number of resultsstartAt: Number (default: 0) - Pagination offsettype: String - Board type ("scrum","kanban")name: String - Filter by board nameprojectKeyOrId: String - Filter by project
Examples:
# Get all boards
jira_get_boards
# Get Scrum boards for specific project
jira_get_boards type:"scrum" projectKeyOrId:"PROJ"
# Search boards by name
jira_get_boards name:"Sprint Board" maxResults:10Sprint Parameters
The jira_get_sprints tool supports sprint management:
Required:
boardId: Number - Board ID to get sprints from
Optional Parameters:
maxResults: Number (1-100, default: 50) - Limit number of resultsstartAt: Number (default: 0) - Pagination offsetstate: String - Sprint state ("active","closed","future")
Examples:
# Get all sprints for a board
jira_get_sprints boardId:123
# Get only active sprints
jira_get_sprints boardId:123 state:"active"
# Get sprints with pagination
jira_get_sprints boardId:123 maxResults:10 startAt:20Worklog Parameters
The worklog tools support comprehensive time tracking:
jira_add_worklog Parameters:
Required:
issueKey: String - Issue key (e.g.,"PROJ-123")timeSpent: String - Time spent in JIRA format (e.g.,"2h","1d 4h","30m")
Optional:
comment: String - Comment describing the work donestarted: String - When work started (ISO date format, defaults to now)visibility: Object - Visibility settings ({type: "group", value: "jira-developers"})
jira_get_worklogs Parameters:
Required:
issueKey: String - Issue key (e.g.,"PROJ-123")
Optional:
startedAfter: String - Filter worklogs started after this date (ISO format)startedBefore: String - Filter worklogs started before this date (ISO format)
jira_update_worklog Parameters:
Required:
issueKey: String - Issue key (e.g.,"PROJ-123")worklogId: String - Worklog ID to update
Optional (any combination):
timeSpent: String - Update time spentcomment: String - Update commentstarted: String - Update start time
jira_delete_worklog Parameters:
Required:
issueKey: String - Issue key (e.g.,"PROJ-123")worklogId: String - Worklog ID to delete
Examples:
# Add worklog entry
jira_add_worklog issueKey:"PROJ-123" timeSpent:"2h" comment:"Fixed authentication bug"
# Get all worklogs for an issue
jira_get_worklogs issueKey:"PROJ-123"
# Get worklogs from last week
jira_get_worklogs issueKey:"PROJ-123" startedAfter:"2025-05-29T00:00:00.000Z"
# Update worklog
jira_update_worklog issueKey:"PROJ-123" worklogId:"12345" timeSpent:"3h" comment:"Updated work description"
# Delete worklog
jira_delete_worklog issueKey:"PROJ-123" worklogId:"12345"Comment Parameters
The jira_get_issue_comments tool supports progressive disclosure with these parameters:
Required:
issueKey: String - Issue key (e.g.,"PROJ-123")
Basic Options:
maxComments: Number (1-100, default: 10) - Maximum number of comments to retrieveorderBy: String ("created"or"updated", default:"created") - Sort order for comments
Advanced Options:
includeInternal: Boolean (default: false) - Include internal/restricted commentsauthorFilter: String - Filter comments by author name or emaildateRange: Object - Filter by date range:from: String (ISO date) - Start dateto: String (ISO date) - End date
Examples:
# Basic usage - get 10 most recent comments
jira_get_issue_comments PROJ-123
# Get more comments with specific ordering
jira_get_issue_comments PROJ-123 maxComments:25 orderBy:"updated"
# Advanced filtering
jira_get_issue_comments PROJ-123 authorFilter:"john.doe" includeInternal:trueSearch Parameters
The search_jira_issues tool supports two modes:
Expert Mode (JQL):
jql: Direct JQL query string (e.g.,"project = PROJ AND status = Open")
Beginner Mode (Helper Parameters):
assignedToMe: Boolean - Show only issues assigned to current userproject: String - Filter by project keystatus: String or Array - Filter by status(es) (e.g.,"Open"or["Open", "In Progress"])text: String - Search in summary and description fields
Common Options:
maxResults: Number (1-50, default: 25) - Limit number of resultsfields: Array - Specify which fields to retrieve (optional)
π οΈ Development Tools
Code Quality Tools
The project uses Biome for code formatting and linting, providing:
Fast, unified formatting and linting
TypeScript-first tooling
Zero configuration needed
Consistent code style enforcement
# Format code
bun run format
# Check code for issues
bun run check
# Type check
bun run typecheck
# Run tests
bun testMCP Inspector
The MCP Inspector is a powerful tool for testing and debugging your MCP server.
# Run the inspector (no separate build step needed)
bun run inspectThe inspector automatically:
Loads environment variables from
.envCleans up occupied ports (5175, 3002)
Builds the project when needed
Starts the MCP server with your configuration
Launches the inspector UI
Visit the inspector at http://localhost:5175?proxyPort=3002
If you encounter port conflicts:
bun run cleanup-portsDebugging with the Inspector
The inspector UI allows you to:
View all available MCP capabilities
Execute tools and examine responses
Analyze the JSON communication
Test with different parameters
For more details, see the MCP Inspector GitHub repository.
Integration with Claude Desktop
Test your MCP server directly with Claude:
Build:
bun run build # You must build the project before running itConfigure Claude Desktop:
nano ~/Library/Application\ Support/Claude/claude_desktop_config.jsonAdd the MCP configuration:
{ "mcpServers": { "JIRA Tools": { "command": "node", "args": ["/absolute/path/to/your/project/dist/index.js"], "env": { "JIRA_USERNAME": "your-jira-username", "JIRA_API_TOKEN": "your-jira-api-token", "JIRA_HOST": "your-jira-host.atlassian.net" } } } }Restart Claude Desktop and test with:
Show me my assigned JIRA issues.
π Integration with Cursor IDE
β οΈ Important: You must build the project with
bun run buildbefore integrating with Cursor IDE or Claude Desktop.
Add this MCP server to your Cursor IDE's MCP configuration:
{
"mcpServers": {
"JIRA Tools": {
"command": "node",
"args": ["/absolute/path/to/your/project/dist/index.js"],
"env": {
"JIRA_USERNAME": "your-jira-username",
"JIRA_API_TOKEN": "your-jira-api-token",
"JIRA_HOST": "your-jira-host.atlassian.net"
}
}
}
}π Project Structure
src/
βββ core/ # Core functionality and configurations
β βββ errors/ # Error handling utilities
β βββ logging/ # Logging infrastructure
β βββ responses/ # Response formatting
β βββ server/ # MCP server implementation
β βββ tools/ # Base tool interfaces
β βββ utils/ # Core utilities
βββ features/ # Feature implementations
β βββ jira/ # JIRA API integration
β βββ api/ # JIRA API client
β βββ formatters/ # Response formatters
β βββ tools/ # MCP tool implementations
β βββ utils/ # JIRA-specific utilities
βββ test/ # Test utilities and mocks
βββ mocks/ # Mock factories
βββ utils/ # Test helpersNPM Scripts
Command | Description |
| Run the server in development mode with hot reload |
| Build the project for production |
| Start the production server |
| Format code using Biome |
| Lint code using Biome |
| Run Biome checks on code |
| Run TypeScript type checking |
| Run tests |
| Start the MCP Inspector for debugging |
| Clean up ports used by the development server |
π Contributing
We welcome contributions! Please see our Contributing Guide for details on:
Development workflow
Branching strategy
Commit message format
Pull request process
Code style guidelines
π Resources
π License
MIT Β© Stanislav Stepanenko
Available Tools
14 toolsjira_add_worklogC
Add a worklog entry to track time spent on an issue
Inputs: issueKey (required), timeSpent (required), comment, started, +1 more.
jira_create_issueC
Creates a new JIRA issue with specified parameters
Inputs: projectKey (required), summary (required), issueType (required), description, +10 more.
jira_delete_worklogC
Delete a worklog entry from an issue
Inputs: issueKey (required), worklogId (required).
jira_get_assigned_issuesB
Retrieves all JIRA issues assigned to the current user
Inputs: no named parameters.
jira_get_boardsC
Get all accessible JIRA boards with filtering by type, project, and name
Inputs: startAt, maxResults, type, name, +8 more.
jira_get_current_userB
Get current user profile information and permissions
Inputs: no named parameters.
jira_get_issueC
Retrieves detailed information about a specific JIRA issue
Inputs: issueKey (required).
jira_get_issue_commentsC
Retrieves comments for a specific JIRA issue with configurable quantity and filtering options
Inputs: issueKey (required), maxComments, includeInternal, orderBy, +2 more.
jira_get_projectsC
Get all accessible JIRA projects with filtering and search capabilities
Inputs: expand, recent, properties, maxResults, +5 more.
jira_get_sprintsC
Get all sprints for a specific JIRA board with filtering by state
Inputs: boardId (required), startAt, maxResults, state.
jira_get_worklogsC
Get all worklog entries for a specific issue
Inputs: issueKey (required), startAt, maxResults, startedAfter, +1 more.
jira_update_issueC
Updates an existing JIRA issue with field changes, status transitions, and worklog entries
Inputs: issueKey (required), summary, description, priority, +5 more.
jira_update_worklogC
Update an existing worklog entry
Inputs: issueKey (required), worklogId (required), timeSpent, comment, +2 more.
search_jira_issuesB
Search JIRA issues using JQL queries or helper parameters. Supports both expert JQL and beginner-friendly filters.
Inputs: jql, assignedToMe, project, status, +3 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelogβ¦
TDQS
Scored across 14 tools
Every tool has a clearly distinct purpose targeting specific JIRA resources and actions. For example, jira_get_issue retrieves a single issue, jira_get_assigned_issues gets user-assigned issues, and search_jira_issues handles complex queries, with no overlap that would cause confusion. The worklog tools (add, delete, get, update) are similarly well-differentiated.
All tools follow a consistent jira_verb_noun naming pattern throughout, such as jira_create_issue, jira_get_projects, and jira_update_worklog. This uniformity makes the tool set predictable and easy to navigate, with no deviations in style or structure.
With 14 tools, the server is well-scoped for JIRA operations, covering core areas like issues, projects, boards, sprints, worklogs, and user management. Each tool earns its place by addressing a specific need without bloat, typical for a domain-specific server.
The tool set provides strong coverage for JIRA's core workflows, including CRUD for issues and worklogs, project/board/sprint management, and search capabilities. Minor gaps exist, such as no tools for managing comments (only retrieving them) or handling attachments, but agents can work around these with the available tools.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yoβ¦
The Jam MCP server provides AI tools with instant bug context without manual prompting, enabling a streamlined workflow from bug identification to ticket creation and pull request generation without switching between tools.
Enable secure connectivity between Sentry issues and debugging data, and LLM clients, using a Model Context Protocol (MCP) server.
The Figma MCP server brings Figma design context directly into your AI workflow.
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceModel Context Protocol (MCP) server for Atlassian Cloud products (Confluence and Jira). This integration is designed specifically for Atlassian Cloud instances and does not support Atlassian Server or Data Center deployments.6,097MIT
- FlicenseNot gradedqualityDmaintenanceA Model Context Protocol server that enables seamless integration between Cursor IDE and JIRA, allowing users to retrieve issues, execute JQL searches, and log work through natural language interactions.-
- AlicenseBqualityDmaintenanceA Model Context Protocol server that provides integration with Jira, allowing Large Language Models to interact with Jira projects, boards, sprints, and issues through natural language.537 npm3MIT
- FlicenseAqualityDmaintenanceA Model Context Protocol (MCP) server that provides tools for interacting with Jira. Enables Cursor and other MCP clients to fetch tickets, manage linked tickets, and update ticket status.3-