@lvmk/jira-mcp 1.0.1 → 1.0.3
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/README.md +146 -405
- package/dist/setup.d.ts +1 -1
- package/dist/setup.d.ts.map +1 -1
- package/dist/setup.js +26 -20
- package/dist/setup.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,174 +1,24 @@
|
|
|
1
1
|
# @lvmk/jira-mcp
|
|
2
2
|
|
|
3
|
-
MCP
|
|
4
|
-
|
|
5
|
-
> **🔔 Using Jira Cloud or newer Jira Data Center?**
|
|
6
|
-
>
|
|
7
|
-
> If you're using **Jira Cloud** or **Jira Data Center 8.14+** that supports Personal Access Tokens (PAT), OAuth, or API tokens, we recommend using [**mcp-atlassian**](https://github.com/sooperset/mcp-atlassian) instead. It provides broader authentication options and supports both Jira and Confluence.
|
|
8
|
-
>
|
|
9
|
-
> This package (`@lvmk/jira-mcp`) is specifically for legacy Jira Server deployments where basic auth (username/password) is the only available authentication method.
|
|
10
|
-
|
|
11
|
-
## 📑 Table of Contents
|
|
12
|
-
|
|
13
|
-
- [Features](#features)
|
|
14
|
-
- [Installation](#installation)
|
|
15
|
-
- [⚡ Quick CLI Setup](#-quick-cli-setup)
|
|
16
|
-
- [Environment Variables](#environment-variables)
|
|
17
|
-
- [Available Tools](#available-tools)
|
|
18
|
-
- [MCP Configuration Examples](#mcp-configuration-examples)
|
|
19
|
-
- [Usage Examples](#usage-examples)
|
|
20
|
-
- [Development Guide](#development-guide)
|
|
21
|
-
- [Contributing](#contributing)
|
|
22
|
-
- [License](#license)
|
|
23
|
-
|
|
24
|
-
## Features
|
|
25
|
-
|
|
26
|
-
- 🔐 **Basic Authentication** - Username/password auth for legacy Jira Server
|
|
27
|
-
- 📋 **Issue Management** - Create, read, update, delete issues
|
|
28
|
-
- 🔍 **JQL Search** - Powerful issue search with JQL
|
|
29
|
-
- 📁 **Project Tools** - List and inspect projects
|
|
30
|
-
- 🔄 **Workflow Transitions** - Move issues through workflow states
|
|
31
|
-
- 👤 **User Information** - Get current and other user details
|
|
32
|
-
|
|
33
|
-
## Installation
|
|
3
|
+
MCP server for **legacy Jira Server** (v7.x) with Basic Authentication. Works with any MCP-compatible AI tool.
|
|
34
4
|
|
|
35
|
-
|
|
36
|
-
npx @lvmk/jira-mcp
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
Or install globally:
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
npm install -g @lvmk/jira-mcp
|
|
43
|
-
```
|
|
5
|
+
> **🔔 Using Jira Cloud or Data Center 8.14+?** Use [mcp-atlassian](https://github.com/sooperset/mcp-atlassian) instead for OAuth/PAT support.
|
|
44
6
|
|
|
45
7
|
---
|
|
46
8
|
|
|
47
|
-
##
|
|
9
|
+
## 📦 Installation
|
|
48
10
|
|
|
49
|
-
|
|
11
|
+
### Quick Start
|
|
50
12
|
|
|
51
13
|
```bash
|
|
52
|
-
npx @lvmk/jira-mcp
|
|
53
|
-
```
|
|
54
|
-
|
|
55
|
-
### Arguments
|
|
56
|
-
|
|
57
|
-
| Short | Long | Description |
|
|
58
|
-
|-------|------|-------------|
|
|
59
|
-
| `-c` | `--cli` | Target CLI tool (**required**) |
|
|
60
|
-
| `-b` | `--base-url` | Jira base URL (**required**) |
|
|
61
|
-
| `-u` | `--username` | Jira username (**required**) |
|
|
62
|
-
| `-p` | `--password` | Jira password (**required**) |
|
|
63
|
-
| `-s` | `--scope` | `user` or `project` (default: `user`) |
|
|
64
|
-
|
|
65
|
-
### Supported CLI Tools
|
|
66
|
-
|
|
67
|
-
| CLI Tool | Command | Config Locations |
|
|
68
|
-
|----------|---------|------------------|
|
|
69
|
-
| **Claude Code** | `claude-code` | `~/.claude.json` (user) / `.mcp.json` (project) |
|
|
70
|
-
| **Claude Desktop** | `claude-desktop` | `~/Library/Application Support/Claude/...` |
|
|
71
|
-
| **GitHub Copilot** | `copilot` | `~/.mcp.json` (user) / `.vscode/mcp.json` (project) |
|
|
72
|
-
| **Cursor** | `cursor` | `~/.cursor/mcp.json` (user) / `.cursor/mcp.json` (project) |
|
|
73
|
-
| **Windsurf** | `windsurf` | `~/.codeium/windsurf/mcp_config.json` |
|
|
74
|
-
| **Roo Code** | `roo-code` | `~/.roo/mcp.json` (user) / `.roo/mcp.json` (project) |
|
|
75
|
-
| **Zed** | `zed` | `~/.config/zed/settings.json` |
|
|
76
|
-
| **Factory Droid** | `factory-droid` | `~/.factory/mcp.json` (user) / `.factory/mcp.json` (project) |
|
|
77
|
-
| **Google Antigravity** | `antigravity` | `~/.gemini/antigravity/mcp_config.json` (user only) |
|
|
78
|
-
|
|
79
|
-
### Setup Examples
|
|
80
|
-
|
|
81
|
-
```bash
|
|
82
|
-
# Claude Code (user scope - available in all projects)
|
|
83
|
-
npx @lvmk/jira-mcp setup -c claude-code -b https://jira.example.com -u admin -p secret
|
|
84
|
-
|
|
85
|
-
# Cursor (project scope - only in current project)
|
|
86
|
-
npx @lvmk/jira-mcp setup -c cursor -b https://jira.example.com -u admin -p secret -s project
|
|
87
|
-
|
|
88
|
-
# GitHub Copilot (VS Code project config)
|
|
89
|
-
npx @lvmk/jira-mcp setup -c copilot -b https://jira.example.com -u admin -p secret -s project
|
|
90
|
-
|
|
91
|
-
# Claude Desktop
|
|
92
|
-
npx @lvmk/jira-mcp setup -c claude-desktop -b https://jira.example.com -u admin -p secret
|
|
93
|
-
|
|
94
|
-
# Factory Droid
|
|
95
|
-
npx @lvmk/jira-mcp setup -c factory-droid -b https://jira.example.com -u admin -p secret
|
|
96
|
-
|
|
97
|
-
# Windsurf
|
|
98
|
-
npx @lvmk/jira-mcp setup -c windsurf -b https://jira.example.com -u admin -p secret
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
### Other Commands
|
|
102
|
-
|
|
103
|
-
```bash
|
|
104
|
-
# Show help
|
|
105
|
-
npx @lvmk/jira-mcp --help
|
|
106
|
-
|
|
107
|
-
# List supported CLI tools
|
|
108
|
-
npx @lvmk/jira-mcp list-clis
|
|
109
|
-
|
|
110
|
-
# Show version
|
|
111
|
-
npx @lvmk/jira-mcp --version
|
|
14
|
+
npx @lvmk/jira-mcp
|
|
112
15
|
```
|
|
113
16
|
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
## Environment Variables
|
|
117
|
-
|
|
118
|
-
| Variable | Required | Description |
|
|
119
|
-
|----------|----------|-------------|
|
|
120
|
-
| `JIRA_BASE_URL` | ✅ | Base URL of Jira instance (e.g., `http://jira.example.com:8080`) |
|
|
121
|
-
| `JIRA_USERNAME` | ✅ | Username for authentication |
|
|
122
|
-
| `JIRA_PASSWORD` | ✅ | Password for authentication |
|
|
123
|
-
| `JIRA_API_VERSION` | ❌ | API version (default: `2`) |
|
|
124
|
-
|
|
125
|
-
## Available Tools
|
|
17
|
+
### Configuration Formats
|
|
126
18
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
| Tool | Description |
|
|
130
|
-
|------|-------------|
|
|
131
|
-
| `jira_get_issue` | Get issue details by key |
|
|
132
|
-
| `jira_create_issue` | Create a new issue |
|
|
133
|
-
| `jira_update_issue` | Update issue fields |
|
|
134
|
-
| `jira_delete_issue` | Delete an issue |
|
|
135
|
-
| `jira_add_comment` | Add comment to issue |
|
|
136
|
-
| `jira_get_comments` | Get issue comments |
|
|
137
|
-
|
|
138
|
-
### Search Tools
|
|
139
|
-
|
|
140
|
-
| Tool | Description |
|
|
141
|
-
|------|-------------|
|
|
142
|
-
| `jira_search` | Search issues using JQL |
|
|
143
|
-
|
|
144
|
-
### Project Tools
|
|
145
|
-
|
|
146
|
-
| Tool | Description |
|
|
147
|
-
|------|-------------|
|
|
148
|
-
| `jira_list_projects` | List all accessible projects |
|
|
149
|
-
| `jira_get_project` | Get project details |
|
|
19
|
+
<details>
|
|
20
|
+
<summary><strong>JSON (camelCase)</strong> - Claude Code, Antigravity, Cursor</summary>
|
|
150
21
|
|
|
151
|
-
### Transition Tools
|
|
152
|
-
|
|
153
|
-
| Tool | Description |
|
|
154
|
-
|------|-------------|
|
|
155
|
-
| `jira_get_transitions` | Get available transitions for issue |
|
|
156
|
-
| `jira_transition_issue` | Transition issue to new status |
|
|
157
|
-
|
|
158
|
-
### User Tools
|
|
159
|
-
|
|
160
|
-
| Tool | Description |
|
|
161
|
-
|------|-------------|
|
|
162
|
-
| `jira_get_current_user` | Get authenticated user info |
|
|
163
|
-
| `jira_get_user` | Get user by username |
|
|
164
|
-
|
|
165
|
-
---
|
|
166
|
-
|
|
167
|
-
## MCP Configuration Examples
|
|
168
|
-
|
|
169
|
-
### Claude Code
|
|
170
|
-
|
|
171
|
-
**Project-level** (`.mcp.json` in project root):
|
|
172
22
|
```json
|
|
173
23
|
{
|
|
174
24
|
"mcpServers": {
|
|
@@ -184,12 +34,16 @@ npx @lvmk/jira-mcp --version
|
|
|
184
34
|
}
|
|
185
35
|
}
|
|
186
36
|
```
|
|
37
|
+
</details>
|
|
38
|
+
|
|
39
|
+
<details>
|
|
40
|
+
<summary><strong>JSON (dash-case)</strong> - VS Code, GitHub Copilot</summary>
|
|
187
41
|
|
|
188
|
-
**User-level** (`~/.claude.json`):
|
|
189
42
|
```json
|
|
190
43
|
{
|
|
191
|
-
"
|
|
44
|
+
"servers": {
|
|
192
45
|
"jira": {
|
|
46
|
+
"type": "stdio",
|
|
193
47
|
"command": "npx",
|
|
194
48
|
"args": ["-y", "@lvmk/jira-mcp"],
|
|
195
49
|
"env": {
|
|
@@ -201,59 +55,110 @@ npx @lvmk/jira-mcp --version
|
|
|
201
55
|
}
|
|
202
56
|
}
|
|
203
57
|
```
|
|
58
|
+
</details>
|
|
59
|
+
|
|
60
|
+
<details>
|
|
61
|
+
<summary><strong>YAML (Codex)</strong></summary>
|
|
62
|
+
|
|
63
|
+
```yaml
|
|
64
|
+
mcp_servers:
|
|
65
|
+
jira:
|
|
66
|
+
command: npx
|
|
67
|
+
args:
|
|
68
|
+
- -y
|
|
69
|
+
- "@lvmk/jira-mcp"
|
|
70
|
+
env:
|
|
71
|
+
JIRA_BASE_URL: http://jira.example.com:8080
|
|
72
|
+
JIRA_USERNAME: your-username
|
|
73
|
+
JIRA_PASSWORD: your-password
|
|
74
|
+
```
|
|
75
|
+
</details>
|
|
204
76
|
|
|
205
77
|
---
|
|
206
78
|
|
|
207
|
-
|
|
79
|
+
## 🔧 Available Tools
|
|
208
80
|
|
|
209
|
-
|
|
81
|
+
| Tool | Description |
|
|
82
|
+
|------|-------------|
|
|
83
|
+
| `jira_get_issue` | Get issue details by key |
|
|
84
|
+
| `jira_create_issue` | Create a new issue |
|
|
85
|
+
| `jira_update_issue` | Update issue fields |
|
|
86
|
+
| `jira_delete_issue` | Delete an issue |
|
|
87
|
+
| `jira_add_comment` | Add comment to issue |
|
|
88
|
+
| `jira_get_comments` | Get issue comments |
|
|
89
|
+
| `jira_search` | Search issues using JQL |
|
|
90
|
+
| `jira_list_projects` | List all accessible projects |
|
|
91
|
+
| `jira_get_project` | Get project details |
|
|
92
|
+
| `jira_get_transitions` | Get available transitions |
|
|
93
|
+
| `jira_transition_issue` | Transition issue to new status |
|
|
94
|
+
| `jira_get_current_user` | Get authenticated user info |
|
|
95
|
+
| `jira_get_user` | Get user by username |
|
|
210
96
|
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
},
|
|
222
|
-
"enabled": true
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
```
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
## ⚙️ Environment Variables
|
|
100
|
+
|
|
101
|
+
| Variable | Required | Description |
|
|
102
|
+
|----------|----------|-------------|
|
|
103
|
+
| `JIRA_BASE_URL` | ✅ | Jira instance URL |
|
|
104
|
+
| `JIRA_USERNAME` | ✅ | Username |
|
|
105
|
+
| `JIRA_PASSWORD` | ✅ | Password |
|
|
106
|
+
| `JIRA_API_VERSION` | ❌ | API version (default: `2`) |
|
|
227
107
|
|
|
228
108
|
---
|
|
229
109
|
|
|
230
|
-
|
|
110
|
+
<details>
|
|
111
|
+
<summary><h2>⚡ Quick Setup CLI</h2></summary>
|
|
231
112
|
|
|
232
|
-
|
|
113
|
+
Inject MCP configuration into your AI tool's config file:
|
|
233
114
|
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
"mcpServers": {
|
|
237
|
-
"jira": {
|
|
238
|
-
"command": "npx",
|
|
239
|
-
"args": ["-y", "@lvmk/jira-mcp"],
|
|
240
|
-
"env": {
|
|
241
|
-
"JIRA_BASE_URL": "http://jira.example.com:8080",
|
|
242
|
-
"JIRA_USERNAME": "your-username",
|
|
243
|
-
"JIRA_PASSWORD": "your-password"
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
}
|
|
115
|
+
```bash
|
|
116
|
+
npx @lvmk/jira-mcp setup -c <tool> -b <url> -u <user> -p <pass> [-s <scope>]
|
|
248
117
|
```
|
|
249
118
|
|
|
119
|
+
### Arguments
|
|
120
|
+
|
|
121
|
+
| Arg | Description |
|
|
122
|
+
|-----|-------------|
|
|
123
|
+
| `-c` | Tool name (see below) |
|
|
124
|
+
| `-b` | Jira base URL |
|
|
125
|
+
| `-u` | Username |
|
|
126
|
+
| `-p` | Password |
|
|
127
|
+
| `-s` | `user` or `project` (default: `user`) |
|
|
128
|
+
|
|
129
|
+
### Supported Tools
|
|
130
|
+
|
|
131
|
+
| Tool | Config Path |
|
|
132
|
+
|------|-------------|
|
|
133
|
+
| `claude-code` | `~/.claude.json` / `.mcp.json` |
|
|
134
|
+
| `claude-desktop` | `~/Library/Application Support/Claude/...` |
|
|
135
|
+
| `github-copilot` | `~/.mcp.json` / `.vscode/mcp.json` |
|
|
136
|
+
| `cursor` | `~/.cursor/mcp.json` |
|
|
137
|
+
| `windsurf` | `~/.codeium/windsurf/mcp_config.json` |
|
|
138
|
+
| `roo-code` | `~/.roo/mcp.json` |
|
|
139
|
+
| `zed` | `~/.config/zed/settings.json` |
|
|
140
|
+
| `factory-droid` | `~/.factory/mcp.json` |
|
|
141
|
+
| `antigravity` | `~/.gemini/antigravity/mcp_config.json` |
|
|
142
|
+
| `gemini-cli` | `~/.gemini/settings.json` |
|
|
143
|
+
|
|
144
|
+
### Examples
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
npx @lvmk/jira-mcp setup -c claude-code -b https://jira.example.com -u admin -p secret
|
|
148
|
+
npx @lvmk/jira-mcp setup -c cursor -b https://jira.example.com -u admin -p secret -s project
|
|
149
|
+
npx @lvmk/jira-mcp list-clis # List all tools
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
</details>
|
|
153
|
+
|
|
250
154
|
---
|
|
251
155
|
|
|
252
|
-
|
|
156
|
+
<details>
|
|
157
|
+
<summary><h2>📖 Configuration Examples by Tool</h2></summary>
|
|
253
158
|
|
|
254
|
-
|
|
159
|
+
### Claude Code
|
|
255
160
|
|
|
256
|
-
|
|
161
|
+
**Project** (`.mcp.json`):
|
|
257
162
|
```json
|
|
258
163
|
{
|
|
259
164
|
"mcpServers": {
|
|
@@ -270,11 +175,9 @@ MCP configuration (same format as Claude):
|
|
|
270
175
|
}
|
|
271
176
|
```
|
|
272
177
|
|
|
273
|
-
|
|
178
|
+
### GitHub Copilot (VS Code)
|
|
274
179
|
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
**Project-level** (`.vscode/mcp.json`):
|
|
180
|
+
**Project** (`.vscode/mcp.json`):
|
|
278
181
|
```json
|
|
279
182
|
{
|
|
280
183
|
"servers": {
|
|
@@ -292,12 +195,13 @@ MCP configuration (same format as Claude):
|
|
|
292
195
|
}
|
|
293
196
|
```
|
|
294
197
|
|
|
295
|
-
|
|
198
|
+
### Claude Desktop
|
|
199
|
+
|
|
200
|
+
**macOS** `~/Library/Application Support/Claude/claude_desktop_config.json`:
|
|
296
201
|
```json
|
|
297
202
|
{
|
|
298
|
-
"
|
|
203
|
+
"mcpServers": {
|
|
299
204
|
"jira": {
|
|
300
|
-
"type": "stdio",
|
|
301
205
|
"command": "npx",
|
|
302
206
|
"args": ["-y", "@lvmk/jira-mcp"],
|
|
303
207
|
"env": {
|
|
@@ -310,35 +214,32 @@ MCP configuration (same format as Claude):
|
|
|
310
214
|
}
|
|
311
215
|
```
|
|
312
216
|
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
### Claude Desktop
|
|
316
|
-
|
|
317
|
-
**macOS:** `~/Library/Application Support/Claude/claude_desktop_config.json`
|
|
318
|
-
|
|
319
|
-
**Windows:** `%APPDATA%\Claude\claude_desktop_config.json`
|
|
320
|
-
|
|
321
|
-
**Linux:** `~/.config/Claude/claude_desktop_config.json`
|
|
217
|
+
### OpenCode
|
|
322
218
|
|
|
219
|
+
**File** `~/.opencode.json`:
|
|
323
220
|
```json
|
|
324
221
|
{
|
|
325
222
|
"mcpServers": {
|
|
326
223
|
"jira": {
|
|
327
|
-
"
|
|
328
|
-
"
|
|
224
|
+
"type": "local",
|
|
225
|
+
"command": ["npx", "-y", "@lvmk/jira-mcp"],
|
|
329
226
|
"env": {
|
|
330
227
|
"JIRA_BASE_URL": "http://jira.example.com:8080",
|
|
331
228
|
"JIRA_USERNAME": "your-username",
|
|
332
229
|
"JIRA_PASSWORD": "your-password"
|
|
333
|
-
}
|
|
230
|
+
},
|
|
231
|
+
"enabled": true
|
|
334
232
|
}
|
|
335
233
|
}
|
|
336
234
|
}
|
|
337
235
|
```
|
|
338
236
|
|
|
237
|
+
</details>
|
|
238
|
+
|
|
339
239
|
---
|
|
340
240
|
|
|
341
|
-
|
|
241
|
+
<details>
|
|
242
|
+
<summary><h2>💡 Usage Examples</h2></summary>
|
|
342
243
|
|
|
343
244
|
### Search for open bugs
|
|
344
245
|
```
|
|
@@ -351,234 +252,74 @@ Use jira_create_issue with:
|
|
|
351
252
|
- projectKey: "PROJ"
|
|
352
253
|
- summary: "Implement new feature"
|
|
353
254
|
- issueType: "Task"
|
|
354
|
-
- description: "Details about the feature..."
|
|
355
255
|
```
|
|
356
256
|
|
|
357
257
|
### Transition an issue
|
|
358
258
|
```
|
|
359
|
-
1.
|
|
360
|
-
2.
|
|
361
|
-
- issueKey: "PROJ-123"
|
|
362
|
-
- transitionId: "21" (from step 1)
|
|
363
|
-
- comment: "Moving to In Progress"
|
|
259
|
+
1. jira_get_transitions with issueKey: "PROJ-123"
|
|
260
|
+
2. jira_transition_issue with issueKey: "PROJ-123", transitionId: "21"
|
|
364
261
|
```
|
|
365
262
|
|
|
366
|
-
|
|
263
|
+
</details>
|
|
367
264
|
|
|
368
|
-
|
|
265
|
+
---
|
|
369
266
|
|
|
370
|
-
|
|
267
|
+
<details>
|
|
268
|
+
<summary><h2>🛠️ Development Guide</h2></summary>
|
|
371
269
|
|
|
372
270
|
### Prerequisites
|
|
373
|
-
|
|
374
|
-
-
|
|
375
|
-
- **npm** >= 9.0.0
|
|
376
|
-
- A Jira Server instance for testing
|
|
271
|
+
- Node.js >= 18.0.0
|
|
272
|
+
- npm >= 9.0.0
|
|
377
273
|
|
|
378
274
|
### Getting Started
|
|
379
275
|
|
|
380
276
|
```bash
|
|
381
|
-
# Clone repository
|
|
382
277
|
git clone git@github.com:stommazh/jira-mcp.git
|
|
383
278
|
cd jira-mcp
|
|
384
|
-
|
|
385
|
-
# Install dependencies
|
|
386
279
|
npm install
|
|
387
|
-
|
|
388
|
-
# Build TypeScript
|
|
389
280
|
npm run build
|
|
390
281
|
```
|
|
391
282
|
|
|
392
|
-
###
|
|
393
|
-
|
|
394
|
-
```
|
|
395
|
-
jira-mcp/
|
|
396
|
-
├── src/
|
|
397
|
-
│ ├── index.ts # Main entry - CLI commands & MCP server
|
|
398
|
-
│ ├── config.ts # Environment config with Zod validation
|
|
399
|
-
│ ├── client.ts # Jira REST API client (Basic Auth)
|
|
400
|
-
│ ├── setup.ts # CLI setup for AI tool configuration
|
|
401
|
-
│ └── tools/
|
|
402
|
-
│ ├── index.ts # Tool exports
|
|
403
|
-
│ ├── issues.ts # Issue CRUD & comments
|
|
404
|
-
│ ├── search.ts # JQL search
|
|
405
|
-
│ ├── projects.ts # Project listing
|
|
406
|
-
│ ├── transitions.ts # Workflow transitions
|
|
407
|
-
│ └── users.ts # User info
|
|
408
|
-
├── test/
|
|
409
|
-
│ ├── client.test.ts # Client integration tests
|
|
410
|
-
│ └── tools.test.ts # Tool handler tests
|
|
411
|
-
├── dist/ # Compiled output
|
|
412
|
-
├── package.json
|
|
413
|
-
├── tsconfig.json
|
|
414
|
-
└── tsconfig.test.json
|
|
415
|
-
```
|
|
416
|
-
|
|
417
|
-
### Environment Setup
|
|
418
|
-
|
|
419
|
-
Create a `.env` file in the project root:
|
|
420
|
-
|
|
421
|
-
```bash
|
|
422
|
-
JIRA_BASE_URL=https://your-jira-instance.com
|
|
423
|
-
JIRA_USERNAME=your-username
|
|
424
|
-
JIRA_PASSWORD=your-password
|
|
425
|
-
```
|
|
426
|
-
|
|
427
|
-
### Available Scripts
|
|
283
|
+
### Scripts
|
|
428
284
|
|
|
429
285
|
| Script | Description |
|
|
430
286
|
|--------|-------------|
|
|
431
|
-
| `npm run build` | Compile TypeScript
|
|
432
|
-
| `npm run dev` | Watch mode
|
|
433
|
-
| `npm run
|
|
434
|
-
| `npm run test:
|
|
435
|
-
| `npm run
|
|
436
|
-
| `npm run test:tools` | Run tool handler tests only |
|
|
437
|
-
| `npm run test:integration` | Run MCP integration tests (Claude Code, OpenCode) |
|
|
438
|
-
| `npm run clean` | Remove `dist/` and `dist-test/` |
|
|
439
|
-
|
|
440
|
-
### Running Locally
|
|
441
|
-
|
|
442
|
-
```bash
|
|
443
|
-
# Method 1: With environment variables
|
|
444
|
-
JIRA_BASE_URL=https://jira.example.com \
|
|
445
|
-
JIRA_USERNAME=admin \
|
|
446
|
-
JIRA_PASSWORD=secret \
|
|
447
|
-
node dist/index.js
|
|
448
|
-
|
|
449
|
-
# Method 2: With .env file (requires dotenv in your test)
|
|
450
|
-
npm run test:all
|
|
451
|
-
```
|
|
287
|
+
| `npm run build` | Compile TypeScript |
|
|
288
|
+
| `npm run dev` | Watch mode |
|
|
289
|
+
| `npm run test:all` | Run all tests |
|
|
290
|
+
| `npm run test:integration` | Integration tests |
|
|
291
|
+
| `npm run clean` | Clean dist |
|
|
452
292
|
|
|
453
|
-
###
|
|
293
|
+
### Environment
|
|
454
294
|
|
|
295
|
+
Create `.env`:
|
|
455
296
|
```bash
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
# Setup command help
|
|
460
|
-
node dist/index.js setup --help
|
|
461
|
-
|
|
462
|
-
# List supported CLIs
|
|
463
|
-
node dist/index.js list-clis
|
|
464
|
-
|
|
465
|
-
# Test setup (creates config in current directory)
|
|
466
|
-
node dist/index.js setup -c cursor -b https://jira.test.com -u test -p test -s project
|
|
297
|
+
JIRA_BASE_URL=https://your-jira.com
|
|
298
|
+
JIRA_USERNAME=your-username
|
|
299
|
+
JIRA_PASSWORD=your-password
|
|
467
300
|
```
|
|
468
301
|
|
|
469
302
|
### Adding New Tools
|
|
470
303
|
|
|
471
|
-
1.
|
|
472
|
-
|
|
473
|
-
|
|
474
|
-
// src/tools/my-tool.ts
|
|
475
|
-
import { z } from 'zod';
|
|
476
|
-
import { JiraClient } from '../client.js';
|
|
477
|
-
|
|
478
|
-
export const myToolSchema = z.object({
|
|
479
|
-
param1: z.string().describe('Description'),
|
|
480
|
-
});
|
|
481
|
-
|
|
482
|
-
export function createMyTools(client: JiraClient) {
|
|
483
|
-
return {
|
|
484
|
-
jira_my_tool: async (args: z.infer<typeof myToolSchema>) => {
|
|
485
|
-
// Implementation
|
|
486
|
-
return {
|
|
487
|
-
content: [{ type: 'text' as const, text: JSON.stringify(result, null, 2) }],
|
|
488
|
-
};
|
|
489
|
-
},
|
|
490
|
-
};
|
|
491
|
-
}
|
|
304
|
+
1. Create tool file in `src/tools/`
|
|
305
|
+
2. Export from `src/tools/index.ts`
|
|
306
|
+
3. Register in `src/index.ts`
|
|
492
307
|
|
|
493
|
-
|
|
494
|
-
{
|
|
495
|
-
name: 'jira_my_tool',
|
|
496
|
-
description: 'Tool description',
|
|
497
|
-
inputSchema: {
|
|
498
|
-
type: 'object' as const,
|
|
499
|
-
properties: { param1: { type: 'string', description: 'Description' } },
|
|
500
|
-
required: ['param1'],
|
|
501
|
-
},
|
|
502
|
-
},
|
|
503
|
-
];
|
|
504
|
-
```
|
|
505
|
-
|
|
506
|
-
2. **Export from `src/tools/index.ts`**:
|
|
507
|
-
|
|
508
|
-
```typescript
|
|
509
|
-
export * from './my-tool.js';
|
|
510
|
-
```
|
|
511
|
-
|
|
512
|
-
3. **Register in `src/index.ts`**:
|
|
513
|
-
|
|
514
|
-
```typescript
|
|
515
|
-
import { createMyTools, myToolDefinitions } from './tools/index.js';
|
|
516
|
-
|
|
517
|
-
// In runMcpServer():
|
|
518
|
-
const myTools = createMyTools(jiraClient);
|
|
519
|
-
|
|
520
|
-
const allToolHandlers = {
|
|
521
|
-
...issueTools,
|
|
522
|
-
...myTools, // Add here
|
|
523
|
-
};
|
|
524
|
-
|
|
525
|
-
const allToolDefinitions = [
|
|
526
|
-
...issueToolDefinitions,
|
|
527
|
-
...myToolDefinitions, // Add here
|
|
528
|
-
];
|
|
529
|
-
```
|
|
530
|
-
|
|
531
|
-
### Adding Support for New CLI Tools
|
|
532
|
-
|
|
533
|
-
Edit `src/setup.ts` and add your CLI to the `configs` object in `getConfigFileInfo()`:
|
|
534
|
-
|
|
535
|
-
```typescript
|
|
536
|
-
'my-new-cli': {
|
|
537
|
-
user: { path: path.join(home, '.my-cli', 'config.json'), wrapperKey: 'mcpServers', serverKey: 'jira' },
|
|
538
|
-
project: { path: path.join(cwd, '.my-cli', 'config.json'), wrapperKey: 'mcpServers', serverKey: 'jira' },
|
|
539
|
-
},
|
|
540
|
-
```
|
|
541
|
-
|
|
542
|
-
Then add it to the `SupportedCli` type and `validClis` array.
|
|
308
|
+
### Adding CLI Support
|
|
543
309
|
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
```bash
|
|
547
|
-
# Update package.json with your package name
|
|
548
|
-
npm version patch # or minor/major
|
|
549
|
-
|
|
550
|
-
# Build and publish
|
|
551
|
-
npm run build
|
|
552
|
-
npm publish --access public
|
|
553
|
-
```
|
|
310
|
+
Edit `src/setup.ts` and add to `configs` object in `getConfigFileInfo()`.
|
|
554
311
|
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
- Uses **stdio transport** for npx execution
|
|
558
|
-
- All tools return `{ content: [{ type: 'text', text: '...' }] }`
|
|
559
|
-
- Errors return `{ content: [...], isError: true }`
|
|
560
|
-
- Server logs go to `stderr` (not `stdout`) to avoid protocol interference
|
|
561
|
-
|
|
562
|
-
### Claude Code Lazy Loading (2025+)
|
|
563
|
-
|
|
564
|
-
Claude Code v2.1.7+ supports lazy tool loading via "Tool Search":
|
|
565
|
-
- Tools are discovered dynamically instead of pre-loaded
|
|
566
|
-
- Dramatically reduces context token usage (134k → ~5k tokens)
|
|
567
|
-
- No changes needed on MCP server side - it's handled by Claude Code
|
|
312
|
+
</details>
|
|
568
313
|
|
|
569
314
|
---
|
|
570
315
|
|
|
571
316
|
## Contributing
|
|
572
317
|
|
|
573
318
|
1. Fork the repository
|
|
574
|
-
2. Create
|
|
575
|
-
3. Commit
|
|
576
|
-
4.
|
|
577
|
-
5. Open a Pull Request
|
|
578
|
-
|
|
579
|
-
---
|
|
319
|
+
2. Create feature branch
|
|
320
|
+
3. Commit changes
|
|
321
|
+
4. Open Pull Request
|
|
580
322
|
|
|
581
323
|
## License
|
|
582
324
|
|
|
583
325
|
MIT
|
|
584
|
-
|
package/dist/setup.d.ts
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* Supports: Claude Code, Claude Desktop, GitHub Copilot, Cursor, Windsurf, Roo Code, Zed, Factory Droid
|
|
5
5
|
*/
|
|
6
6
|
/** Supported CLI tools for MCP configuration */
|
|
7
|
-
export type SupportedCli = 'claude-code' | 'claude-desktop' | 'copilot' | 'cursor' | 'windsurf' | 'roo-code' | 'zed' | 'factory-droid' | 'antigravity';
|
|
7
|
+
export type SupportedCli = 'claude-code' | 'claude-desktop' | 'github-copilot' | 'cursor' | 'windsurf' | 'roo-code' | 'zed' | 'factory-droid' | 'antigravity' | 'gemini-cli';
|
|
8
8
|
/** Configuration scope - user-level or project-level */
|
|
9
9
|
export type ConfigScope = 'user' | 'project';
|
|
10
10
|
/** Setup options from CLI arguments */
|
package/dist/setup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,gDAAgD;AAChD,MAAM,MAAM,YAAY,GAClB,aAAa,GACb,gBAAgB,GAChB,
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,gDAAgD;AAChD,MAAM,MAAM,YAAY,GAClB,aAAa,GACb,gBAAgB,GAChB,gBAAgB,GAChB,QAAQ,GACR,UAAU,GACV,UAAU,GACV,KAAK,GACL,eAAe,GACf,aAAa,GACb,YAAY,CAAC;AAEnB,wDAAwD;AACxD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,SAAS,CAAC;AAE7C,uCAAuC;AACvC,MAAM,WAAW,YAAY;IACzB,GAAG,EAAE,YAAY,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,WAAW,CAAC;CACtB;AAiID;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CA2C5F;AAED;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,YAAY,GAAG,IAAI,CAwDlE;AAED;;GAEG;AACH,wBAAgB,cAAc,IAAI,IAAI,CAgDrC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAczC"}
|
package/dist/setup.js
CHANGED
|
@@ -32,7 +32,7 @@ function getConfigFileInfo(cli, scope) {
|
|
|
32
32
|
},
|
|
33
33
|
project: { path: '', wrapperKey: '', serverKey: '' }, // Claude Desktop doesn't support project scope
|
|
34
34
|
},
|
|
35
|
-
'copilot': {
|
|
35
|
+
'github-copilot': {
|
|
36
36
|
user: { path: path.join(home, '.mcp.json'), wrapperKey: 'servers', serverKey: 'jira' },
|
|
37
37
|
project: { path: path.join(cwd, '.vscode', 'mcp.json'), wrapperKey: 'servers', serverKey: 'jira' },
|
|
38
38
|
},
|
|
@@ -60,6 +60,10 @@ function getConfigFileInfo(cli, scope) {
|
|
|
60
60
|
user: { path: path.join(home, '.gemini', 'antigravity', 'mcp_config.json'), wrapperKey: 'mcpServers', serverKey: 'jira' },
|
|
61
61
|
project: { path: '', wrapperKey: '', serverKey: '' }, // Antigravity only supports user-level config
|
|
62
62
|
},
|
|
63
|
+
'gemini-cli': {
|
|
64
|
+
user: { path: path.join(home, '.gemini', 'settings.json'), wrapperKey: 'mcpServers', serverKey: 'jira' },
|
|
65
|
+
project: { path: path.join(cwd, '.gemini', 'settings.json'), wrapperKey: 'mcpServers', serverKey: 'jira' },
|
|
66
|
+
},
|
|
63
67
|
};
|
|
64
68
|
const configInfo = configs[cli]?.[scope];
|
|
65
69
|
if (!configInfo || !configInfo.path) {
|
|
@@ -196,8 +200,8 @@ export function parseSetupArgs(args) {
|
|
|
196
200
|
}
|
|
197
201
|
// Validate required fields
|
|
198
202
|
const validClis = [
|
|
199
|
-
'claude-code', 'claude-desktop', 'copilot', 'cursor',
|
|
200
|
-
'windsurf', 'roo-code', 'zed', 'factory-droid', 'antigravity'
|
|
203
|
+
'claude-code', 'claude-desktop', 'github-copilot', 'cursor',
|
|
204
|
+
'windsurf', 'roo-code', 'zed', 'factory-droid', 'antigravity', 'gemini-cli'
|
|
201
205
|
];
|
|
202
206
|
if (!options.cli || !validClis.includes(options.cli)) {
|
|
203
207
|
return null;
|
|
@@ -222,8 +226,8 @@ Usage:
|
|
|
222
226
|
|
|
223
227
|
Arguments:
|
|
224
228
|
-c, --cli Target CLI tool (required)
|
|
225
|
-
Options: claude-code, claude-desktop, copilot, cursor,
|
|
226
|
-
windsurf, roo-code, zed, factory-droid, antigravity
|
|
229
|
+
Options: claude-code, claude-desktop, github-copilot, cursor,
|
|
230
|
+
windsurf, roo-code, zed, factory-droid, antigravity, gemini-cli
|
|
227
231
|
|
|
228
232
|
-b, --base-url Jira base URL (required)
|
|
229
233
|
Example: https://jira.example.com
|
|
@@ -243,22 +247,23 @@ Examples:
|
|
|
243
247
|
npx @lvmk/jira-mcp setup -c cursor -b https://jira.example.com -u admin -p secret -s project
|
|
244
248
|
|
|
245
249
|
# Add to GitHub Copilot (VS Code)
|
|
246
|
-
npx @lvmk/jira-mcp setup -c copilot -b https://jira.example.com -u admin -p secret -s project
|
|
250
|
+
npx @lvmk/jira-mcp setup -c github-copilot -b https://jira.example.com -u admin -p secret -s project
|
|
247
251
|
|
|
248
252
|
Supported CLI Tools:
|
|
249
|
-
|
|
250
|
-
│ CLI
|
|
251
|
-
|
|
252
|
-
│ claude-code
|
|
253
|
-
│ claude-desktop
|
|
254
|
-
│ copilot
|
|
255
|
-
│ cursor
|
|
256
|
-
│ windsurf
|
|
257
|
-
│ roo-code
|
|
258
|
-
│ zed
|
|
259
|
-
│ factory-droid
|
|
260
|
-
│ antigravity
|
|
261
|
-
|
|
253
|
+
┌─────────────────┬───────────────────────────────────────────────────────┐
|
|
254
|
+
│ CLI │ Config File Location │
|
|
255
|
+
├─────────────────┼───────────────────────────────────────────────────────┤
|
|
256
|
+
│ claude-code │ ~/.claude.json (user) | .mcp.json (project) │
|
|
257
|
+
│ claude-desktop │ ~/Library/Application Support/Claude/... (user only) │
|
|
258
|
+
│ github-copilot │ ~/.mcp.json (user) | .vscode/mcp.json (project) │
|
|
259
|
+
│ cursor │ ~/.cursor/mcp.json (user) | .cursor/mcp.json (proj) │
|
|
260
|
+
│ windsurf │ ~/.codeium/windsurf/mcp_config.json (user) │
|
|
261
|
+
│ roo-code │ ~/.roo/mcp.json (user) | .roo/mcp.json (project) │
|
|
262
|
+
│ zed │ ~/.config/zed/settings.json (user) │
|
|
263
|
+
│ factory-droid │ ~/.factory/mcp.json (user) | .factory/mcp.json (proj) │
|
|
264
|
+
│ antigravity │ ~/.gemini/antigravity/mcp_config.json (user only) │
|
|
265
|
+
│ gemini-cli │ ~/.gemini/settings.json (user) | .gemini/settings │
|
|
266
|
+
└─────────────────┴───────────────────────────────────────────────────────┘
|
|
262
267
|
`);
|
|
263
268
|
}
|
|
264
269
|
/**
|
|
@@ -269,13 +274,14 @@ export function printSupportedClis() {
|
|
|
269
274
|
Supported CLI tools:
|
|
270
275
|
• claude-code - Claude Code (Anthropic)
|
|
271
276
|
• claude-desktop - Claude Desktop App
|
|
272
|
-
• copilot
|
|
277
|
+
• github-copilot - GitHub Copilot (VS Code)
|
|
273
278
|
• cursor - Cursor AI Editor
|
|
274
279
|
• windsurf - Windsurf (Codeium)
|
|
275
280
|
• roo-code - Roo Code
|
|
276
281
|
• zed - Zed Editor
|
|
277
282
|
• factory-droid - Factory Droid AI
|
|
278
283
|
• antigravity - Google Antigravity IDE
|
|
284
|
+
• gemini-cli - Gemini CLI (Google)
|
|
279
285
|
`);
|
|
280
286
|
}
|
|
281
287
|
//# sourceMappingURL=setup.js.map
|
package/dist/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED