jira-dev-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@jira-dev-mcp search for issues about user authentication"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
jira-dev-mcp
A local MCP server for Jira Cloud-driven development. Connects Claude Code, OpenCode, Codex, and other MCP clients to your Jira instance — search issues, read task details, parse attachments, and map Jira projects to local repositories.
Features
Search Jira issues with natural language or raw JQL
Read full task details: description, subtasks, changelog, comments, attachments
Download and parse CSV, XLSX, XLS, PDF attachments via Python
Images and binary files passed to AI client as base64
Map Jira project keys to local repository paths
OAuth 2.0 (3LO) browser-based login — no manual token management
Auto-refresh OAuth tokens before expiry
Post comments on Jira issues with clickable URL response
Token-only comment confirmation: confirm pending comments with just the token, no need to re-send body
Edit existing comments with the same confirmation flow
Batch download all attachments from an issue in a single call with optional MIME filter
Auto-retry on transient API errors (429/503) with Retry-After header support
Rich ADF parsing: code blocks, tables, mentions, links, panels, and more
Multi-paragraph and fenced code block support in posted comments
Typed error hierarchy for programmatic error handling
OAuth callback port auto-fallback when default port is busy
Read and write Jira access
Related MCP server: Jira MCP Server
Install
npm install -g jira-dev-mcpAuthentication
Option A: OAuth 2.0 (Recommended)
Just run:
jira-dev loginA browser window opens for Jira authorization. Tokens are saved to ~/.jira-dev/config.json and auto-refreshed. No manual Client ID or Secret required.
Advanced: To use your own OAuth app, set
JIRA_CLIENT_IDandJIRA_CLIENT_SECRETbefore runningjira-dev login.
Option B: API Token (Basic Auth)
export JIRA_BASE_URL="https://your-domain.atlassian.net"
export JIRA_EMAIL="you@example.com"
export JIRA_TOKEN="your-jira-api-token"Optional — store token in macOS Keychain instead of env var:
security add-generic-password -a "$USER" -s "jira-dev-mcp:JIRA_TOKEN" -w "your-token"MCP Client Configuration
Auto-register (easiest)
jira-dev setupThis creates or updates ~/.claude.json (Claude Code) and ~/.opencode/config.json (OpenCode) automatically.
If an existing config file contains invalid JSON, jira-dev setup now fails with an explicit error instead of silently skipping it.
Manual — Claude Code (~/.claude.json)
{
"mcpServers": {
"jira": {
"command": "jira-dev",
"args": ["server"]
}
}
}Manual — OpenCode / Codex
{
"mcpServers": {
"jira": {
"command": "jira-dev",
"args": ["server"]
}
}
}With environment variables
{
"mcpServers": {
"jira": {
"command": "jira-mcp-server",
"env": {
"JIRA_BASE_URL": "https://your-domain.atlassian.net",
"JIRA_EMAIL": "you@example.com",
"JIRA_TOKEN": "your-token"
}
}
}
}Tools
Tool | Description |
| Search by keywords or JQL |
| Read full issue details |
| Download and parse a single attachment |
| Download all attachments in one call; optional MIME filter (e.g. |
| List issues assigned to you |
| Post a comment; confirm with token only (no body re-send needed) |
| Edit an existing comment; same token-only confirm flow |
| Map a Jira project to a local repo path |
| Get the local path for a project |
| Full investigation workflow: reads issue + comments + attachments, selects type-aware template (Bug/Story/Task), and guides step-by-step through explore → plan → implement → post comment |
CLI Commands
jira-dev status # Show current auth mode, token state, and mapped projects
jira-dev doctor # Run environment and config health checks
jira-dev upgrade # Upgrade jira-dev-mcp from npm
jira-dev setup # Register jira-dev into supported MCP clients
jira-dev read AT-123 # Read issue details from the terminal
jira-dev comment AT-123 "Done" # Post a comment directly (bypasses manual mode)
jira-dev download AT-123 # Download all attachments
jira-dev download AT-123 spec.xlsx # Download a single attachment
jira-dev config set-comment-mode manual # Require confirmation before posting commentsDevelopment Workflow
Standard usage with Claude Code
Step 1 — One-time setup: map your project
jira_set_project_path(jiraProject: "AT", localPath: "/path/to/your/repo")Step 2 — Find your task
jira_my_tasks(status: "In Progress")or search by keyword / JQL:
jira_search_issues(query: "login timeout bug")
jira_search_issues(query: "project = AT AND sprint in openSprints()")Step 3 — Read the task
jira_read_task(key: "AT-123", includeComments: true)Returns: description, subtasks, changelog, comments, attachment list, and the local repo path.
Step 4 — Download attachments if needed
jira_download_all_attachments(key: "AT-123")
jira_download_all_attachments(key: "AT-123", mime_filter: "image/")
jira_download_attachment(key: "AT-123", filename: "spec.xlsx")Use jira_download_all_attachments to grab everything in one call, or filter by MIME type. Use jira_download_attachment for a single file. CSV / XLSX / XLS / PDF are parsed and returned as structured text. Images are returned as base64.
Step 5 — AI implements the fix
With the task details and local repo path in context, ask Claude Code to:
Explain the root cause
Propose a plan with impact scope
Implement the fix
Write test cases
Project Path Mapping
Map a Jira project key to a local repo so the AI knows where to look:
jira_set_project_path(jiraProject: "AT", localPath: "/Users/you/projects/my-app")Python Dependency (Attachment Parsing)
Python 3 is required for CSV, XLSX, XLS, and PDF parsing. For XLS and PDF, additional packages are auto-installed on first use, or install manually:
python3 -m pip install -r $(npm root -g)/jira-dev-mcp/scripts/requirements.txtSecurity
OAuth tokens stored at
~/.jira-dev/config.jsonwith600permissionsAPI tokens: prefer env vars or macOS Keychain over config file
Attachment size and MIME type allowlist enforced before download
OAuth client credentials injected at build time — never committed to source
Secrets are never written to logs
Local Development
git clone https://github.com/nianyi778/jira-dev-mcp.git
cd jira-dev-mcp
npm install
npm run generate-defaults # required before first build (uses env vars or empty placeholders)
npm test
npm run buildInspect tools interactively:
npx @modelcontextprotocol/inspector node dist/index.jsLicense
MIT
Available Tools
10 toolsjira_add_commentB
Post a comment on a Jira issue. Returns the comment URL so you can verify it directly.
Inputs: key, body, confirm_token.
jira_analyze_taskA
Full investigation and fix workflow for a Jira issue. Accepts an issue key (AT-123) or full browse URL. Reads the issue, prior comments, linked issues, and attachments; detects duplicate analysis (idempotency); selects a type-aware template (Bug/Story/Task); and provides step-by-step SOP: explore code → plan → baseline test → implement → build verify → post analysis comment. Use this instead of jira_read_task when you want to drive the full workflow end-to-end.
Inputs: input (required), auto_comment, response_format, comment_max_results.
jira_download_all_attachmentsA
Download all attachments from a Jira issue in a single call. Optionally filter by MIME type (e.g. "image/" for images only). Returns all files with their content inline. Use this instead of multiple jira_download_attachment calls.
Inputs: key (required), mime_filter, response_format.
jira_download_attachmentA
Download an attachment from a Jira issue. Text files (txt, md, json, log) are returned inline. CSV, XLS, XLSX, PDF are parsed by Python and returned as structured text. Images and other binary files are returned as base64.
Inputs: key (required), filename (required), response_format.
jira_edit_commentA
Edit an existing Jira comment. In manual mode, returns a preview first and requires confirm_token to apply the update.
Inputs: key, body, commentId, confirm_token.
jira_get_project_pathB
Get the local repository path mapped to a Jira project key.
Inputs: jiraProject (required), response_format.
jira_my_tasksA
List Jira issues assigned to the currently authenticated user, optionally filtered by status.
Inputs: status, startAt, maxResults, response_format.
jira_read_taskA
Read raw details of a Jira issue (description, subtasks, changelog, labels, priority, parent, attachments). Data-only — does NOT guide analysis or post comments. Use jira_analyze_task when you need the full investigation workflow.
Inputs: input (required), commentStartAt, includeComments, response_format, +3 more.
jira_search_issuesA
Search Jira issues using natural language keywords or raw JQL. Returns issue keys, summaries, statuses, and assignees.
Inputs: query (required), startAt, maxResults, response_format.
jira_set_project_pathA
Map a Jira project key to a local repository path. This enables jira_read_task to include the local path hint for code exploration.
Inputs: localPath (required), jiraProject (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Every tool has a clearly distinct purpose. The closest pair, jira_read_task and jira_analyze_task, is explicitly disambiguated: one is data-only, the other is a full workflow. Downloading single vs all attachments is also clearly distinguished.
All tools follow a jira_verb_noun pattern except jira_my_tasks, which breaks the convention by using a possessive adjective instead of a verb. Otherwise, naming is highly consistent and predictable.
With 10 tools, the set is well-scoped for a Jira dev integration. Each tool satisfies a distinct need, from project path mapping to comments, search, attachments, and a comprehensive analysis workflow.
The tool surface covers core read, search, comment, attachment, and workflow-driven analysis. Minor gaps exist—no issue creation, status transition, or assignment modification—but these are outside the apparent focus on investigation and commenting.
Maintenance
Related MCP Connectors
A MCP server built for developers enabling Git based project management with project and personal…
MCP Server for JFrog, providing tools for development and artifact management.
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
An MCP server that provides read access to your cloud storage providers, bank accounts and more.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server that enables interaction with Jira to fetch issues by key and perform JQL searches. It provides a foundation for integrating multiple work systems, with planned support for Slack and GitHub.1,065 npmMIT
- AlicenseNot gradedqualityDmaintenanceCustom MCP server for interacting with Jira, supporting issue management, search, and project operations.1,065 npm2MIT
- FlicenseNot gradedqualityDmaintenanceA local MCP server that wraps the Jira REST API v3, enabling issue management, searching, commenting, and transitions for openmrs.atlassian.net via Basic Auth.1-
- AlicenseNot gradedqualityDmaintenanceA lightweight MCP server that exposes Jira issue operations (get, search, create) as tools for AI clients like Claude.1,677 npmISC