Jira MCP Server
README.md
<p align="center">
<img src="https://cdn.jsdelivr.net/npm/mcp-jira-cloud@latest/assets/logo.svg" alt="Jira MCP Logo" width="120" height="120">
</p>
<h1 align="center">Jira MCP Server</h1>
<p align="center">
<strong>Supercharge your AI assistant with seamless Jira integration</strong>
</p>
<p align="center">
<a href="https://www.npmjs.com/package/mcp-jira-cloud">
<img src="https://img.shields.io/npm/v/mcp-jira-cloud?style=flat-square&color=cb3837&logo=npm" alt="npm version">
</a>
<a href="https://www.npmjs.com/package/mcp-jira-cloud">
<img src="https://img.shields.io/npm/dm/mcp-jira-cloud?style=flat-square&color=blue" alt="npm downloads">
</a>
<a href="https://github.com/tezaswiraj7222/jira-mcp/blob/master/LICENSE">
<img src="https://img.shields.io/npm/l/mcp-jira-cloud?style=flat-square&color=green" alt="license">
</a>
<a href="https://github.com/tezaswiraj7222/jira-mcp">
<img src="https://img.shields.io/github/stars/tezaswiraj7222/jira-mcp?style=flat-square&logo=github" alt="GitHub stars">
</a>
</p>
<p align="center">
<a href="https://modelcontextprotocol.io/">
<img src="https://img.shields.io/badge/MCP-Compatible-8A2BE2?style=flat-square" alt="MCP Compatible">
</a>
<a href="https://bun.sh/">
<img src="https://img.shields.io/badge/Bun-1.0%2B-fbf0df?style=flat-square&logo=bun&logoColor=black" alt="Bun 1.0+">
</a>
<a href="https://nodejs.org/">
<img src="https://img.shields.io/badge/Node.js-18%2B-339933?style=flat-square&logo=node.js&logoColor=white" alt="Node.js 18+">
</a>
<a href="https://www.typescriptlang.org/">
<img src="https://img.shields.io/badge/TypeScript-5.0%2B-3178C6?style=flat-square&logo=typescript&logoColor=white" alt="TypeScript 5.0+">
</a>
</p>
<p align="center">
<a href="#-quick-start">Quick Start</a> •
<a href="#-features">Features</a> •
<a href="#%EF%B8%8F-configuration">Configuration</a> •
<a href="#-available-tools">Tools</a> •
<a href="#-usage-examples">Examples</a> •
<a href="#-troubleshooting">Troubleshooting</a>
</p>
---
A **Model Context Protocol (MCP)** server that enables AI assistants like **GitHub Copilot** and **Claude** to interact with your Jira Cloud instance. Search issues, manage tickets, log work, and more — all through natural language conversation.
## 🎯 Why Use This Package?
| Without MCP | With Jira MCP |
|-------------|---------------|
| Switch between IDE and browser | Stay in your coding environment |
| Manual copy-paste of issue details | AI fetches context automatically |
| Learn JQL syntax | Natural language queries |
| Click through Jira UI | Voice/text commands |
| Context switching kills productivity | Seamless workflow integration |
### Supported AI Assistants
| Assistant | Status |
|-----------|--------|
| GitHub Copilot (VS Code) | ✅ Fully Supported |
| Claude Desktop | ✅ Fully Supported |
| Cursor | ✅ Fully Supported |
| Windsurf | ✅ Fully Supported |
| Any MCP-compatible client | ✅ Fully Supported |
## ✨ Features
<table>
<tr>
<td>
### 🔐 Authentication
- Basic Auth (API Token)
- OAuth 2.0 with auto-refresh
- Secure credential storage via Keytar
</td>
<td>
### 📋 Issue Management
- Full CRUD operations
- Workflow transitions
- Search with JQL
</td>
</tr>
<tr>
<td>
### 🏃 Agile/Scrum
- Sprint management (create, start, complete)
- Board views (Scrum & Kanban)
- Backlog & ranking
</td>
<td>
### 🔗 Relationships
- Issue linking (blocks, relates, duplicates)
- Watchers & voting
- Epic management
</td>
</tr>
<tr>
<td>
### ⏱️ Time Tracking
- Log work on issues
- View work logs
- Query worklogs by user & date range
- Flexible time formats
</td>
<td>
### 🗄️ Filters & Metadata
- Create/manage saved filters
- Field metadata access
- Component & version management
</td>
</tr>
<tr>
<td>
### 📊 Bulk Operations
- Bulk edit issues
- Bulk watch/unwatch
- Async operation tracking
</td>
<td>
### 📈 Dashboards & JQL
- Dashboard management
- JQL validation & autocomplete
- Labels management
</td>
</tr>
</table>
<p align="center">
<strong>91 Tools</strong> for comprehensive Jira management
</p>
## 📋 Prerequisites
### Runtime Environment (choose ONE)
<table>
<tr>
<th width="50%">🥟 Bun (Easier for beginners)</th>
<th width="50%">📦 Node.js (Traditional)</th>
</tr>
<tr>
<td>
**Simpler installation, faster execution**
**Install Bun (one command):**
Windows (PowerShell as Admin):
```powershell
irm bun.sh/install.ps1 | iex
```
macOS / Linux:
```bash
curl -fsSL https://bun.sh/install | bash
```
</td>
<td>
**More widely used, larger ecosystem**
**Requirements:**
- Node.js ≥18.0.0 ([Download](https://nodejs.org/))
- npm ≥8.0.0 (included with Node.js)
</td>
</tr>
</table>
### Jira Requirements
| Requirement | Notes |
|-------------|-------|
| **Jira Cloud** | Jira Server/Data Center not supported |
| **Atlassian Account** | With access to your Jira instance |
| **API Token** | [Generate here](https://id.atlassian.com/manage-profile/security/api-tokens) |
### MCP-Compatible Client (one of)
- **VS Code** with GitHub Copilot extension
- **Claude Desktop** app
- **Cursor** IDE
- **Windsurf** IDE
- Any other MCP-compatible AI assistant
## 🚀 Quick Start
### Installation
<table>
<tr>
<th width="50%">🥟 Using Bun (Recommended)</th>
<th width="50%">📦 Using npm</th>
</tr>
<tr>
<td>
```bash
# Run directly (no install needed)
bunx mcp-jira-cloud@latest
# Or install globally
bun install -g mcp-jira-cloud
```
</td>
<td>
```bash
# Run directly (no install needed)
npx -y mcp-jira-cloud@latest
# Or install globally
npm install -g mcp-jira-cloud
```
</td>
</tr>
</table>
### 💡 CLI Help
To see all available options and configuration details:
```bash
npx -y mcp-jira-cloud@latest --help
```
To launch the interactive setup helper (generates MCP config JSON):
```bash
npx -y mcp-jira-cloud@latest --config
```
To verify your Jira connectivity and credentials:
```bash
npx -y mcp-jira-cloud@latest --verify
```
To enable diagnostic logging (logs API traffic to stderr):
```bash
npx -y mcp-jira-cloud@latest --verbose
```
### Get Your API Token
1. Go to [Atlassian API Tokens](https://id.atlassian.com/manage-profile/security/api-tokens)
2. Click **Create API token**
3. Copy the token
---
#### 📘 VS Code (GitHub Copilot)
Create or edit `.vscode/mcp.json` in your workspace:
<details>
<summary><strong>🥟 Using Bun (recommended for beginners)</strong></summary>
```json
{
"servers": {
"jira": {
"type": "stdio",
"command": "bunx",
"args": ["mcp-jira-cloud@latest"],
"env": {
"JIRA_BASE_URL": "https://your-domain.atlassian.net",
"JIRA_EMAIL": "your-email@example.com",
"JIRA_API_TOKEN": "your-api-token"
}
}
}
}
```
</details>
<details>
<summary><strong>📦 Using npx</strong></summary>
```json
{
"servers": {
"jira": {
"type": "stdio",
"command": "npx",
"args": ["-y", "mcp-jira-cloud@latest"],
"env": {
"JIRA_BASE_URL": "https://your-domain.atlassian.net",
"JIRA_EMAIL": "your-email@example.com",
"JIRA_API_TOKEN": "your-api-token"
}
}
}
}
```
</details>
<details>
<summary><strong>⚡ After global install</strong></summary>
```json
{
"servers": {
"jira": {
"type": "stdio",
"command": "jira-mcp",
"args": [],
"env": {
"JIRA_BASE_URL": "https://your-domain.atlassian.net",
"JIRA_EMAIL": "your-email@example.com",
"JIRA_API_TOKEN": "your-api-token"
}
}
}
}
```
</details>
---
#### 🤖 Claude Desktop
Add to your Claude configuration (`claude_desktop_config.json`):
<details>
<summary><strong>🥟 Using Bun (recommended for beginners)</strong></summary>
```json
{
"mcpServers": {
"jira": {
"command": "bunx",
"args": ["mcp-jira-cloud@latest"],
"env": {
"JIRA_BASE_URL": "https://your-domain.atlassian.net",
"JIRA_EMAIL": "your-email@example.com",
"JIRA_API_TOKEN": "your-api-token"
}
}
}
}
```
</details>
<details>
<summary><strong>📦 Using npx</strong></summary>
```json
{
"mcpServers": {
"jira": {
"command": "npx",
"args": ["-y", "mcp-jira-cloud@latest"],
"env": {
"JIRA_BASE_URL": "https://your-domain.atlassian.net",
"JIRA_EMAIL": "your-email@example.com",
"JIRA_API_TOKEN": "your-api-token"
}
}
}
}
```
</details>
---
#### ⚡ Cursor
Create `.cursor/mcp.json` in your project or home directory:
<details>
<summary><strong>🥟 Using Bun (recommended for beginners)</strong></summary>
```json
{
"mcpServers": {
"jira": {
"command": "bunx",
"args": ["mcp-jira-cloud@latest"],
"env": {
"JIRA_BASE_URL": "https://your-domain.atlassian.net",
"JIRA_EMAIL": "your-email@example.com",
"JIRA_API_TOKEN": "your-api-token"
}
}
}
}
```
</details>
<details>
<summary><strong>📦 Using npx</strong></summary>
```json
{
"mcpServers": {
"jira": {
"command": "npx",
"args": ["-y", "mcp-jira-cloud@latest"],
"env": {
"JIRA_BASE_URL": "https://your-domain.atlassian.net",
"JIRA_EMAIL": "your-email@example.com",
"JIRA_API_TOKEN": "your-api-token"
}
}
}
}
```
</details>
<details>
<summary><strong>⚡ After global install</strong></summary>
```json
{
"mcpServers": {
"jira": {
"command": "jira-mcp",
"args": [],
"env": {
"JIRA_BASE_URL": "https://your-domain.atlassian.net",
"JIRA_EMAIL": "your-email@example.com",
"JIRA_API_TOKEN": "your-api-token"
}
}
}
}
```
</details>
---
#### 🔧 Windsurf
Add to your Windsurf MCP configuration:
<details>
<summary><strong>🥟 Using Bun (recommended for beginners)</strong></summary>
```json
{
"mcpServers": {
"jira": {
"command": "bunx",
"args": ["mcp-jira-cloud@latest"],
"env": {
"JIRA_BASE_URL": "https://your-domain.atlassian.net",
"JIRA_EMAIL": "your-email@example.com",
"JIRA_API_TOKEN": "your-api-token"
}
}
}
}
```
</details>
<details>
<summary><strong>📦 Using npx</strong></summary>
```json
{
"mcpServers": {
"jira": {
"command": "npx",
"args": ["-y", "mcp-jira-cloud@latest"],
"env": {
"JIRA_BASE_URL": "https://your-domain.atlassian.net",
"JIRA_EMAIL": "your-email@example.com",
"JIRA_API_TOKEN": "your-api-token"
}
}
}
}
```
</details>
<details>
<summary><strong>⚡ After global install</strong></summary>
```json
{
"mcpServers": {
"jira": {
"command": "jira-mcp",
"args": [],
"env": {
"JIRA_BASE_URL": "https://your-domain.atlassian.net",
"JIRA_EMAIL": "your-email@example.com",
"JIRA_API_TOKEN": "your-api-token"
}
}
}
}
```
</details>
## ⚙️ Configuration
### Environment Variables
#### Basic Authentication (Recommended)
| Variable | Description | Required |
|----------|-------------|:--------:|
| `JIRA_BASE_URL` | Your Jira instance URL (e.g., `https://company.atlassian.net`) | ✅ |
| `JIRA_EMAIL` | Your Atlassian account email | ✅ |
| `JIRA_API_TOKEN` | API token from Atlassian | ✅ |
#### OAuth 2.0 Authentication
<details>
<summary>Click to expand OAuth configuration</summary>
For OAuth authentication:
1. Create an OAuth 2.0 app in the [Atlassian Developer Console](https://developer.atlassian.com/console/myapps/)
2. Configure the required scopes:
- `read:jira-work`
- `read:jira-user`
- `write:jira-work`
- `offline_access`
| Variable | Description | Required |
|----------|-------------|:--------:|
| `JIRA_OAUTH_CLIENT_ID` | OAuth Client ID | ✅ |
| `JIRA_OAUTH_CLIENT_SECRET` | OAuth Client Secret | ✅ |
| `JIRA_OAUTH_ACCESS_TOKEN` | Access token | ✅ |
| `JIRA_OAUTH_REFRESH_TOKEN` | Refresh token | ⬜ |
| `JIRA_CLOUD_ID` | Your Jira Cloud ID | ✅ |
</details>
#### Optional Settings
| Variable | Description | Default |
|----------|-------------|---------|
| `JIRA_ACCEPTANCE_CRITERIA_FIELD` | Custom field ID for acceptance criteria | — |
## 🛠️ Available Tools
> **91 tools** organised into 11 categories
### 🔐 Authentication (7 tools)
| Tool | Description |
|------|-------------|
| `jira_auth_status` | Check current authentication status |
| `jira_whoami` | Get current user's Jira profile |
| `jira_clear_auth` | Clear stored credentials |
| `jira_oauth_get_auth_url` | Generate OAuth authorisation URL |
| `jira_oauth_exchange_code` | Exchange OAuth code for tokens |
| `jira_oauth_refresh` | Manually refresh OAuth token |
| `jira_oauth_list_sites` | List accessible Jira sites |
### 📝 Issue CRUD (5 tools)
| Tool | Description |
|------|-------------|
| `jira_create_issue` | Create a new issue with full field support |
| `jira_update_issue` | Update issue fields (partial update supported) |
| `jira_assign_issue` | Assign or unassign a user |
| `jira_get_transitions` | Get available workflow transitions |
| `jira_transition_issue` | Move issue through workflow states |
### 🔍 Issue Query (6 tools)
| Tool | Description |
|------|-------------|
| `jira_get_issue` | Get full details of a Jira issue (labels, status, priority, assignee, components, …); pass `fields` to return a specific subset |
| `jira_get_issue_summary` | Get summary, description, and acceptance criteria |
| `jira_search_issues` | Search issues with JQL, returning full field details (pass `fields` for a specific subset) |
| `jira_search_issues_summary` | Search with minimal fields (key, summary, status) |
| `jira_get_my_open_issues` | Get your open/in-progress issues |
| `jira_resolve` | Smart routing tool for common intents |
### 💬 Comments & Work Logs (5 tools)
| Tool | Description |
|------|-------------|
| `jira_get_issue_comments` | Get comments on an issue |
| `jira_add_comment` | Add a comment to an issue |
| `jira_add_worklog` | Log time spent on an issue |
| `jira_get_issue_worklogs` | Get work logs for an issue |
| `jira_get_user_worklogs` | Get worklogs by user and date range |
### ⚙️ Configuration & Metadata (9 tools)
| Tool | Description |
|------|-------------|
| `jira_list_projects` | List accessible Jira projects |
| `jira_get_project` | Get project details and metadata |
| `jira_get_issue_types` | Get available issue types |
| `jira_get_priorities` | Get priority levels |
| `jira_get_statuses` | Get available statuses |
| `jira_get_components` | Get project components |
| `jira_get_versions` | Get project versions |
| `jira_search_users` | Search for Jira users |
| `jira_get_changelog` | Get issue change history |
<details>
<summary><strong>🏃 Agile/Sprint Tools (15 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `jira_get_boards` | List Scrum and Kanban boards |
| `jira_get_board` | Get board details |
| `jira_get_board_configuration` | Get board configuration (columns, estimation) |
| `jira_get_sprints` | Get sprints for a board |
| `jira_get_sprint` | Get sprint details |
| `jira_create_sprint` | Create a new sprint |
| `jira_update_sprint` | Update sprint details |
| `jira_start_sprint` | Start a future sprint |
| `jira_complete_sprint` | Complete an active sprint |
| `jira_get_sprint_issues` | Get issues in a sprint |
| `jira_move_issues_to_sprint` | Move issues to a sprint |
| `jira_get_backlog_issues` | Get backlog issues for a board |
| `jira_move_issues_to_backlog` | Move issues to backlog |
| `jira_rank_issues` | Change issue ranking |
</details>
<details>
<summary><strong>🔗 Issue Relationships (9 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `jira_get_issue_links` | Get linked issues |
| `jira_create_issue_link` | Link two issues together |
| `jira_get_link_types` | Get available link types |
| `jira_get_watchers` | Get issue watchers |
| `jira_add_watcher` | Add a watcher to an issue |
| `jira_remove_watcher` | Remove a watcher |
| `jira_get_votes` | Get issue vote count |
| `jira_add_vote` | Vote for an issue |
| `jira_remove_vote` | Remove your vote |
</details>
<details>
<summary><strong> Epic Management (4 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `jira_get_epics` | Get epics for a board |
| `jira_get_epic_issues` | Get issues belonging to an epic |
| `jira_move_issues_to_epic` | Move issues to an epic |
| `jira_remove_issues_from_epic` | Remove issues from an epic |
</details>
<details>
<summary><strong>🗂️ Field Metadata (3 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `jira_get_fields` | Get all available fields (including custom) |
| `jira_get_create_metadata` | Get metadata for creating issues |
| `jira_get_edit_metadata` | Get metadata for editing issues |
</details>
<details>
<summary><strong>🗄️ Filters (6 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `jira_get_filters` | Search saved filters |
| `jira_get_filter` | Get filter details |
| `jira_create_filter` | Create a new saved filter |
| `jira_update_filter` | Update an existing filter |
| `jira_get_my_filters` | Get filters owned by you |
| `jira_get_favourite_filters` | Get favourite filters |
</details>
<details>
<summary><strong>⚡ Bulk Operations (4 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `jira_bulk_edit_issues` | Edit multiple issues at once (labels, assignee, priority, etc.) |
| `jira_bulk_watch_issues` | Add watchers to multiple issues |
| `jira_bulk_unwatch_issues` | Remove watchers from multiple issues |
| `jira_get_bulk_operation_progress` | Track async bulk operation progress |
</details>
<details>
<summary><strong>📊 Dashboard Management (5 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `jira_get_dashboards` | Get dashboards (filter by favourite/owned) |
| `jira_search_dashboards` | Search dashboards by name, owner, etc. |
| `jira_get_dashboard` | Get dashboard details by ID |
| `jira_get_dashboard_gadgets` | Get all gadgets on a dashboard |
| `jira_add_dashboard_gadget` | Add a gadget to a dashboard |
</details>
<details>
<summary><strong>📎 Enhanced Attachments (4 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `jira_get_attachments` | Get issue attachments |
| `jira_upload_attachment` | Upload a file to an issue |
| `jira_get_attachment_metadata` | Get attachment metadata by ID |
| `jira_get_attachment_content` | Get attachment download URL |
</details>
<details>
<summary><strong>🏷️ Labels Management (2 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `jira_get_all_labels` | Get all labels in the Jira instance |
| `jira_add_labels` | Add, set, or remove labels on an issue |
</details>
<details>
<summary><strong>🔎 JQL Tools (3 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `jira_autocomplete_jql` | Get autocomplete suggestions for JQL fields |
| `jira_validate_jql` | Validate JQL queries for syntax errors |
| `jira_parse_jql` | Parse JQL into abstract syntax tree |
</details>
<details>
<summary><strong>⏱️ Time Tracking Reports (4 tools)</strong></summary>
| Tool | Description |
|------|-------------|
| `jira_get_updated_worklog_ids` | Get worklog IDs created/updated since a date |
| `jira_get_worklogs_by_ids` | Get full worklog details by IDs (batch up to 1000) |
| `jira_get_user_worklogs` | Get all worklogs for a user in a date range with summary |
| `jira_get_deleted_worklog_ids` | Get IDs of deleted worklogs for audit purposes |
</details>
### 🛡️ Phase 14: Code Quality & Security
This release underwent a comprehensive audit to ensure best practices and security:
| Category | Status | Details |
|----------|:------:|---------|
| **API Version** | ✅ | All 91 tools use Jira REST API v3 (latest) |
| **Agile API** | ✅ | Sprint/Board tools use Jira Agile API v1.0 |
| **Deprecated APIs** | ✅ | All deprecated endpoints migrated to modern alternatives |
| **Security Vulnerabilities** | ✅ | 0 vulnerabilities (axios & qs patched) |
| **OAuth 2.0 Support** | ✅ | Full OAuth 2.0 (3LO) with auto-refresh |
| **Credential Storage** | ✅ | OS-level encryption via Keytar |
| **Input Validation** | ✅ | Zod v4 schema validation on all parameters |
| **URL Encoding** | ✅ | All dynamic path parameters properly encoded |
| **Error Handling** | ✅ | Consistent error handling across all endpoints |
## 💡 Usage Examples
Once configured, interact with Jira through natural conversation:
### Issue Management
```
👤 "What's the status of PROJ-123?"
🤖 Fetches and displays issue details, status, and assignee
👤 "Create a bug in PROJ for 'Login button not working'"
🤖 Creates a new bug issue and returns the issue key
👤 "Assign PROJ-456 to john@example.com"
🤖 Assigns the issue to the specified user
👤 "Move PROJ-789 to 'In Progress'"
🤖 Transitions the issue to the new status
```
### Sprint & Agile
```
👤 "Show me the active sprint for board 123"
🤖 Displays current sprint details with dates and goal
👤 "Move PROJ-123 and PROJ-124 to sprint 456"
🤖 Moves the issues to the specified sprint
👤 "What's in the backlog for the PROJ board?"
🤖 Lists all backlog issues with priorities
```
### Time Tracking
```
👤 "Log 2 hours on PROJ-456 for code review"
🤖 Creates work log entry with description
👤 "How much time has been logged on PROJ-789?"
🤖 Retrieves and summarises work logs
```
### Collaboration
```
👤 "Link PROJ-123 as blocking PROJ-456"
🤖 Creates a "blocks" relationship between issues
👤 "Add me as a watcher on PROJ-789"
🤖 Adds you to the issue's watch list
👤 "Show all issues in epic PROJ-100"
🤖 Lists all child issues of the epic
```
## 🔧 Troubleshooting
<details>
<summary><strong>🥟 Bun Installation Issues</strong></summary>
**Windows (PowerShell as Administrator):**
```powershell
# If irm fails, try:
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
irm bun.sh/install.ps1 | iex
```
**macOS/Linux:**
```bash
# If curl fails, check your internet connection or try:
brew install oven-sh/bun/bun # macOS with Homebrew
```
**Verify Installation:**
```bash
bun --version # Should show 1.x.x
```
</details>
<details>
<summary><strong>❌ "MISSING_AUTH" Error</strong></summary>
Ensure your environment variables are correctly set. Verify with `jira_auth_status`.
**Checklist:**
- ✅ `JIRA_BASE_URL` includes `https://` and is your full Jira domain
- ✅ `JIRA_EMAIL` matches your Atlassian account email
- ✅ `JIRA_API_TOKEN` is a valid, non-expired token
</details>
<details>
<summary><strong>❌ "401 Unauthorised" Error</strong></summary>
Your credentials are invalid or expired.
**For Basic Auth:**
- Verify your API token at [Atlassian API Tokens](https://id.atlassian.com/manage-profile/security/api-tokens)
- Ensure the token hasn't been revoked
**For OAuth:**
- Try refreshing the token with `jira_oauth_refresh`
- Re-authenticate if the refresh token has expired
</details>
<details>
<summary><strong>❌ "403 Forbidden" Error</strong></summary>
You don't have permission to access the requested resource.
**Solutions:**
- Check your Jira permissions for the project
- Contact your Jira administrator
- Verify your OAuth scopes include required permissions
</details>
<details>
<summary><strong>❌ "404 Not Found" Error</strong></summary>
The issue or project doesn't exist, or you don't have access to view it.
**Solutions:**
- Verify the issue key is correct (e.g., `PROJ-123`)
- Check if you have access to the project
- Ensure the issue hasn't been deleted or moved
</details>
<details>
<summary><strong>❌ npx/bunx Using Old Version</strong></summary>
Clear the cache to ensure you get the latest version:
**npm:**
```bash
npx -y --package=mcp-jira-cloud@latest mcp-jira-cloud
# or clear cache:
npm cache clean --force
```
**Bun:**
```bash
bunx --bun mcp-jira-cloud@latest
# or clear cache:
bun pm cache rm
```
</details>
## 📦 Package Information
| Attribute | Value |
|-----------|-------|
| Package name | [`mcp-jira-cloud`](https://www.npmjs.com/package/mcp-jira-cloud) |
| Latest Version |  |
| License | [MIT](LICENSE) |
| Runtime | Bun ≥1.0.0 or Node.js ≥18.0.0 |
| TypeScript | ≥5.0.0 |
| Module | ES Modules |
| Tools | **91** |
### Dependencies
| Package | Purpose |
|---------|---------|
| [`@modelcontextprotocol/sdk`](https://www.npmjs.com/package/@modelcontextprotocol/sdk) | MCP protocol implementation |
| [`axios`](https://www.npmjs.com/package/axios) | HTTP client for Jira API |
| [`keytar`](https://www.npmjs.com/package/keytar) | Secure credential storage |
| [`zod`](https://www.npmjs.com/package/zod) | Schema validation |
## 🆕 What's New
### 🐛 v4.3.2 (Latest)
| Fix | Description |
|-----|-------------|
| 🏷️ **Full field passthrough** | `jira_get_issue` & `jira_search_issues` now return every requested field — `labels`, `status`, `priority`, `assignee`, `components`, `fixVersions`, custom fields, etc. — instead of only `key`/`summary`/`description` ([#2](https://github.com/tezaswiraj7222/jira-mcp/issues/2)) |
| 📋 **Useful defaults** | When `fields` is omitted, the full-detail tools now return a broad default set; lean summary tools keep their trimmed output |
| 🧹 **Compact, no fabrication** | Nested objects are normalized to friendly values (`status`→name, `assignee`→display name, …) and unrequested fields are never invented |
---
### 🚀 v4.3.0
| Feature | Description |
|---------|-------------|
| 🧩 **Modular Architecture** | Tools refactored into modular, organized files (`src/tools/`) |
| 🚀 **Expanded Toolset** | Now 91 tools, including new Agile, Worklog, and Metadata functions |
| 🛡️ **Improved Tooling** | Standardized authentication (`withClient`) & annotation presets |
| ✅ **Test Suite** | Integrated Vitest for robust unit testing across the codebase |
---
### 🥟 v4.2.0
| Feature | Description |
|---------|-------------|
| 🥟 **Bun Support** | Run with `bunx mcp-jira-cloud@latest` - easier for beginners |
| 📖 **Better Docs** | Simplified prerequisites and configuration examples |
---
### 🔍 v4.1.0
| Feature | Description |
|---------|-------------|
| 🎯 **Improved Tool Descriptions** | Better trigger phrases, negative guidance, and cross-references for AI agents |
| 📋 **Prerequisites Section** | Clear requirements documented in README |
---
### 🚀 v4.0.0
| Change | Description |
|--------|-------------|
| ⚠️ **Breaking** | `jira_get_worklogs` renamed to `jira_get_issue_worklogs` for clarity |
| 🐛 **Fix** | Removed duplicate tool registration that caused startup errors |
**Total tools: 74**
---
### 📦 v3.1.0
| Feature | Description |
|---------|-------------|
| 🔍 **User Worklogs Query** | New `jira_get_user_worklogs` tool to query worklogs by user and date range |
| 📊 **Time Summary** | Returns total time logged with formatted hours/minutes |
---
### ⚠️ v3.0.0 (Breaking Changes)
<table>
<tr><td>
**Removed for Safety:**
- `jira_delete_issue`
- `jira_delete_sprint`
- `jira_delete_attachment`
- `jira_delete_filter`
- `jira_delete_issue_link`
</td><td>
**Improvements:**
- 🔒 Security patches (axios, qs)
- 🔄 Deprecated API migration
- ✅ 0 known vulnerabilities
</td></tr>
</table>
---
<details>
<summary><strong>📅 v2.x Changelog</strong></summary>
### v2.2.0
- **Time Tracking Reports** - Get user worklogs for any date range with summaries
### v2.1.0
- **Dashboard Management** - View and manage Jira dashboards and gadgets
- **Enhanced Attachments** - Upload attachments, get metadata and content
- **Labels Management** - Get all labels, bulk add/remove/set labels
- **JQL Tools** - Autocomplete, validate, and parse JQL queries
### v2.0.0
- **Issue CRUD** - Create, update issues with full field support
- **Workflow Transitions** - Move issues through workflow states
- **Agile/Scrum** - Complete sprint and board management (15 tools)
- **Issue Linking** - Blocks, relates, duplicates relationships
- **Watchers & Voting** - Collaboration features
- **Epic Management** - Organise issues under epics
- **Filters** - Create and manage saved JQL filters
- **Metadata** - Access field configurations and create metadata
- **Bulk Operations** - Edit, watch, unwatch multiple issues at once
</details>
## 🔒 Security
- Credentials are stored securely via system keychain (Keytar)
- OAuth tokens auto-refresh before expiration
- No credentials are logged or exposed in error messages
- See [SECURITY.md](SECURITY.md) for our security policy
## 🤝 Contributing
Contributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
1. Fork the repository
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
3. Commit your changes (`git commit -m 'Add amazing feature'`)
4. Push to the branch (`git push origin feature/amazing-feature`)
5. Open a Pull Request
## 📄 Changelog
See [CHANGELOG.md](CHANGELOG.md) for a list of changes in each version.
## 📜 License
This project is licensed under the **MIT License** — see the [LICENSE](LICENSE) file for details.
## 🔗 Links
| Resource | Link |
|----------|------|
| GitHub | [github.com/tezaswiraj7222/jira-mcp](https://github.com/tezaswiraj7222/jira-mcp) |
| npm | [npmjs.com/package/mcp-jira-cloud](https://www.npmjs.com/package/mcp-jira-cloud) |
| Issues | [Report a bug](https://github.com/tezaswiraj7222/jira-mcp/issues) |
| MCP Protocol | [modelcontextprotocol.io](https://modelcontextprotocol.io/) |
| Jira API | [Jira REST API v3](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/) |
---
<p align="center">
Made with ❤️ by <a href="https://github.com/tezaswiraj7222">Tezaswi Raj (github: tezaswiraj7222)</a>
</p>
<p align="center">
<a href="https://github.com/sponsors/tezaswiraj7222">
<img src="https://img.shields.io/badge/Sponsor-❤️-ea4aaa?style=for-the-badge" alt="Sponsor">
</a>
</p>
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessSlow