A comprehensive Model Context Protocol (MCP) server for Jira integration with Claude Code. This server provides complete Jira functionality including issue management, sprint operations, comments, attachments, and batch processing.
.env
files or environment variables.
- create-issue - Create issues with full field support including custom fields and dates
- update-issue - Update existing issues with smart field handling
- get-issue - Retrieve detailed issue information
- search-issues - Advanced search using JQL or simplified filters with date support
- transition-issue - Move issues through workflow states
- link-issues - Create relationships between issues (with smart type matching)
- get-link-types - List available issue link types
- get-fields - Show available fields for project/issue type
- diagnose-fields - Troubleshoot field configuration and find custom field IDs
- create-epic-with-subtasks - Create epic with multiple subtasks in one operation
- create-task-for-epic - Create task linked to epic (optimized for localized Jira)
- get-comments - Read issue comments with author and timestamp information
- get-history - View detailed change history with field modifications
- add-comment - Add comments with Atlassian Document Format support
- batch-comment - Add same comment to multiple issues simultaneously
- get-attachments - List attachments with metadata (size, type, upload date)
- upload-attachment - Upload files using base64 encoding
- get-boards - List available Jira boards for agile projects
- get-sprints - View sprints for a board with status indicators
- move-issue-to-sprint - Move issues between sprints and backlog
- create-sprint - Create new sprints with optional start/end dates
jira://projects
- List all accessible projectsjira://project/{key}
- Get specific project detailsjira://issue/{key}
- Get specific issue detailsjira://myself
- Current user informationjira://search?jql={query}
- Search results
- standup-report - Generate daily standup reports
- sprint-planning - Assist with sprint planning activities
- bug-triage - Help prioritize and triage bugs
- release-notes - Generate release notes from completed issues
- epic-status - Comprehensive epic progress reports
- Clone the repository:
git clone https://github.com/tom28881/JIRA_MCP.git
cd JIRA_MCP
- Install dependencies:
npm install
- Build the project:
npm run build
- Create a
.env
file from the example:
cp .env.example .env
- Configure your Jira credentials in
.env
:
JIRA_HOST=https://your-company.atlassian.net
JIRA_EMAIL=your-email@company.com
JIRA_API_TOKEN=your-api-token
JIRA_DEFAULT_PROJECT=PROJ
- Log in to Atlassian account settings
- Click "Create API token"
- Give it a name (e.g., "MCP Server")
- Copy the token and add it to your
.env
file
To use this MCP server with Claude Code, you need to configure it in your MCP settings.
Set up the server with environment variables:
# Export environment variables
export JIRA_HOST="https://your-company.atlassian.net"
export JIRA_EMAIL="your-email@company.com"
export JIRA_API_TOKEN="your-api-token"
export JIRA_DEFAULT_PROJECT="PROJ"
# Run Claude Code with the MCP server
claude --mcp "node /absolute/path/to/mcp-jira-server/dist/index.js"
Create a .env
file in the server directory and run:
cd /path/to/mcp-jira-server
claude --mcp "node dist/index.js"
# or use the convenient run script:
claude --mcp "./run.sh"
Add the server to your Claude Code settings file (~/.claude/settings.json
):
{
"mcpServers": [
{
"name": "jira",
"command": "node",
"args": ["/absolute/path/to/mcp-jira-server/dist/index.js"],
"env": {
"JIRA_HOST": "https://your-company.atlassian.net",
"JIRA_EMAIL": "your-email@company.com",
"JIRA_API_TOKEN": "your-api-token",
"JIRA_DEFAULT_PROJECT": "PROJ"
}
}
]
}
Create a new bug in project PROJ with high priority about login issues
Create a story "Implement user authentication" with 5 story points and assign it to john@example.com
Create task "Database backup" with dueDate "next week" and originalEstimate "4h"
Update PROJ-123 with startDate "tomorrow" and dueDate "+14d"
Create issue "Quarterly review" with dueDate "31.3.2025" and originalEstimate "2 days"
Create an epic "Database Migration" in project PROJ with subtasks "Backup current data" and "Migrate schema"
Create a subtask "Review code" for parent issue PROJ-123
Create issue type "รkol" in project PROJ
Create task for epic PPC-48 with summary "Database backup"
Find all open bugs assigned to me
Search for issues in project PROJ with label "urgent" that are not done
Search issues due before "next week" in project PROJ
Find issues created after "2024-12-01" and updated after "yesterday"
Search for overdue issues: dueBefore "today" and status != "Done"
Update PROJ-123 to add story points 8
Transition PROJ-456 to "In Progress"
Link PROJ-123 to PROJ-456 as "blocks"
Note: Epic-Story relationships use the epicLink field, not regular issue links:
Update PROJ-456 with epicLink "PROJ-100" # Links story to epic
Generate a standup report for john@example.com
Help me plan the sprint for project PROJ
Create release notes for version 2.0 in project PROJ
The server can work with any Jira configuration:
Leave custom field IDs unset in .env
and the server will automatically detect them based on field names.
If auto-detection doesn't work, configure custom field IDs in your .env
:
JIRA_FIELD_STORY_POINTS=customfield_10001
JIRA_FIELD_ACCEPTANCE_CRITERIA=customfield_10002
JIRA_FIELD_EPIC_LINK=customfield_10003
Use the diagnose-fields
tool to find the correct field IDs for your Jira instance:
diagnose-fields project:"PROJ" issueType:"Story"
Enable automatic test ticket creation for stories:
AUTO_CREATE_TEST_TICKETS=true
npm run dev
npm run typecheck
npm run lint
- Automatic support for localized Jira instances (Czech, English, etc.)
- Issue type names can be in any language (e.g., "Task", "รkol", "Aufgabe")
- Priority names support localization (e.g., "High", "Vysokรก", "Hoch")
- Special support for Czech Jira configurations
- Works with any Jira language setting
- Flexible date input formats:
- ISO: "2024-12-31"
- European: "31.12.2024" or "31/12/2024"
- Relative: "today", "tomorrow", "next week", "+7d", "+2w", "+1m"
- Czech: "dnes", "zรญtra", "pลรญลกtรญ tรฝden"
- Time tracking support:
- Estimates: "2h", "1d 4h", "3 days", "2 hodiny"
- Automatic format conversion
- Date-based searching and filtering
The server automatically retries failed requests with exponential backoff (up to 3 attempts).
- Empty response handling for Jira transitions
- Detailed error messages with context
- Graceful degradation for missing features
Enable debug logging to see detailed information:
DEBUG=* claude --mcp "./run.sh"
# or specific to jira-mcp:
DEBUG=jira-mcp claude --mcp "./run.sh"
The server tests the connection on startup and provides clear error messages if authentication fails.
Automatically converts plain text and markdown to Jira's ADF format for rich text fields.
This MCP server is designed to work with any Jira instance regardless of:
- Language settings (English, Czech, German, etc.)
- Custom field configurations
- Project-specific settings
Best Practices:
- Use
get-fields
to see available issue types in your language - Use
diagnose-fields
to find custom field IDs - Create issues using the exact issue type names from your Jira
-
Authentication Failed
- Verify your API token is correct
- Ensure your email matches your Atlassian account
- Check that your Jira instance URL includes
https://
-
Project Not Found
- Verify you have access to the project
- Check the project key is correct (case-sensitive)
-
Custom Fields Not Working
- Use
diagnose-fields
tool to find the correct field IDs for your project - Use
get-fields
tool to see all available fields - Custom field IDs typically start with
customfield_
- Some fields may not be available for certain issue types (e.g., labels on Epics)
- Epic Link field ID varies between Jira instances
- Use
-
Link Type Not Found
- Use
get-link-types
tool to see available link types - Link types are case-sensitive in Jira API
- The server will try to match case-insensitively
- Epic-Story relationships use epicLink field, not regular issue links
- Use
-
Epic-Story Linking Issues
- Run
diagnose-fields
for project and "Story" issue type - Update JIRA_FIELD_EPIC_LINK in .env with the correct field ID
- Restart the MCP server after updating .env
- Run
Set the DEBUG
environment variable for verbose logging:
DEBUG=* claude --mcp "./run.sh"
# or
DEBUG=jira-mcp claude --mcp "./run.sh"
Logs are output to stderr and include:
- Connection status
- API requests and responses
- Error details with context
- Performance metrics
See CONTRIBUTING.md for development guidelines.
MIT License - see LICENSE file for details
For issues and feature requests, please use the GitHub issue tracker.