MCP server by harbouli
jira-mcp
A Model Context Protocol server for Jira Cloud, written in TypeScript/Node.js. It lets an MCP client (Claude Desktop, Claude Code, etc.) create, search, manage, and update Jira issues and tasks.
Features
| Area | Tools |
| --- | --- |
| Issues CRUD | jira_get_issue, jira_create_issue, jira_update_issue, jira_delete_issue |
| Workflow | jira_get_transitions, jira_transition_issue, jira_assign_issue |
| Search | jira_search (JQL) |
| Comments | jira_get_comments, jira_add_comment |
| Worklogs | jira_get_worklogs, jira_add_worklog |
| Projects & boards | jira_list_projects, jira_get_project, jira_list_boards, jira_list_sprints, jira_search_users |
Set READ_ONLY_MODE=true to disable every write tool.
Setup
npm install
npm run build
Create a Jira API token at https://id.atlassian.com/manage-profile/security/api-tokens, then set the environment variables (see .env.example):
JIRA_URL— e.g.https://your-domain.atlassian.netJIRA_EMAIL— the account email for the tokenJIRA_API_TOKEN— the token value
Run
JIRA_URL=... JIRA_EMAIL=... JIRA_API_TOKEN=... npm start
The server speaks MCP over stdio.
Use with Claude Desktop / Claude Code
Add to your MCP client config (e.g. claude_desktop_config.json):
{
"mcpServers": {
"jira": {
"command": "node",
"args": ["/absolute/path/to/jira-mcp-node/dist/index.js"],
"env": {
"JIRA_URL": "https://your-domain.atlassian.net",
"JIRA_EMAIL": "you@example.com",
"JIRA_API_TOKEN": "your_api_token_here"
}
}
}
}
Notes
- Targets Jira Cloud (REST API v3 + Agile API v1.0). Rich-text fields use Atlassian Document Format (ADF); the server converts plain text for you.
- Assignments use Atlassian
accountId— usejira_search_usersto look one up. - All tool errors are returned as readable text so the model can recover.