mcp-jira-cloud 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +139 -0
- package/LICENSE +21 -0
- package/README.md +452 -0
- package/SECURITY.md +139 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2942 -0
- package/dist/index.js.map +1 -0
- package/package.json +111 -0
package/CHANGELOG.md
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [2.0.0] - 2026-02-15
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- **Phase 1: Core Issue CRUD** (14 new tools)
|
|
13
|
+
- `jira_create_issue` - Create new issues with full field support
|
|
14
|
+
- `jira_update_issue` - Update issues with partial field support
|
|
15
|
+
- `jira_delete_issue` - Delete issues with safety confirmation
|
|
16
|
+
- `jira_assign_issue` - Assign/unassign users
|
|
17
|
+
- `jira_get_transitions` - Get available workflow transitions
|
|
18
|
+
- `jira_transition_issue` - Move issues through workflow
|
|
19
|
+
- `jira_get_issue_types` - Get available issue types
|
|
20
|
+
- `jira_get_priorities` - Get priority levels
|
|
21
|
+
- `jira_get_statuses` - Get available statuses
|
|
22
|
+
- `jira_get_components` - Get project components
|
|
23
|
+
- `jira_get_versions` - Get project versions
|
|
24
|
+
- `jira_search_users` - Search for Jira users
|
|
25
|
+
- `jira_get_changelog` - Get issue history
|
|
26
|
+
|
|
27
|
+
- **Phase 2: Agile Tools** (16 new tools)
|
|
28
|
+
- `jira_get_boards` - List Scrum/Kanban boards
|
|
29
|
+
- `jira_get_board` - Get board details
|
|
30
|
+
- `jira_get_board_configuration` - Get board configuration
|
|
31
|
+
- `jira_get_sprints` - List sprints for a board
|
|
32
|
+
- `jira_get_sprint` - Get sprint details
|
|
33
|
+
- `jira_create_sprint` - Create new sprints
|
|
34
|
+
- `jira_update_sprint` - Update sprint details
|
|
35
|
+
- `jira_start_sprint` - Start a future sprint
|
|
36
|
+
- `jira_complete_sprint` - Complete an active sprint
|
|
37
|
+
- `jira_delete_sprint` - Delete sprints with confirmation
|
|
38
|
+
- `jira_get_sprint_issues` - Get issues in a sprint
|
|
39
|
+
- `jira_move_issues_to_sprint` - Move issues to a sprint
|
|
40
|
+
- `jira_get_backlog_issues` - Get backlog issues
|
|
41
|
+
- `jira_move_issues_to_backlog` - Move issues to backlog
|
|
42
|
+
- `jira_rank_issues` - Change issue ranking
|
|
43
|
+
|
|
44
|
+
- **Phase 3: Issue Relationships** (11 new tools)
|
|
45
|
+
- `jira_get_issue_links` - Get linked issues
|
|
46
|
+
- `jira_create_issue_link` - Link issues together
|
|
47
|
+
- `jira_delete_issue_link` - Remove issue links
|
|
48
|
+
- `jira_get_link_types` - Get available link types
|
|
49
|
+
- `jira_get_watchers` - Get issue watchers
|
|
50
|
+
- `jira_add_watcher` - Add watchers to issues
|
|
51
|
+
- `jira_remove_watcher` - Remove watchers
|
|
52
|
+
- `jira_get_votes` - Get issue vote count
|
|
53
|
+
- `jira_add_vote` - Vote for an issue
|
|
54
|
+
- `jira_remove_vote` - Remove vote from issue
|
|
55
|
+
|
|
56
|
+
- **Phase 4: Attachments** (2 new tools)
|
|
57
|
+
- `jira_get_attachments` - Get issue attachments
|
|
58
|
+
- `jira_delete_attachment` - Delete attachments
|
|
59
|
+
|
|
60
|
+
- **Phase 5: Epic Management** (4 new tools)
|
|
61
|
+
- `jira_get_epics` - Get epics for a board
|
|
62
|
+
- `jira_get_epic_issues` - Get issues in an epic
|
|
63
|
+
- `jira_move_issues_to_epic` - Move issues to epic
|
|
64
|
+
- `jira_remove_issues_from_epic` - Remove issues from epic
|
|
65
|
+
|
|
66
|
+
- **Phase 6: Fields and Metadata** (3 new tools)
|
|
67
|
+
- `jira_get_fields` - Get all available fields
|
|
68
|
+
- `jira_get_create_metadata` - Get metadata for creating issues
|
|
69
|
+
- `jira_get_edit_metadata` - Get metadata for editing issues
|
|
70
|
+
|
|
71
|
+
- **Phase 7: Filters** (7 new tools)
|
|
72
|
+
- `jira_get_filters` - Search saved filters
|
|
73
|
+
- `jira_get_filter` - Get filter details
|
|
74
|
+
- `jira_create_filter` - Create new filters
|
|
75
|
+
- `jira_update_filter` - Update existing filters
|
|
76
|
+
- `jira_delete_filter` - Delete filters with confirmation
|
|
77
|
+
- `jira_get_my_filters` - Get filters owned by current user
|
|
78
|
+
- `jira_get_favourite_filters` - Get favourite filters
|
|
79
|
+
|
|
80
|
+
### Changed
|
|
81
|
+
|
|
82
|
+
- Version bumped to 2.0.0 (major feature release)
|
|
83
|
+
- Helper functions for field building (`buildIssueFields`, `buildUpdateOperations`)
|
|
84
|
+
- Improved TypeScript strict mode compliance
|
|
85
|
+
- Total tools: 57 (up from 18)
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
|
|
89
|
+
## [1.0.0] - 2026-02-15
|
|
90
|
+
|
|
91
|
+
### Added
|
|
92
|
+
|
|
93
|
+
- Initial release
|
|
94
|
+
- **Authentication**
|
|
95
|
+
- Basic Auth support (email + API token)
|
|
96
|
+
- OAuth 2.0 support with automatic token refresh
|
|
97
|
+
- Keytar integration for secure credential storage
|
|
98
|
+
- Multiple authentication status tools
|
|
99
|
+
|
|
100
|
+
- **Issue Management**
|
|
101
|
+
- `jira_get_issue` - Get full issue details
|
|
102
|
+
- `jira_get_issue_summary` - Get issue summary with acceptance criteria
|
|
103
|
+
- `jira_search_issues` - Search with JQL (full results)
|
|
104
|
+
- `jira_search_issues_summary` - Search with minimal fields
|
|
105
|
+
- `jira_get_my_open_issues` - Get current user's open tickets
|
|
106
|
+
- `jira_resolve` - Smart routing for common intents
|
|
107
|
+
|
|
108
|
+
- **Comments**
|
|
109
|
+
- `jira_get_issue_comments` - Retrieve issue comments
|
|
110
|
+
- `jira_add_comment` - Add comments to issues
|
|
111
|
+
|
|
112
|
+
- **Work Logs**
|
|
113
|
+
- `jira_add_worklog` - Log time spent on issues
|
|
114
|
+
- `jira_get_worklogs` - Retrieve work logs from issues
|
|
115
|
+
|
|
116
|
+
- **Projects**
|
|
117
|
+
- `jira_list_projects` - List accessible projects
|
|
118
|
+
- `jira_get_project` - Get project details
|
|
119
|
+
|
|
120
|
+
- **User**
|
|
121
|
+
- `jira_whoami` - Get current user profile
|
|
122
|
+
|
|
123
|
+
### Security
|
|
124
|
+
|
|
125
|
+
- Credentials stored securely via Keytar
|
|
126
|
+
- `.gitignore` and `.npmignore` configured to protect sensitive data
|
|
127
|
+
- OAuth tokens auto-refresh before expiration
|
|
128
|
+
|
|
129
|
+
---
|
|
130
|
+
|
|
131
|
+
## [Unreleased]
|
|
132
|
+
|
|
133
|
+
### Planned
|
|
134
|
+
|
|
135
|
+
- Attachment upload support
|
|
136
|
+
- Bulk operations
|
|
137
|
+
- Dashboard management
|
|
138
|
+
- Advanced JQL builder
|
|
139
|
+
- Webhook integration
|
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Tezaswi Raj (github: tezaswi7222)
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,452 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/tezaswi7222/jira-mcp/main/assets/logo.png" alt="Jira MCP Logo" width="120" height="120">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h1 align="center">Jira MCP Server</h1>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<strong>Supercharge your AI assistant with seamless Jira integration</strong>
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
<p align="center">
|
|
12
|
+
<a href="https://www.npmjs.com/package/mcp-jira-cloud">
|
|
13
|
+
<img src="https://img.shields.io/npm/v/mcp-jira-cloud?style=flat-square&color=cb3837&logo=npm" alt="npm version">
|
|
14
|
+
</a>
|
|
15
|
+
<a href="https://www.npmjs.com/package/mcp-jira-cloud">
|
|
16
|
+
<img src="https://img.shields.io/npm/dm/mcp-jira-cloud?style=flat-square&color=blue" alt="npm downloads">
|
|
17
|
+
</a>
|
|
18
|
+
<a href="https://github.com/tezaswi7222/jira-mcp/blob/main/LICENSE">
|
|
19
|
+
<img src="https://img.shields.io/npm/l/mcp-jira-cloud?style=flat-square&color=green" alt="license">
|
|
20
|
+
</a>
|
|
21
|
+
<a href="https://github.com/tezaswi7222/jira-mcp">
|
|
22
|
+
<img src="https://img.shields.io/github/stars/tezaswi7222/jira-mcp?style=flat-square&logo=github" alt="GitHub stars">
|
|
23
|
+
</a>
|
|
24
|
+
</p>
|
|
25
|
+
|
|
26
|
+
<p align="center">
|
|
27
|
+
<a href="https://modelcontextprotocol.io/">
|
|
28
|
+
<img src="https://img.shields.io/badge/MCP-Compatible-8A2BE2?style=flat-square" alt="MCP Compatible">
|
|
29
|
+
</a>
|
|
30
|
+
<a href="https://nodejs.org/">
|
|
31
|
+
<img src="https://img.shields.io/badge/Node.js-18%2B-339933?style=flat-square&logo=node.js&logoColor=white" alt="Node.js 18+">
|
|
32
|
+
</a>
|
|
33
|
+
<a href="https://www.typescriptlang.org/">
|
|
34
|
+
<img src="https://img.shields.io/badge/TypeScript-5.0%2B-3178C6?style=flat-square&logo=typescript&logoColor=white" alt="TypeScript 5.0+">
|
|
35
|
+
</a>
|
|
36
|
+
</p>
|
|
37
|
+
|
|
38
|
+
<p align="center">
|
|
39
|
+
<a href="#-quick-start">Quick Start</a> •
|
|
40
|
+
<a href="#-features">Features</a> •
|
|
41
|
+
<a href="#%EF%B8%8F-configuration">Configuration</a> •
|
|
42
|
+
<a href="#-available-tools">Tools</a> •
|
|
43
|
+
<a href="#-usage-examples">Examples</a> •
|
|
44
|
+
<a href="#-troubleshooting">Troubleshooting</a>
|
|
45
|
+
</p>
|
|
46
|
+
|
|
47
|
+
---
|
|
48
|
+
|
|
49
|
+
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.
|
|
50
|
+
|
|
51
|
+
## ✨ Features
|
|
52
|
+
|
|
53
|
+
<table>
|
|
54
|
+
<tr>
|
|
55
|
+
<td>
|
|
56
|
+
|
|
57
|
+
### 🔐 Authentication
|
|
58
|
+
- Basic Auth (API Token)
|
|
59
|
+
- OAuth 2.0 with auto-refresh
|
|
60
|
+
- Secure credential storage via Keytar
|
|
61
|
+
|
|
62
|
+
</td>
|
|
63
|
+
<td>
|
|
64
|
+
|
|
65
|
+
### 📋 Issue Management
|
|
66
|
+
- Search with JQL
|
|
67
|
+
- Get issue details & comments
|
|
68
|
+
- View your open tickets
|
|
69
|
+
|
|
70
|
+
</td>
|
|
71
|
+
</tr>
|
|
72
|
+
<tr>
|
|
73
|
+
<td>
|
|
74
|
+
|
|
75
|
+
### ⏱️ Time Tracking
|
|
76
|
+
- Log work on issues
|
|
77
|
+
- View work logs
|
|
78
|
+
- Flexible time formats
|
|
79
|
+
|
|
80
|
+
</td>
|
|
81
|
+
<td>
|
|
82
|
+
|
|
83
|
+
### 💬 Collaboration
|
|
84
|
+
- Add comments to issues
|
|
85
|
+
- Access project information
|
|
86
|
+
- List accessible projects
|
|
87
|
+
|
|
88
|
+
</td>
|
|
89
|
+
</tr>
|
|
90
|
+
</table>
|
|
91
|
+
|
|
92
|
+
## 🚀 Quick Start
|
|
93
|
+
|
|
94
|
+
### Installation
|
|
95
|
+
|
|
96
|
+
```bash
|
|
97
|
+
npm install -g mcp-jira-cloud
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Or use directly with `npx`:
|
|
101
|
+
|
|
102
|
+
```bash
|
|
103
|
+
npx mcp-jira-cloud
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Get Your API Token
|
|
107
|
+
|
|
108
|
+
1. Go to [Atlassian API Tokens](https://id.atlassian.com/manage-profile/security/api-tokens)
|
|
109
|
+
2. Click **Create API token**
|
|
110
|
+
3. Copy the token
|
|
111
|
+
|
|
112
|
+
### Configure Your AI Assistant
|
|
113
|
+
|
|
114
|
+
<details>
|
|
115
|
+
<summary><strong>📘 VS Code (GitHub Copilot)</strong></summary>
|
|
116
|
+
|
|
117
|
+
Create or edit `.vscode/mcp.json` in your workspace:
|
|
118
|
+
|
|
119
|
+
```json
|
|
120
|
+
{
|
|
121
|
+
"servers": {
|
|
122
|
+
"jira": {
|
|
123
|
+
"type": "stdio",
|
|
124
|
+
"command": "npx",
|
|
125
|
+
"args": ["mcp-jira-cloud"],
|
|
126
|
+
"env": {
|
|
127
|
+
"JIRA_BASE_URL": "https://your-domain.atlassian.net",
|
|
128
|
+
"JIRA_EMAIL": "your-email@example.com",
|
|
129
|
+
"JIRA_API_TOKEN": "your-api-token"
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
</details>
|
|
137
|
+
|
|
138
|
+
<details>
|
|
139
|
+
<summary><strong>🤖 Claude Desktop</strong></summary>
|
|
140
|
+
|
|
141
|
+
Add to your Claude configuration (`claude_desktop_config.json`):
|
|
142
|
+
|
|
143
|
+
```json
|
|
144
|
+
{
|
|
145
|
+
"mcpServers": {
|
|
146
|
+
"jira": {
|
|
147
|
+
"command": "npx",
|
|
148
|
+
"args": ["mcp-jira-cloud"],
|
|
149
|
+
"env": {
|
|
150
|
+
"JIRA_BASE_URL": "https://your-domain.atlassian.net",
|
|
151
|
+
"JIRA_EMAIL": "your-email@example.com",
|
|
152
|
+
"JIRA_API_TOKEN": "your-api-token"
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
</details>
|
|
160
|
+
|
|
161
|
+
<details>
|
|
162
|
+
<summary><strong>⚡ Cursor</strong></summary>
|
|
163
|
+
|
|
164
|
+
Create `.cursor/mcp.json` in your project or home directory:
|
|
165
|
+
|
|
166
|
+
```json
|
|
167
|
+
{
|
|
168
|
+
"mcpServers": {
|
|
169
|
+
"jira": {
|
|
170
|
+
"command": "npx",
|
|
171
|
+
"args": ["mcp-jira-cloud"],
|
|
172
|
+
"env": {
|
|
173
|
+
"JIRA_BASE_URL": "https://your-domain.atlassian.net",
|
|
174
|
+
"JIRA_EMAIL": "your-email@example.com",
|
|
175
|
+
"JIRA_API_TOKEN": "your-api-token"
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
</details>
|
|
183
|
+
|
|
184
|
+
<details>
|
|
185
|
+
<summary><strong>🔧 Windsurf</strong></summary>
|
|
186
|
+
|
|
187
|
+
Add to your Windsurf MCP configuration:
|
|
188
|
+
|
|
189
|
+
```json
|
|
190
|
+
{
|
|
191
|
+
"mcpServers": {
|
|
192
|
+
"jira": {
|
|
193
|
+
"command": "npx",
|
|
194
|
+
"args": ["mcp-jira-cloud"],
|
|
195
|
+
"env": {
|
|
196
|
+
"JIRA_BASE_URL": "https://your-domain.atlassian.net",
|
|
197
|
+
"JIRA_EMAIL": "your-email@example.com",
|
|
198
|
+
"JIRA_API_TOKEN": "your-api-token"
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
</details>
|
|
206
|
+
|
|
207
|
+
## ⚙️ Configuration
|
|
208
|
+
|
|
209
|
+
### Environment Variables
|
|
210
|
+
|
|
211
|
+
#### Basic Authentication (Recommended)
|
|
212
|
+
|
|
213
|
+
| Variable | Description | Required |
|
|
214
|
+
|----------|-------------|:--------:|
|
|
215
|
+
| `JIRA_BASE_URL` | Your Jira instance URL (e.g., `https://company.atlassian.net`) | ✅ |
|
|
216
|
+
| `JIRA_EMAIL` | Your Atlassian account email | ✅ |
|
|
217
|
+
| `JIRA_API_TOKEN` | API token from Atlassian | ✅ |
|
|
218
|
+
|
|
219
|
+
#### OAuth 2.0 Authentication
|
|
220
|
+
|
|
221
|
+
<details>
|
|
222
|
+
<summary>Click to expand OAuth configuration</summary>
|
|
223
|
+
|
|
224
|
+
For OAuth authentication:
|
|
225
|
+
|
|
226
|
+
1. Create an OAuth 2.0 app in the [Atlassian Developer Console](https://developer.atlassian.com/console/myapps/)
|
|
227
|
+
2. Configure the required scopes:
|
|
228
|
+
- `read:jira-work`
|
|
229
|
+
- `read:jira-user`
|
|
230
|
+
- `write:jira-work`
|
|
231
|
+
- `offline_access`
|
|
232
|
+
|
|
233
|
+
| Variable | Description | Required |
|
|
234
|
+
|----------|-------------|:--------:|
|
|
235
|
+
| `JIRA_OAUTH_CLIENT_ID` | OAuth Client ID | ✅ |
|
|
236
|
+
| `JIRA_OAUTH_CLIENT_SECRET` | OAuth Client Secret | ✅ |
|
|
237
|
+
| `JIRA_OAUTH_ACCESS_TOKEN` | Access token | ✅ |
|
|
238
|
+
| `JIRA_OAUTH_REFRESH_TOKEN` | Refresh token | ⬜ |
|
|
239
|
+
| `JIRA_CLOUD_ID` | Your Jira Cloud ID | ✅ |
|
|
240
|
+
|
|
241
|
+
</details>
|
|
242
|
+
|
|
243
|
+
#### Optional Settings
|
|
244
|
+
|
|
245
|
+
| Variable | Description | Default |
|
|
246
|
+
|----------|-------------|---------|
|
|
247
|
+
| `JIRA_ACCEPTANCE_CRITERIA_FIELD` | Custom field ID for acceptance criteria | — |
|
|
248
|
+
|
|
249
|
+
## 🛠️ Available Tools
|
|
250
|
+
|
|
251
|
+
### Authentication
|
|
252
|
+
|
|
253
|
+
| Tool | Description |
|
|
254
|
+
|------|-------------|
|
|
255
|
+
| `jira_auth_status` | Check current authentication status |
|
|
256
|
+
| `jira_whoami` | Get current user's Jira profile |
|
|
257
|
+
| `jira_clear_auth` | Clear stored credentials |
|
|
258
|
+
|
|
259
|
+
<details>
|
|
260
|
+
<summary><strong>OAuth Tools</strong></summary>
|
|
261
|
+
|
|
262
|
+
| Tool | Description |
|
|
263
|
+
|------|-------------|
|
|
264
|
+
| `jira_oauth_get_auth_url` | Generate OAuth authorisation URL |
|
|
265
|
+
| `jira_oauth_exchange_code` | Exchange OAuth code for tokens |
|
|
266
|
+
| `jira_oauth_refresh` | Manually refresh OAuth token |
|
|
267
|
+
| `jira_oauth_list_sites` | List accessible Jira sites |
|
|
268
|
+
|
|
269
|
+
</details>
|
|
270
|
+
|
|
271
|
+
### Issue Management
|
|
272
|
+
|
|
273
|
+
| Tool | Description |
|
|
274
|
+
|------|-------------|
|
|
275
|
+
| `jira_get_issue` | Get full details of a Jira issue |
|
|
276
|
+
| `jira_get_issue_summary` | Get summary, description, and acceptance criteria |
|
|
277
|
+
| `jira_search_issues` | Search issues with JQL (full results) |
|
|
278
|
+
| `jira_search_issues_summary` | Search with minimal fields (key, summary, status) |
|
|
279
|
+
| `jira_get_my_open_issues` | Get your open/in-progress issues |
|
|
280
|
+
| `jira_resolve` | Smart routing tool for common intents |
|
|
281
|
+
|
|
282
|
+
### Comments & Work Logs
|
|
283
|
+
|
|
284
|
+
| Tool | Description |
|
|
285
|
+
|------|-------------|
|
|
286
|
+
| `jira_get_issue_comments` | Get comments on an issue |
|
|
287
|
+
| `jira_add_comment` | Add a comment to an issue |
|
|
288
|
+
| `jira_add_worklog` | Log time spent on an issue |
|
|
289
|
+
| `jira_get_worklogs` | Get work logs for an issue |
|
|
290
|
+
|
|
291
|
+
### Projects
|
|
292
|
+
|
|
293
|
+
| Tool | Description |
|
|
294
|
+
|------|-------------|
|
|
295
|
+
| `jira_list_projects` | List accessible Jira projects |
|
|
296
|
+
| `jira_get_project` | Get project details and metadata |
|
|
297
|
+
|
|
298
|
+
## 💡 Usage Examples
|
|
299
|
+
|
|
300
|
+
Once configured, interact with Jira through natural conversation:
|
|
301
|
+
|
|
302
|
+
### Issue Management
|
|
303
|
+
|
|
304
|
+
```
|
|
305
|
+
👤 "What's the status of PROJ-123?"
|
|
306
|
+
🤖 Fetches and displays issue details, status, and assignee
|
|
307
|
+
|
|
308
|
+
👤 "Find all open bugs assigned to me"
|
|
309
|
+
🤖 Searches using JQL and returns matching issues
|
|
310
|
+
|
|
311
|
+
👤 "What tickets am I working on?"
|
|
312
|
+
🤖 Lists your in-progress issues
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
### Time Tracking
|
|
316
|
+
|
|
317
|
+
```
|
|
318
|
+
👤 "Log 2 hours on PROJ-456 for code review"
|
|
319
|
+
🤖 Creates work log entry with description
|
|
320
|
+
|
|
321
|
+
👤 "How much time has been logged on PROJ-789?"
|
|
322
|
+
🤖 Retrieves and summarises work logs
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### Collaboration
|
|
326
|
+
|
|
327
|
+
```
|
|
328
|
+
👤 "Add a comment to PROJ-123 saying 'Fixed in latest commit'"
|
|
329
|
+
🤖 Adds the comment to the issue
|
|
330
|
+
|
|
331
|
+
👤 "Show me the comments on PROJ-456"
|
|
332
|
+
🤖 Displays all comments with authors and timestamps
|
|
333
|
+
```
|
|
334
|
+
|
|
335
|
+
## 🔧 Troubleshooting
|
|
336
|
+
|
|
337
|
+
<details>
|
|
338
|
+
<summary><strong>❌ "MISSING_AUTH" Error</strong></summary>
|
|
339
|
+
|
|
340
|
+
Ensure your environment variables are correctly set. Verify with `jira_auth_status`.
|
|
341
|
+
|
|
342
|
+
**Checklist:**
|
|
343
|
+
- ✅ `JIRA_BASE_URL` includes `https://` and is your full Jira domain
|
|
344
|
+
- ✅ `JIRA_EMAIL` matches your Atlassian account email
|
|
345
|
+
- ✅ `JIRA_API_TOKEN` is a valid, non-expired token
|
|
346
|
+
|
|
347
|
+
</details>
|
|
348
|
+
|
|
349
|
+
<details>
|
|
350
|
+
<summary><strong>❌ "401 Unauthorised" Error</strong></summary>
|
|
351
|
+
|
|
352
|
+
Your credentials are invalid or expired.
|
|
353
|
+
|
|
354
|
+
**For Basic Auth:**
|
|
355
|
+
- Verify your API token at [Atlassian API Tokens](https://id.atlassian.com/manage-profile/security/api-tokens)
|
|
356
|
+
- Ensure the token hasn't been revoked
|
|
357
|
+
|
|
358
|
+
**For OAuth:**
|
|
359
|
+
- Try refreshing the token with `jira_oauth_refresh`
|
|
360
|
+
- Re-authenticate if the refresh token has expired
|
|
361
|
+
|
|
362
|
+
</details>
|
|
363
|
+
|
|
364
|
+
<details>
|
|
365
|
+
<summary><strong>❌ "403 Forbidden" Error</strong></summary>
|
|
366
|
+
|
|
367
|
+
You don't have permission to access the requested resource.
|
|
368
|
+
|
|
369
|
+
**Solutions:**
|
|
370
|
+
- Check your Jira permissions for the project
|
|
371
|
+
- Contact your Jira administrator
|
|
372
|
+
- Verify your OAuth scopes include required permissions
|
|
373
|
+
|
|
374
|
+
</details>
|
|
375
|
+
|
|
376
|
+
<details>
|
|
377
|
+
<summary><strong>❌ "404 Not Found" Error</strong></summary>
|
|
378
|
+
|
|
379
|
+
The issue or project doesn't exist, or you don't have access to view it.
|
|
380
|
+
|
|
381
|
+
**Solutions:**
|
|
382
|
+
- Verify the issue key is correct (e.g., `PROJ-123`)
|
|
383
|
+
- Check if you have access to the project
|
|
384
|
+
- Ensure the issue hasn't been deleted or moved
|
|
385
|
+
|
|
386
|
+
</details>
|
|
387
|
+
|
|
388
|
+
## 📦 Package Information
|
|
389
|
+
|
|
390
|
+
| Attribute | Value |
|
|
391
|
+
|-----------|-------|
|
|
392
|
+
| Package name | [`mcp-jira-cloud`](https://www.npmjs.com/package/mcp-jira-cloud) |
|
|
393
|
+
| License | [MIT](LICENSE) |
|
|
394
|
+
| Node.js | ≥18.0.0 |
|
|
395
|
+
| TypeScript | ≥5.0.0 |
|
|
396
|
+
| Module | ES Modules |
|
|
397
|
+
|
|
398
|
+
### Dependencies
|
|
399
|
+
|
|
400
|
+
| Package | Purpose |
|
|
401
|
+
|---------|---------|
|
|
402
|
+
| [`@modelcontextprotocol/sdk`](https://www.npmjs.com/package/@modelcontextprotocol/sdk) | MCP protocol implementation |
|
|
403
|
+
| [`axios`](https://www.npmjs.com/package/axios) | HTTP client for Jira API |
|
|
404
|
+
| [`keytar`](https://www.npmjs.com/package/keytar) | Secure credential storage |
|
|
405
|
+
| [`zod`](https://www.npmjs.com/package/zod) | Schema validation |
|
|
406
|
+
|
|
407
|
+
## 🔒 Security
|
|
408
|
+
|
|
409
|
+
- Credentials are stored securely via system keychain (Keytar)
|
|
410
|
+
- OAuth tokens auto-refresh before expiration
|
|
411
|
+
- No credentials are logged or exposed in error messages
|
|
412
|
+
- See [SECURITY.md](SECURITY.md) for our security policy
|
|
413
|
+
|
|
414
|
+
## 🤝 Contributing
|
|
415
|
+
|
|
416
|
+
Contributions are welcome! Please see [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
417
|
+
|
|
418
|
+
1. Fork the repository
|
|
419
|
+
2. Create a feature branch (`git checkout -b feature/amazing-feature`)
|
|
420
|
+
3. Commit your changes (`git commit -m 'Add amazing feature'`)
|
|
421
|
+
4. Push to the branch (`git push origin feature/amazing-feature`)
|
|
422
|
+
5. Open a Pull Request
|
|
423
|
+
|
|
424
|
+
## 📄 Changelog
|
|
425
|
+
|
|
426
|
+
See [CHANGELOG.md](CHANGELOG.md) for a list of changes in each version.
|
|
427
|
+
|
|
428
|
+
## 📜 License
|
|
429
|
+
|
|
430
|
+
This project is licensed under the **MIT License** — see the [LICENSE](LICENSE) file for details.
|
|
431
|
+
|
|
432
|
+
## 🔗 Links
|
|
433
|
+
|
|
434
|
+
| Resource | Link |
|
|
435
|
+
|----------|------|
|
|
436
|
+
| GitHub | [github.com/tezaswi7222/jira-mcp](https://github.com/tezaswi7222/jira-mcp) |
|
|
437
|
+
| npm | [npmjs.com/package/mcp-jira-cloud](https://www.npmjs.com/package/mcp-jira-cloud) |
|
|
438
|
+
| Issues | [Report a bug](https://github.com/tezaswi7222/jira-mcp/issues) |
|
|
439
|
+
| MCP Protocol | [modelcontextprotocol.io](https://modelcontextprotocol.io/) |
|
|
440
|
+
| Jira API | [Jira REST API v3](https://developer.atlassian.com/cloud/jira/platform/rest/v3/intro/) |
|
|
441
|
+
|
|
442
|
+
---
|
|
443
|
+
|
|
444
|
+
<p align="center">
|
|
445
|
+
Made with ❤️ by <a href="https://github.com/tezaswi7222">Tezaswi Raj (github: tezaswi7222)</a>
|
|
446
|
+
</p>
|
|
447
|
+
|
|
448
|
+
<p align="center">
|
|
449
|
+
<a href="https://github.com/sponsors/tezaswi7222">
|
|
450
|
+
<img src="https://img.shields.io/badge/Sponsor-❤️-ea4aaa?style=for-the-badge" alt="Sponsor">
|
|
451
|
+
</a>
|
|
452
|
+
</p>
|