Speak to Jira in natural language to get information on and modify your project. Use it with Claude Desktop in combination with a custom README that you will create with project information, so that you can delegate PM tasks, (e.g. given yoou have a list of my team and their specialities, assign any new issue to the most relevant person).
Built using the Model Context Protocol.
The server enables:
- Project creation and configuration
- Issue and subtask management
- Issue linking and dependencies
- Automated issue workflows
Required environment variables:
JIRA_HOST
: Your Jira instance hostnameJIRA_EMAIL
: Your Jira account emailJIRA_API_TOKEN
: API token from https://id.atlassian.com/manage-profile/security/api-tokens
// Get user's account ID by email
{
email: "user@example.com";
}
// List all available issue types
// Returns: id, name, description, subtask status
// No parameters required
// List all available issue link types
// Returns: id, name, inward/outward descriptions
// No parameters required
// Get all issues in a project
{
projectKey: "PROJECT"
}
// Get issues with JQL filtering
{
projectKey: "PROJECT",
jql: "status = 'In Progress' AND assignee = currentUser()"
}
// Get issues assigned to user
{
projectKey: "PROJECT",
jql: "assignee = 'user@example.com' ORDER BY created DESC"
}
// Create a standard issue
{
projectKey: "PROJECT",
summary: "Issue title",
issueType: "Task", // or "Story", "Bug", etc.
description: "Detailed description",
assignee: "accountId", // from get_user tool
labels: ["frontend", "urgent"],
components: ["ui", "api"],
priority: "High"
}
// Create a subtask
{
parent: "PROJECT-123",
projectKey: "PROJECT",
summary: "Subtask title",
issueType: "Subtask",
description: "Subtask details",
assignee: "accountId"
}
// Update issue fields
{
issueKey: "PROJECT-123",
summary: "Updated title",
description: "New description",
assignee: "accountId",
status: "In Progress",
priority: "High"
}
// Create issue link
{
linkType: "Blocks", // from list_link_types
inwardIssueKey: "PROJECT-124", // blocked issue
outwardIssueKey: "PROJECT-123" // blocking issue
}
// Delete single issue
{
issueKey: "PROJECT-123"
}
// Delete issue with subtasks
{
issueKey: "PROJECT-123",
deleteSubtasks: true
}
// Delete multiple issues
{
issueKeys: ["PROJECT-123", "PROJECT-124"]
}
The description field supports markdown-style formatting:
- Use blank lines between paragraphs
- Use "- " for bullet points
- Use "1. " for numbered lists
- Use headers ending with ":" (followed by blank line)
Example:
Task Overview:
This task involves implementing new features:
- Feature A implementation
- Feature B testing
Steps:
1. Design component
2. Implement logic
3. Add tests
Acceptance Criteria:
- All tests passing
- Documentation updated
The server provides detailed error messages for:
- Invalid issue keys
- Missing required fields
- Permission issues
- API rate limits
-
Clone the repository:
git clone https://github.com/George5562/Jira-MCP-Server.git cd Jira-MCP-Server
-
Install dependencies:
npm install
-
Configure environment variables: Create a
.env
file in the root directory:JIRA_HOST=your-instance.atlassian.net JIRA_EMAIL=your-email@example.com JIRA_API_TOKEN=your-api-token
-
Build the project:
npm run build
-
Start the server:
npm start
To use this MCP server with Claude Desktop:
-
Locate your Claude Desktop configuration file:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:
%APPDATA%/Claude/claude_desktop_config.json
- Linux:
~/.config/Claude/claude_desktop_config.json
- macOS:
-
Add the Jira MCP server to your configuration:
{ "mcp_servers": [ { "name": "jira-server", "command": "npm start", "cwd": "/path/to/jira-server", "env": { "JIRA_HOST": "your-instance.atlassian.net", "JIRA_EMAIL": "your-email@example.com", "JIRA_API_TOKEN": "your-api-token" } } ] }
Replace
/path/to/jira-server
with the absolute path to your cloned repository. -
Restart Claude Desktop to apply the changes.