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.
⚠️ Security Note: Never commit your API tokens! All credentials should be in .env
files or environment variables.
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 resultsgit clone https://github.com/tom28881/JIRA_MCP.git cd JIRA_MCP
.env
file from the example:.env
:JIRA_HOST=https://your-company.atlassian.net JIRA_EMAIL=your-email@company.com JIRA_API_TOKEN=your-api-token JIRA_DEFAULT_PROJECT=PROJ
.env
fileTo use this MCP server with Claude Code, you need to configure it in your MCP settings.
Option 1: Using Environment VariablesSet 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"Option 2: Using .env File
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"Option 3: Add to Claude Code Settings
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
Setting Dates and Time Estimates
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"
Creating Epics with Subtasks
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:
Option 1: Auto-Detection (Recommended)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=trueRunning in Development Mode
The server automatically retries failed requests with exponential backoff (up to 3 attempts).
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.
📄 Atlassian Document FormatAutomatically converts plain text and markdown to Jira's ADF format for rich text fields.
Working with Different Jira ConfigurationsThis MCP server is designed to work with any Jira instance regardless of:
Best Practices:
get-fields
to see available issue types in your languagediagnose-fields
to find custom field IDsAuthentication Failed
https://
Project Not Found
Custom Fields Not Working
diagnose-fields
tool to find the correct field IDs for your projectget-fields
tool to see all available fieldscustomfield_
Link Type Not Found
get-link-types
tool to see available link typesEpic-Story Linking Issues
diagnose-fields
for project and "Story" issue typeSet 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:
See CONTRIBUTING.md for development guidelines.
MIT License - see LICENSE file for details
For issues and feature requests, please use the GitHub issue tracker.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4