loading…
Search for a command to run...
loading…
MCP server for Jira API integration - supports Jira Cloud
MCP server for Jira API integration - supports Jira Cloud
A Model Context Protocol (MCP) server for Jira API integration. This server enables AI assistants like Claude to interact with Jira Cloud instances for issue management, search, comments, workflow transitions, and attachment handling.
npm install -g @nexus2520/jira-mcp-server
Clone the repository:
git clone https://github.com/pdogra1299/jira-mcp-server.git
cd jira-mcp-server
Install dependencies:
pnpm install
Build the project:
pnpm run build
JIRA_EMAIL: Your Atlassian account emailJIRA_API_TOKEN: Your Jira API tokenJIRA_BASE_URL: Your Jira instance URL (e.g., https://yourcompany.atlassian.net)Add the following to your Claude Desktop MCP settings file:
Location:
~/Library/Application Support/Claude/claude_desktop_config.json%APPDATA%\Claude\claude_desktop_config.json~/.config/Claude/claude_desktop_config.jsonConfiguration (if installed via npm):
{
"mcpServers": {
"jira": {
"command": "npx",
"args": [
"-y",
"@nexus2520/jira-mcp-server"
],
"env": {
"JIRA_EMAIL": "[email protected]",
"JIRA_API_TOKEN": "your-api-token-here",
"JIRA_BASE_URL": "https://yourcompany.atlassian.net"
}
}
}
}
Configuration (if built from source):
{
"mcpServers": {
"jira": {
"command": "node",
"args": [
"/absolute/path/to/jira-mcp-server/build/index.js"
],
"env": {
"JIRA_EMAIL": "[email protected]",
"JIRA_API_TOKEN": "your-api-token-here",
"JIRA_BASE_URL": "https://yourcompany.atlassian.net"
}
}
}
}
This server exposes 5 compound tools — each with an action parameter that selects the operation. This design reduces the token overhead of tool definitions by ~50% compared to 16 flat tools, leaving more context for actual work.
| Tool | Actions | Description |
|---|---|---|
jira_issues |
get create update assign |
Full issue lifecycle management |
jira_search |
issues projects users create_metadata |
Search and discovery |
jira_comments |
get add |
Read and write comments |
jira_workflow |
get_transitions transition |
Status transitions |
jira_attachments |
list get_content upload delete |
File attachments |
jira_issuesManage the full lifecycle of Jira issues.
Required: action
| Action | Description | Required params | Optional params |
|---|---|---|---|
get |
Fetch full issue details | issueKey |
— |
create |
Create a new issue | projectKey, summary, issueType |
description, priority, assignee, labels, customFields |
update |
Edit fields on an existing issue | issueKey |
summary, description, priority, assignee, labels, customFields |
assign |
Set or clear the assignee | issueKey, assignee |
— |
Tips:
jira_search with action=create_metadata before creating issues to discover required custom fields and allowed values.assignee: "-1" to unassign an issue.description accepts plain text or an Atlassian Document Format (ADF) object.customFields is a key-value map: {"customfield_10000": "value"}.Examples:
Get details for PROJ-123
Create a Bug in project PROJ with summary "Login button broken"
Update PROJ-123 priority to High
Assign PROJ-123 to [email protected]
jira_searchSearch and discover Jira resources.
Required: action
| Action | Description | Required params | Optional params |
|---|---|---|---|
issues |
Search issues via JQL | jql |
maxResults |
projects |
List all accessible projects | — | maxResults |
users |
Find users by name or email | query |
maxResults |
create_metadata |
Get field requirements for creating issues | projectKey |
issueType |
Common JQL examples:
project = PROJ AND status = Open
assignee = currentUser() AND status != Done
priority = High AND created >= -7d
Tips:
create_metadata before jira_issues create to understand what fields are required for a project/issue type.users to look up account IDs for assignments — pass the returned account ID or email to jira_issues assign.jira_commentsRead and write comments on a Jira issue.
Required: action, issueKey
| Action | Description | Required params |
|---|---|---|
get |
Fetch all comments on an issue | — |
add |
Post a new comment | comment |
comment accepts plain text or an ADF object.
Examples:
Get all comments on PROJ-123
Add a comment to PROJ-123: "Fixed in PR #456"
jira_workflowManage issue status transitions.
Required: action, issueKey
| Action | Description | Required params | Optional params |
|---|---|---|---|
get_transitions |
List available status transitions | — | — |
transition |
Move issue to a new status | transitionId |
comment |
Tip: Always call get_transitions first — transition IDs vary per project and issue type. The transitionId from the response is what you pass to transition.
Examples:
Get available transitions for PROJ-123
Move PROJ-123 to "In Progress" (use get_transitions first to find the ID)
jira_attachmentsManage file attachments on Jira issues.
Required: action
| Action | Description | Required params | Optional params |
|---|---|---|---|
list |
List all attachments with metadata | issueKey |
— |
get_content |
Download and return file content | attachmentId |
mimeType |
upload |
Attach a local file to an issue | issueKey, filePath |
fileName |
delete |
Remove an attachment by ID | attachmentId |
— |
Content types returned by get_content:
text/*, application/json, application/xml): returned as readable textimage/*): returned as base64 — Claude will render them inlineTips:
list first to get attachment IDs before calling get_content or delete.fileName in upload overrides the filename shown in Jira (defaults to the file's basename).Examples:
List attachments on PROJ-123
Get the content of attachment 136904
Upload /tmp/report.pdf to PROJ-123
Delete attachment 136904
This server uses the Jira REST API v3.
Make sure you've set the environment variables in your MCP configuration.
JIRA_BASE_URL doesn't have a trailing slashThe API token uses the permissions of the user who created it. Make sure your account has the necessary permissions for the actions you're trying to perform.
MIT
Parth Dogra
Feel free to open issues or submit pull requests for improvements!
Добавь это в claude_desktop_config.json и перезапусти Claude Desktop.
{
"mcpServers": {
"jira-mcp-server": {
"command": "npx",
"args": [
"-y",
"@nexus2520/jira-mcp-server"
]
}
}
}