A Model Context Protocol server for integrating JIRA with Claude. This tool allows Claude to create JIRA tickets directly within your conversations.
Overview
The JIRA MCP project is a Node.js/TypeScript application that provides a Model Context Protocol (MCP) server for integrating with JIRA and Zephyr. It allows AI assistants to interact with JIRA for project management and Zephyr for test management through a standardized protocol.
Features
- Create JIRA tickets with summary, description, acceptance criteria, and issue type
- Search JIRA tickets using flexible JQL queries or by issue type
- Assign story points to Story tickets
- Automatically create linked Test tickets for Stories with points
- Enhanced error handling with automatic retry for custom field validation issues
- Updated to use latest JIRA REST API v3 specification (CHANGE-2046 compliant)
- Search for JIRA tickets by issue type and additional criteria
- Update existing JIRA tickets with new field values
- Link JIRA tickets together with specified relationship types
- Retrieve and add test steps for Zephyr test tickets
- Seamless integration with Claude desktop application
- Simple configuration using Claude's desktop configuration file
Configuration
Configuration Template
A template configuration file has been provided in jira-mcp-config-template.json.
This template shows all possible configuration options for the JIRA MCP server.
Basic Configuration
Add the following configuration to your Claude configuration file:
{
"mcpServers": {
"jira-mcp": {
"command": "node",
"args": ["/path/to/project/build/index.js"],
"env": {
"JIRA_HOST": "your-site.atlassian.net",
"JIRA_USERNAME": "your-email@example.com",
"JIRA_API_TOKEN": "your_api_token",
"JIRA_PROJECT_KEY": "your_project_key",
"AUTO_CREATE_TEST_TICKETS": "true",
"JIRA_ACCEPTANCE_CRITERIA_FIELD": "customfield_10429",
"JIRA_STORY_POINTS_FIELD": "customfield_10040",
"JIRA_EPIC_LINK_FIELD": "customfield_10014",
"JIRA_PRODUCT_FIELD": "customfield_10757",
"JIRA_PRODUCT_VALUE": "Your Product Name",
"JIRA_PRODUCT_ID": "12345",
"JIRA_CATEGORY_FIELD": "customfield_10636",
"USE_ALTERNATE_CATEGORY": "false",
"JIRA_DEFAULT_CATEGORY_VALUE": "Default Category",
"JIRA_DEFAULT_CATEGORY_ID": "12345",
"JIRA_ALTERNATE_CATEGORY_VALUE": "Alternate Category",
"JIRA_ALTERNATE_CATEGORY_ID": "67890"
}
}
}
}
Minimal Configuration Example
If you want the absolute minimal configuration, you can use:
{
"mcpServers": {
"jira-mcp": {
"command": "node",
"args": ["/absolute/path/to/jira-mcp/build/index.js"],
"env": {
"JIRA_HOST": "your-site.atlassian.net",
"JIRA_USERNAME": "your-email@example.com",
"JIRA_API_TOKEN": "your_api_token",
"JIRA_PROJECT_KEY": "your_project_key"
}
}
}
}
Available Tools
create-ticket
Creates a new JIRA ticket.
Parameters:
summary: The title/summary of the ticket (required)issue_type: The type of issue (Bug,Task,Story, orTest, defaults toTask)description: Detailed description of the ticket (optional)acceptance_criteria: Acceptance criteria for the ticket (optional, stored incustomfield_10429)story_points: Story points for the ticket (optional, Fibonacci sequence:1,2,3,5,8,13, etc.)create_test_ticket: Override the default setting for automatically creating a linked Test ticket (optional, boolean)parent_epic: Key of the parent epic to link this ticket to (optional, e.g.,PROJ-123)sprint: The name of the sprint to assign the ticket to (optional, e.g.,2025_C1_S07)story_readiness: Whether the story is ready for development (optional,YesorNo)crisis: Whether this ticket represents a crisis/urgent issue (optional,YesorNo)
When creating a Story ticket with story points:
- The
QA-Testablelabel is automatically added to the Story - A linked Test ticket is automatically created (if
AUTO_CREATE_TEST_TICKETSis enabled) - The Test ticket uses the Story's title as its description
- The Test ticket is linked to the Story with a
Test Case Linkingrelationship
Example:
{ "summary": "Implement user authentication feature", "issue_type": "Story", "description": "As a user, I want to be able to log in to the application", "acceptance_criteria": "- Users can log in with email and password\n- Password reset functionality works via email", "story_points": 5, "parent_epic": "PROJ-100", "sprint": "2025_C1_S07", "story_readiness": "Yes" }
get-ticket
Retrieves the details of an existing JIRA ticket.
Parameters:
ticket_id: The ID/key of the JIRA ticket you want to read (required, e.g.,PROJ-123)
Example:
{ "ticket_id": "PROJ-123" }
The response includes all fields of the ticket, including custom fields.
search-tickets
Searches for JIRA tickets by issue type and additional criteria.
Parameters:
issue_type: The type of issue to search for (Bug,Task,Story, orTest) (required)max_results: Maximum number of results to return (optional, default:10, max:50)additional_criteria: Additional JQL criteria to include in the search (optional)
Example:
{ "issue_type": "Bug", "max_results": 20, "additional_criteria": "status = 'Open' AND priority = 'High'" }
This tool allows you to find all tickets of a specific type in your JIRA project. You can further refine your search by providing additional JQL criteria.
update-ticket
Updates an existing JIRA ticket with new field values.
Parameters:
ticket_key: The key of the JIRA ticket to update (required, e.g.,PROJ-123)sprint: The name of the sprint to assign the ticket to (optional, e.g.,2025_C1_S07)story_readiness: Whether the story is ready for development (optional,YesorNo)
Example:
{ "ticket_key": "PROJ-123", "sprint": "2025_C1_S07", "story_readiness": "Yes" }
This tool allows you to update existing tickets with sprint information and story readiness status. At least one field must be provided for the update to proceed.
link-tickets
Links two JIRA tickets together with a specified relationship type.
Parameters:
outward_issue: The key of the outward issue (required, e.g.,PROJ-123)inward_issue: The key of the inward issue (required, e.g.,PROJ-456)link_type: The type of link to create (optional, defaults toTest Case Linking)
Example:
{ "outward_issue": "PROJ-123", "inward_issue": "PROJ-456", "link_type": "Blocks" }
This creates a link between two tickets with the specified relationship type. For example,
PROJ-123 blocks PROJ-456.
get-test-steps
Retrieves test steps from a Zephyr test ticket.
Parameters:
ticket_key: The key of the test ticket to retrieve steps from (required, e.g.,PROJ-123)
Example:
{ "ticket_key": "PROJ-123" }
This tool retrieves all test steps associated with a test ticket in Zephyr. The response includes the step description, test data, and expected result for each step.
add-test-steps
Adds test steps to a test ticket via the Zephyr integration.
Parameters:
ticket_key: The key of the test ticket to add steps to (required, e.g.,PROJ-123)steps: An array of test step objects (required), where each step object contains:step: The description of the test step (required)data: Test data for the step (optional)result: Expected result of the step (optional)
Example:
{ "ticket_key": "PROJ-123", "steps": [ { "step": "Navigate to the login page", "data": "https://example.com/login", "result": "Login form is displayed" }, { "step": "Enter valid credentials", "data": "username=test, password=password123", "result": "User is logged in successfully" } ] }
This tool requires Zephyr for Jira Cloud to be installed and configured. You'll need to set the Zephyr API environment variables in your configuration file.