Jira Integration
STDIOSpeak to Jira in natural language to get information and modify your project.
Speak to Jira in natural language to get information and modify your project.
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:
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: "[email protected]"; }
// 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 = '[email protected]' 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:
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:
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=[email protected] 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:
~/Library/Application Support/Claude/claude_desktop_config.json
%APPDATA%/Claude/claude_desktop_config.json
~/.config/Claude/claude_desktop_config.json
Add the Jira MCP server to your configuration:
{ "mcpServers": { "jira-server": { "name": "jira-server", "command": "/path/to/node", "args": ["/path/to/jira-server/build/index.js"], "cwd": "/path/to/jira-server", "env": { "JIRA_HOST": "your-jira-instance.atlassian.net", "JIRA_EMAIL": "[email protected]", "JIRA_API_TOKEN": "your-api-token" } } } }
Replace /path/to/jira-server
with the absolute path to your cloned repository.
Replace /path/to/node
with the absolute path to your Node.js executable (you can usually find this by running which node
or where node
in your terminal).
Using the direct path to the Node.js executable and the built JavaScript file (build/index.js
after running npm run build
) is recommended for reliability.
Restart Claude Desktop to apply the changes.
To use this Jira MCP server with Cursor:
Ensure the server is built: Run npm run build
in the Jira-MCP-Server
directory to create the necessary build/index.js
file.
Locate or create Cursor's MCP configuration file:
.cursor/mcp.json
in your project's root directory.~/.cursor/mcp.json
in your home directory.Add the Jira MCP server configuration to mcp.json
:
{ "mcpServers": { "jira-mcp-server": { "command": "node", // Or provide the absolute path to your Node.js executable "args": [ "/path/to/your/Jira-MCP-Server/build/index.js" // Absolute path to the server's built index.js ], "cwd": "/path/to/your/Jira-MCP-Server", // Absolute path to the Jira-MCP-Server directory "env": { "JIRA_HOST": "your-jira-instance.atlassian.net", "JIRA_EMAIL": "[email protected]", // Your Jira email "JIRA_API_TOKEN": "your-api-token" // Your Jira API token } } // You can add other MCP server configurations here } }
/path/to/your/Jira-MCP-Server
with the correct absolute path to where you cloned the Jira-MCP-Server
repository.node
is not in your system's PATH or you prefer an absolute path, replace "node"
with the full path to your Node.js executable (e.g., /usr/local/bin/node
or C:\Program Files\nodejs\node.exe
).env
section.Restart Cursor to apply the changes.
To make interacting with Jira smoother, you can define your default Jira project and user identifier in Cursor's rules. This helps Cursor's AI understand your context without you needing to specify it in every prompt.
Create or edit your Cursor Rules file (e.g., in your project .cursor/rules.json
or global ~/.cursor/rules.json
(the exact file and method for rules might vary, check Cursor documentation for "Rules" or "Context Management")). Add entries like:
As an AI assistant, when I am asked about Jira tasks:
- Assume the primary Jira project key is 'YOUR_PROJECT_KEY_HERE'.
- Assume 'my assigned tasks' or tasks assigned to 'me' refer to the Jira user with the email '[email protected]' (or your Jira Account ID).
You can then use these in your JQL queries, for example: project = YOUR_PROJECT_KEY_HERE AND assignee = '[email protected]'.
Replace YOUR_PROJECT_KEY_HERE
and [email protected]
with your actual details.
Once configured (especially with Cursor Rules for context), you can ask Cursor:
"Using Jira MCP, list my assigned tasks. Then, based on these tasks, come up with an implementation plan and work schedule."
If you haven't set up rules, or need to specify a different project or user, you'd be more explicit:
"Using Jira MCP, list tasks assigned to '[email protected]' in project 'PROJECT_KEY'. Then, based on these tasks, come up with an implementation plan and work schedule."
Cursor's AI will use the Jira MCP server to fetch the tasks, and then proceed with the planning and scheduling request.
To install Jira MCP Server for Claude Desktop automatically via Smithery:
npx -y @smithery/cli install @George5562/Jira-MCP-Server --client claude
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=[email protected] JIRA_API_TOKEN=your-api-token
Build the project:
npm run build
Start the server:
npm start