Comprehensive TypeScript MCP server for Jira with 20+ tools covering complete project management workflow: issue CRUD, sprint management, comments/history, attachments, batch operations.
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
npm install
npm run build
.env
file from the example:cp .env.example .env
.env
:JIRA_HOST=https://your-company.atlassian.net
[email protected]
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.
Set up the server with environment variables:
# Export environment variables
export JIRA_HOST="https://your-company.atlassian.net"
export JIRA_EMAIL="[email protected]"
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": "[email protected]",
"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 [email protected]
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 [email protected]
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
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.
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:
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.