angelescostarelliExtendeal/jira-mcp-server
If you are the rightful owner of jira-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to dayong@mcphub.com.
A Model Context Protocol (MCP) server that integrates with Jira API for issue retrieval and search.
Jira MCP Server
A Model Context Protocol (MCP) server that provides seamless integration with Jira API, allowing you to retrieve and search Jira issues through various tools.
Features
- Get specific Jira issues by issue key
- Search issues using JQL (Jira Query Language)
- Get issues by epic with optional filtering
- Get project issues with status and assignee filters
- Get user-assigned issues with status filtering
- Rich issue formatting with all relevant fields
- Error handling with detailed error messages
Prerequisites
- Node.js 18+
- Yarn or npm
- Jira Cloud instance with API access
- Jira API token
Installation
-
Clone or download this repository
-
Install dependencies:
yarn install # or npm install -
Copy the environment template:
cp .env.example .env -
Configure your Jira credentials in
.env:JIRA_DOMAIN=https://yourcompany.atlassian.net JIRA_EMAIL=your-email@company.com JIRA_API_TOKEN=your-api-token-here JIRA_PROJECT_KEY=PROJ JIRA_ISSUE_TYPE=Task
Getting Your Jira API Token
- Go to Atlassian Account Settings
- Click "Create API token"
- Give it a label (e.g., "MCP Server")
- Copy the generated token and paste it in your
.envfile
Building and Running
Development
yarn dev
# or
npm run dev
Production
yarn build
yarn start
# or
npm run build
npm start
MCP Configuration
To use this server with an MCP client (like Claude Desktop), add it to your MCP configuration:
{
"mcpServers": {
"jira": {
"command": "node",
"args": ["dist/index.js"],
"cwd": "/path/to/jira-mcp-server"
}
}
}
Replace /path/to/jira-mcp-server with the actual path to your server directory.
For Claude Desktop, this configuration goes in:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%/Claude/claude_desktop_config.json
Available Tools
1. get_jira_issue
Get a specific Jira issue by its key.
Parameters:
issueKey(string, required): The Jira issue key (e.g., "PROJ-123")
Example:
{
"name": "get_jira_issue",
"arguments": {
"issueKey": "PROJ-123"
}
}
2. search_jira_issues
Search Jira issues using JQL (Jira Query Language).
Parameters:
jql(string, required): JQL query stringmaxResults(number, optional): Maximum results to return (default: 50)fields(string, optional): Comma-separated fields to include
Example:
{
"name": "search_jira_issues",
"arguments": {
"jql": "project = PROJ AND status = 'In Progress'",
"maxResults": 25
}
}
3. get_issues_by_epic
Get all issues belonging to a specific epic with optional filters.
Parameters:
epicKey(string, required): The epic issue keypriority(string, optional): Filter by priorityassignee(string, optional): Filter by assigneelabels(array, optional): Filter by labels
Example:
{
"name": "get_issues_by_epic",
"arguments": {
"epicKey": "PROJ-100",
"priority": "High",
"assignee": "john.doe@company.com"
}
}
4. get_project_issues
Get issues from a specific project.
Parameters:
projectKey(string, required): The project keystatus(string, optional): Filter by statusassignee(string, optional): Filter by assigneemaxResults(number, optional): Maximum results (default: 50)
Example:
{
"name": "get_project_issues",
"arguments": {
"projectKey": "PROJ",
"status": "To Do",
"maxResults": 100
}
}
5. get_user_assigned_issues
Get issues assigned to a specific user.
Parameters:
assignee(string, required): User email, displayName, or accountIdstatus(string, optional): Filter by statusmaxResults(number, optional): Maximum results (default: 50)
Example:
{
"name": "get_user_assigned_issues",
"arguments": {
"assignee": "john.doe@company.com",
"status": "In Progress"
}
}
Response Format
All tools return issue data in the following format:
{
"key": "PROJ-123",
"summary": "Issue summary",
"description": "Issue description (plain text)",
"status": "In Progress",
"assignee": "John Doe",
"priority": "High",
"issueType": "Story",
"labels": ["frontend", "urgent"],
"created": "1/15/2024",
"updated": "1/20/2024",
"url": "https://yourcompany.atlassian.net/browse/PROJ-123"
}
JQL Examples
Here are some useful JQL queries you can use with the search_jira_issues tool:
- Get all open issues:
status != Done - Get high priority bugs:
issuetype = Bug AND priority = High - Get issues updated in the last week:
updated >= -1w - Get issues assigned to you:
assignee = currentUser() - Get issues in specific sprint:
sprint = "Sprint 1" - Complex query:
project = PROJ AND status IN ("To Do", "In Progress") AND assignee != EMPTY ORDER BY priority DESC
Error Handling
The server provides detailed error messages for common issues:
- Invalid issue keys
- Authentication failures
- Invalid JQL syntax
- Network connectivity issues
- Permission errors
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
License
ISC License
Support
For issues and questions:
- Check the Jira API documentation
- Verify your API token and permissions
- Test your JQL queries in Jira's issue search
- Check the server logs for detailed error messages