@lvmk/jira-mcp 1.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/LICENSE +21 -0
- package/README.md +583 -0
- package/dist/client.d.ts +287 -0
- package/dist/client.d.ts.map +1 -0
- package/dist/client.js +235 -0
- package/dist/client.js.map +1 -0
- package/dist/config.d.ts +54 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +66 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +222 -0
- package/dist/index.js.map +1 -0
- package/dist/setup.d.ts +41 -0
- package/dist/setup.d.ts.map +1 -0
- package/dist/setup.js +275 -0
- package/dist/setup.js.map +1 -0
- package/dist/tools/index.d.ts +10 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +10 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/issues.d.ts +363 -0
- package/dist/tools/issues.d.ts.map +1 -0
- package/dist/tools/issues.js +365 -0
- package/dist/tools/issues.js.map +1 -0
- package/dist/tools/projects.d.ts +69 -0
- package/dist/tools/projects.d.ts.map +1 -0
- package/dist/tools/projects.js +93 -0
- package/dist/tools/projects.js.map +1 -0
- package/dist/tools/search.d.ts +76 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +98 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/transitions.d.ts +98 -0
- package/dist/tools/transitions.d.ts.map +1 -0
- package/dist/tools/transitions.js +109 -0
- package/dist/tools/transitions.js.map +1 -0
- package/dist/tools/users.d.ts +69 -0
- package/dist/tools/users.d.ts.map +1 -0
- package/dist/tools/users.js +89 -0
- package/dist/tools/users.js.map +1 -0
- package/package.json +57 -0
package/dist/index.js
ADDED
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* @file index.ts
|
|
4
|
+
* @description Main entry point for the Jira MCP server.
|
|
5
|
+
* Supports two modes:
|
|
6
|
+
* 1. MCP Server mode (default) - Runs as stdio MCP server for AI tools
|
|
7
|
+
* 2. Setup mode - Injects MCP configuration into AI tool config files
|
|
8
|
+
*/
|
|
9
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
10
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
11
|
+
import { CallToolRequestSchema, ListToolsRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
|
|
12
|
+
import { loadConfig } from './config.js';
|
|
13
|
+
import { JiraClient, JiraApiError } from './client.js';
|
|
14
|
+
import { createIssueTools, issueToolDefinitions, createSearchTools, searchToolDefinitions, createProjectTools, projectToolDefinitions, createTransitionTools, transitionToolDefinitions, createUserTools, userToolDefinitions, } from './tools/index.js';
|
|
15
|
+
import { parseSetupArgs, injectMcpConfig, printSetupHelp, printSupportedClis, } from './setup.js';
|
|
16
|
+
/**
|
|
17
|
+
* Package information for server identification.
|
|
18
|
+
*/
|
|
19
|
+
const SERVER_INFO = {
|
|
20
|
+
name: '@lvmk/jira-mcp',
|
|
21
|
+
version: '1.0.0',
|
|
22
|
+
};
|
|
23
|
+
/**
|
|
24
|
+
* Prints general help message.
|
|
25
|
+
*/
|
|
26
|
+
function printHelp() {
|
|
27
|
+
console.log(`
|
|
28
|
+
@lvmk/jira-mcp - Jira MCP Server for Legacy Jira Server (Basic Auth)
|
|
29
|
+
|
|
30
|
+
MODES:
|
|
31
|
+
|
|
32
|
+
1. MCP Server Mode (default)
|
|
33
|
+
Run as an MCP server for AI tools to connect to.
|
|
34
|
+
|
|
35
|
+
Required Environment Variables:
|
|
36
|
+
JIRA_BASE_URL - Jira server URL (e.g., https://jira.example.com)
|
|
37
|
+
JIRA_USERNAME - Username for basic auth
|
|
38
|
+
JIRA_PASSWORD - Password for basic auth
|
|
39
|
+
|
|
40
|
+
Usage:
|
|
41
|
+
npx @lvmk/jira-mcp
|
|
42
|
+
|
|
43
|
+
2. Setup Mode
|
|
44
|
+
Inject MCP configuration into AI tool config files.
|
|
45
|
+
|
|
46
|
+
Usage:
|
|
47
|
+
npx @lvmk/jira-mcp setup -c <cli> -b <url> -u <user> -p <pass> [-s <scope>]
|
|
48
|
+
|
|
49
|
+
Run 'npx @lvmk/jira-mcp setup --help' for more details.
|
|
50
|
+
|
|
51
|
+
COMMANDS:
|
|
52
|
+
setup Configure MCP in AI tool config files
|
|
53
|
+
list-clis List supported AI CLI tools
|
|
54
|
+
--help Show this help message
|
|
55
|
+
--version Show version
|
|
56
|
+
|
|
57
|
+
EXAMPLES:
|
|
58
|
+
# Run as MCP server
|
|
59
|
+
JIRA_BASE_URL=https://jira.example.com JIRA_USERNAME=admin JIRA_PASSWORD=secret npx @lvmk/jira-mcp
|
|
60
|
+
|
|
61
|
+
# Setup for Claude Code
|
|
62
|
+
npx @lvmk/jira-mcp setup -c claude-code -b https://jira.example.com -u admin -p secret
|
|
63
|
+
|
|
64
|
+
# Setup for Cursor (project scope)
|
|
65
|
+
npx @lvmk/jira-mcp setup -c cursor -b https://jira.example.com -u admin -p secret -s project
|
|
66
|
+
`);
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Handles CLI commands and arguments.
|
|
70
|
+
* @returns true if handled as CLI command, false to continue as MCP server
|
|
71
|
+
*/
|
|
72
|
+
function handleCliCommands() {
|
|
73
|
+
const args = process.argv.slice(2);
|
|
74
|
+
if (args.length === 0) {
|
|
75
|
+
return false; // No args, run as MCP server
|
|
76
|
+
}
|
|
77
|
+
const command = args[0];
|
|
78
|
+
switch (command) {
|
|
79
|
+
case '--help':
|
|
80
|
+
case '-h':
|
|
81
|
+
case 'help':
|
|
82
|
+
printHelp();
|
|
83
|
+
return true;
|
|
84
|
+
case '--version':
|
|
85
|
+
case '-v':
|
|
86
|
+
console.log(SERVER_INFO.version);
|
|
87
|
+
return true;
|
|
88
|
+
case 'list-clis':
|
|
89
|
+
printSupportedClis();
|
|
90
|
+
return true;
|
|
91
|
+
case 'setup': {
|
|
92
|
+
const setupArgs = args.slice(1);
|
|
93
|
+
if (setupArgs.length === 0 || setupArgs.includes('--help') || setupArgs.includes('-h')) {
|
|
94
|
+
printSetupHelp();
|
|
95
|
+
return true;
|
|
96
|
+
}
|
|
97
|
+
const options = parseSetupArgs(setupArgs);
|
|
98
|
+
if (!options) {
|
|
99
|
+
console.error('Error: Invalid arguments. Run with --help for usage.\n');
|
|
100
|
+
printSetupHelp();
|
|
101
|
+
process.exit(1);
|
|
102
|
+
}
|
|
103
|
+
const result = injectMcpConfig(options);
|
|
104
|
+
console.log(result.message);
|
|
105
|
+
if (!result.success) {
|
|
106
|
+
process.exit(1);
|
|
107
|
+
}
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
default:
|
|
111
|
+
// Unknown command, check if it looks like MCP server mode
|
|
112
|
+
if (command.startsWith('-')) {
|
|
113
|
+
console.error(`Unknown option: ${command}`);
|
|
114
|
+
printHelp();
|
|
115
|
+
process.exit(1);
|
|
116
|
+
}
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Main function to initialize and run the MCP server.
|
|
122
|
+
*/
|
|
123
|
+
async function runMcpServer() {
|
|
124
|
+
// Load and validate configuration from environment
|
|
125
|
+
let config;
|
|
126
|
+
try {
|
|
127
|
+
config = loadConfig();
|
|
128
|
+
}
|
|
129
|
+
catch (error) {
|
|
130
|
+
console.error(error.message);
|
|
131
|
+
process.exit(1);
|
|
132
|
+
}
|
|
133
|
+
// Initialize Jira client
|
|
134
|
+
const jiraClient = new JiraClient(config);
|
|
135
|
+
// Create tool handlers
|
|
136
|
+
const issueTools = createIssueTools(jiraClient);
|
|
137
|
+
const searchTools = createSearchTools(jiraClient);
|
|
138
|
+
const projectTools = createProjectTools(jiraClient);
|
|
139
|
+
const transitionTools = createTransitionTools(jiraClient);
|
|
140
|
+
const userTools = createUserTools(jiraClient);
|
|
141
|
+
// Combine all tool handlers with type assertion
|
|
142
|
+
// Individual handlers have stricter param types, but we know the SDK will provide correct args
|
|
143
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
144
|
+
const allToolHandlers = {
|
|
145
|
+
...issueTools,
|
|
146
|
+
...searchTools,
|
|
147
|
+
...projectTools,
|
|
148
|
+
...transitionTools,
|
|
149
|
+
...userTools,
|
|
150
|
+
};
|
|
151
|
+
// Combine all tool definitions
|
|
152
|
+
const allToolDefinitions = [
|
|
153
|
+
...issueToolDefinitions,
|
|
154
|
+
...searchToolDefinitions,
|
|
155
|
+
...projectToolDefinitions,
|
|
156
|
+
...transitionToolDefinitions,
|
|
157
|
+
...userToolDefinitions,
|
|
158
|
+
];
|
|
159
|
+
// Create MCP server
|
|
160
|
+
const server = new Server(SERVER_INFO, {
|
|
161
|
+
capabilities: {
|
|
162
|
+
tools: {},
|
|
163
|
+
},
|
|
164
|
+
});
|
|
165
|
+
// Register list_tools handler
|
|
166
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
167
|
+
return {
|
|
168
|
+
tools: allToolDefinitions,
|
|
169
|
+
};
|
|
170
|
+
});
|
|
171
|
+
// Register call_tool handler
|
|
172
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
173
|
+
const { name, arguments: args } = request.params;
|
|
174
|
+
const handler = allToolHandlers[name];
|
|
175
|
+
if (!handler) {
|
|
176
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
177
|
+
}
|
|
178
|
+
try {
|
|
179
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
180
|
+
return await handler(args);
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
// Handle Jira API errors gracefully
|
|
184
|
+
if (error instanceof JiraApiError) {
|
|
185
|
+
return {
|
|
186
|
+
content: [
|
|
187
|
+
{
|
|
188
|
+
type: 'text',
|
|
189
|
+
text: JSON.stringify({
|
|
190
|
+
error: true,
|
|
191
|
+
message: error.message,
|
|
192
|
+
statusCode: error.statusCode,
|
|
193
|
+
details: error.body,
|
|
194
|
+
}, null, 2),
|
|
195
|
+
},
|
|
196
|
+
],
|
|
197
|
+
isError: true,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
// Re-throw unexpected errors
|
|
201
|
+
throw error;
|
|
202
|
+
}
|
|
203
|
+
});
|
|
204
|
+
// Create stdio transport and connect
|
|
205
|
+
const transport = new StdioServerTransport();
|
|
206
|
+
await server.connect(transport);
|
|
207
|
+
// Log successful startup to stderr (not stdout, to avoid interfering with MCP protocol)
|
|
208
|
+
console.error(`Jira MCP server started - connected to ${config.JIRA_BASE_URL}`);
|
|
209
|
+
}
|
|
210
|
+
// Main entry point
|
|
211
|
+
if (handleCliCommands()) {
|
|
212
|
+
// CLI command handled, exit normally
|
|
213
|
+
process.exit(0);
|
|
214
|
+
}
|
|
215
|
+
else {
|
|
216
|
+
// Run as MCP server
|
|
217
|
+
runMcpServer().catch((error) => {
|
|
218
|
+
console.error('Fatal error:', error);
|
|
219
|
+
process.exit(1);
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/setup.d.ts
ADDED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file setup.ts
|
|
3
|
+
* @description CLI setup command for injecting MCP configuration into various AI tools.
|
|
4
|
+
* Supports: Claude Code, Claude Desktop, GitHub Copilot, Cursor, Windsurf, Roo Code, Zed, Factory Droid
|
|
5
|
+
*/
|
|
6
|
+
/** Supported CLI tools for MCP configuration */
|
|
7
|
+
export type SupportedCli = 'claude-code' | 'claude-desktop' | 'copilot' | 'cursor' | 'windsurf' | 'roo-code' | 'zed' | 'factory-droid';
|
|
8
|
+
/** Configuration scope - user-level or project-level */
|
|
9
|
+
export type ConfigScope = 'user' | 'project';
|
|
10
|
+
/** Setup options from CLI arguments */
|
|
11
|
+
export interface SetupOptions {
|
|
12
|
+
cli: SupportedCli;
|
|
13
|
+
baseUrl: string;
|
|
14
|
+
username: string;
|
|
15
|
+
password: string;
|
|
16
|
+
scope: ConfigScope;
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Injects MCP configuration into the target CLI tool's config file.
|
|
20
|
+
* @param options - Setup options
|
|
21
|
+
* @returns Result message
|
|
22
|
+
*/
|
|
23
|
+
export declare function injectMcpConfig(options: SetupOptions): {
|
|
24
|
+
success: boolean;
|
|
25
|
+
message: string;
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Parses CLI arguments for setup command.
|
|
29
|
+
* @param args - Command line arguments
|
|
30
|
+
* @returns Parsed options or null if invalid
|
|
31
|
+
*/
|
|
32
|
+
export declare function parseSetupArgs(args: string[]): SetupOptions | null;
|
|
33
|
+
/**
|
|
34
|
+
* Prints setup help message.
|
|
35
|
+
*/
|
|
36
|
+
export declare function printSetupHelp(): void;
|
|
37
|
+
/**
|
|
38
|
+
* Lists all supported CLI tools.
|
|
39
|
+
*/
|
|
40
|
+
export declare function printSupportedClis(): void;
|
|
41
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +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,SAAS,GACT,QAAQ,GACR,UAAU,GACV,UAAU,GACV,KAAK,GACL,eAAe,CAAC;AAEtB,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;AAyHD;;;;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,CA8CrC;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAYzC"}
|
package/dist/setup.js
ADDED
|
@@ -0,0 +1,275 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file setup.ts
|
|
3
|
+
* @description CLI setup command for injecting MCP configuration into various AI tools.
|
|
4
|
+
* Supports: Claude Code, Claude Desktop, GitHub Copilot, Cursor, Windsurf, Roo Code, Zed, Factory Droid
|
|
5
|
+
*/
|
|
6
|
+
import * as fs from 'fs';
|
|
7
|
+
import * as path from 'path';
|
|
8
|
+
import * as os from 'os';
|
|
9
|
+
/**
|
|
10
|
+
* Gets the config file path and format for each CLI tool.
|
|
11
|
+
* @param cli - Target CLI tool
|
|
12
|
+
* @param scope - User or project scope
|
|
13
|
+
* @returns Config file info or null if unsupported
|
|
14
|
+
*/
|
|
15
|
+
function getConfigFileInfo(cli, scope) {
|
|
16
|
+
const home = os.homedir();
|
|
17
|
+
const cwd = process.cwd();
|
|
18
|
+
const configs = {
|
|
19
|
+
'claude-code': {
|
|
20
|
+
user: { path: path.join(home, '.claude.json'), wrapperKey: 'mcpServers', serverKey: 'jira' },
|
|
21
|
+
project: { path: path.join(cwd, '.mcp.json'), wrapperKey: 'mcpServers', serverKey: 'jira' },
|
|
22
|
+
},
|
|
23
|
+
'claude-desktop': {
|
|
24
|
+
user: {
|
|
25
|
+
path: process.platform === 'darwin'
|
|
26
|
+
? path.join(home, 'Library', 'Application Support', 'Claude', 'claude_desktop_config.json')
|
|
27
|
+
: process.platform === 'win32'
|
|
28
|
+
? path.join(process.env.APPDATA || '', 'Claude', 'claude_desktop_config.json')
|
|
29
|
+
: path.join(home, '.config', 'Claude', 'claude_desktop_config.json'),
|
|
30
|
+
wrapperKey: 'mcpServers',
|
|
31
|
+
serverKey: 'jira',
|
|
32
|
+
},
|
|
33
|
+
project: { path: '', wrapperKey: '', serverKey: '' }, // Claude Desktop doesn't support project scope
|
|
34
|
+
},
|
|
35
|
+
'copilot': {
|
|
36
|
+
user: { path: path.join(home, '.mcp.json'), wrapperKey: 'servers', serverKey: 'jira' },
|
|
37
|
+
project: { path: path.join(cwd, '.vscode', 'mcp.json'), wrapperKey: 'servers', serverKey: 'jira' },
|
|
38
|
+
},
|
|
39
|
+
'cursor': {
|
|
40
|
+
user: { path: path.join(home, '.cursor', 'mcp.json'), wrapperKey: 'mcpServers', serverKey: 'jira' },
|
|
41
|
+
project: { path: path.join(cwd, '.cursor', 'mcp.json'), wrapperKey: 'mcpServers', serverKey: 'jira' },
|
|
42
|
+
},
|
|
43
|
+
'windsurf': {
|
|
44
|
+
user: { path: path.join(home, '.codeium', 'windsurf', 'mcp_config.json'), wrapperKey: 'mcpServers', serverKey: 'jira' },
|
|
45
|
+
project: { path: path.join(cwd, '.windsurf', 'mcp_config.json'), wrapperKey: 'mcpServers', serverKey: 'jira' },
|
|
46
|
+
},
|
|
47
|
+
'roo-code': {
|
|
48
|
+
user: { path: path.join(home, '.roo', 'mcp.json'), wrapperKey: 'mcpServers', serverKey: 'jira' },
|
|
49
|
+
project: { path: path.join(cwd, '.roo', 'mcp.json'), wrapperKey: 'mcpServers', serverKey: 'jira' },
|
|
50
|
+
},
|
|
51
|
+
'zed': {
|
|
52
|
+
user: { path: path.join(home, '.config', 'zed', 'settings.json'), wrapperKey: 'context_servers', serverKey: 'jira' },
|
|
53
|
+
project: { path: path.join(cwd, '.zed', 'settings.json'), wrapperKey: 'context_servers', serverKey: 'jira' },
|
|
54
|
+
},
|
|
55
|
+
'factory-droid': {
|
|
56
|
+
user: { path: path.join(home, '.factory', 'mcp.json'), wrapperKey: 'mcpServers', serverKey: 'jira' },
|
|
57
|
+
project: { path: path.join(cwd, '.factory', 'mcp.json'), wrapperKey: 'mcpServers', serverKey: 'jira' },
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
const configInfo = configs[cli]?.[scope];
|
|
61
|
+
if (!configInfo || !configInfo.path) {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
return configInfo;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Creates the MCP server configuration for Jira.
|
|
68
|
+
* @param options - Setup options with credentials
|
|
69
|
+
* @returns MCP server config object
|
|
70
|
+
*/
|
|
71
|
+
function createJiraServerConfig(options) {
|
|
72
|
+
return {
|
|
73
|
+
command: 'npx',
|
|
74
|
+
args: ['-y', '@lvmk/jira-mcp'],
|
|
75
|
+
env: {
|
|
76
|
+
JIRA_BASE_URL: options.baseUrl,
|
|
77
|
+
JIRA_USERNAME: options.username,
|
|
78
|
+
JIRA_PASSWORD: options.password,
|
|
79
|
+
},
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Reads existing config file or returns empty object.
|
|
84
|
+
* @param filePath - Path to config file
|
|
85
|
+
* @returns Parsed JSON object
|
|
86
|
+
*/
|
|
87
|
+
function readConfigFile(filePath) {
|
|
88
|
+
try {
|
|
89
|
+
if (fs.existsSync(filePath)) {
|
|
90
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
91
|
+
return JSON.parse(content);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
console.warn(`Warning: Could not read existing config at ${filePath}`);
|
|
96
|
+
}
|
|
97
|
+
return {};
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Ensures parent directories exist.
|
|
101
|
+
* @param filePath - File path to ensure directories for
|
|
102
|
+
*/
|
|
103
|
+
function ensureDirectoryExists(filePath) {
|
|
104
|
+
const dir = path.dirname(filePath);
|
|
105
|
+
if (!fs.existsSync(dir)) {
|
|
106
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Injects MCP configuration into the target CLI tool's config file.
|
|
111
|
+
* @param options - Setup options
|
|
112
|
+
* @returns Result message
|
|
113
|
+
*/
|
|
114
|
+
export function injectMcpConfig(options) {
|
|
115
|
+
const configInfo = getConfigFileInfo(options.cli, options.scope);
|
|
116
|
+
if (!configInfo) {
|
|
117
|
+
return {
|
|
118
|
+
success: false,
|
|
119
|
+
message: `Error: ${options.cli} does not support ${options.scope} scope configuration.`,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
try {
|
|
123
|
+
// Read existing config
|
|
124
|
+
const config = readConfigFile(configInfo.path);
|
|
125
|
+
// Get or create the wrapper object (mcpServers, servers, etc.)
|
|
126
|
+
const wrapperKey = configInfo.wrapperKey;
|
|
127
|
+
if (!config[wrapperKey]) {
|
|
128
|
+
config[wrapperKey] = {};
|
|
129
|
+
}
|
|
130
|
+
const wrapper = config[wrapperKey];
|
|
131
|
+
// Check if jira config already exists
|
|
132
|
+
if (wrapper[configInfo.serverKey]) {
|
|
133
|
+
console.log(`ℹ️ Existing Jira MCP configuration found. Updating...`);
|
|
134
|
+
}
|
|
135
|
+
// Add/update Jira server config
|
|
136
|
+
wrapper[configInfo.serverKey] = createJiraServerConfig(options);
|
|
137
|
+
// Ensure directory exists and write file
|
|
138
|
+
ensureDirectoryExists(configInfo.path);
|
|
139
|
+
fs.writeFileSync(configInfo.path, JSON.stringify(config, null, 2) + '\n', 'utf-8');
|
|
140
|
+
return {
|
|
141
|
+
success: true,
|
|
142
|
+
message: `✅ Successfully configured Jira MCP for ${options.cli} (${options.scope} scope)\n Config file: ${configInfo.path}`,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
return {
|
|
147
|
+
success: false,
|
|
148
|
+
message: `Error writing config: ${error.message}`,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Parses CLI arguments for setup command.
|
|
154
|
+
* @param args - Command line arguments
|
|
155
|
+
* @returns Parsed options or null if invalid
|
|
156
|
+
*/
|
|
157
|
+
export function parseSetupArgs(args) {
|
|
158
|
+
const options = {
|
|
159
|
+
scope: 'user', // Default scope
|
|
160
|
+
};
|
|
161
|
+
for (let i = 0; i < args.length; i++) {
|
|
162
|
+
const arg = args[i];
|
|
163
|
+
const nextArg = args[i + 1];
|
|
164
|
+
switch (arg) {
|
|
165
|
+
case '-c':
|
|
166
|
+
case '--cli':
|
|
167
|
+
options.cli = nextArg;
|
|
168
|
+
i++;
|
|
169
|
+
break;
|
|
170
|
+
case '-b':
|
|
171
|
+
case '--base-url':
|
|
172
|
+
case '--url':
|
|
173
|
+
options.baseUrl = nextArg;
|
|
174
|
+
i++;
|
|
175
|
+
break;
|
|
176
|
+
case '-u':
|
|
177
|
+
case '--username':
|
|
178
|
+
options.username = nextArg;
|
|
179
|
+
i++;
|
|
180
|
+
break;
|
|
181
|
+
case '-p':
|
|
182
|
+
case '--password':
|
|
183
|
+
options.password = nextArg;
|
|
184
|
+
i++;
|
|
185
|
+
break;
|
|
186
|
+
case '-s':
|
|
187
|
+
case '--scope':
|
|
188
|
+
options.scope = nextArg;
|
|
189
|
+
i++;
|
|
190
|
+
break;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
// Validate required fields
|
|
194
|
+
const validClis = [
|
|
195
|
+
'claude-code', 'claude-desktop', 'copilot', 'cursor',
|
|
196
|
+
'windsurf', 'roo-code', 'zed', 'factory-droid'
|
|
197
|
+
];
|
|
198
|
+
if (!options.cli || !validClis.includes(options.cli)) {
|
|
199
|
+
return null;
|
|
200
|
+
}
|
|
201
|
+
if (!options.baseUrl || !options.username || !options.password) {
|
|
202
|
+
return null;
|
|
203
|
+
}
|
|
204
|
+
if (options.scope && !['user', 'project'].includes(options.scope)) {
|
|
205
|
+
return null;
|
|
206
|
+
}
|
|
207
|
+
return options;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Prints setup help message.
|
|
211
|
+
*/
|
|
212
|
+
export function printSetupHelp() {
|
|
213
|
+
console.log(`
|
|
214
|
+
Jira MCP Setup - Inject configuration into AI tool config files
|
|
215
|
+
|
|
216
|
+
Usage:
|
|
217
|
+
npx @lvmk/jira-mcp setup -c <cli> -b <url> -u <user> -p <pass> [-s <scope>]
|
|
218
|
+
|
|
219
|
+
Arguments:
|
|
220
|
+
-c, --cli Target CLI tool (required)
|
|
221
|
+
Options: claude-code, claude-desktop, copilot, cursor,
|
|
222
|
+
windsurf, roo-code, zed, factory-droid
|
|
223
|
+
|
|
224
|
+
-b, --base-url Jira base URL (required)
|
|
225
|
+
Example: https://jira.example.com
|
|
226
|
+
|
|
227
|
+
-u, --username Jira username (required)
|
|
228
|
+
|
|
229
|
+
-p, --password Jira password (required)
|
|
230
|
+
|
|
231
|
+
-s, --scope Configuration scope (optional, default: user)
|
|
232
|
+
Options: user, project
|
|
233
|
+
|
|
234
|
+
Examples:
|
|
235
|
+
# Add to Claude Code user config
|
|
236
|
+
npx @lvmk/jira-mcp setup -c claude-code -b https://jira.example.com -u admin -p secret
|
|
237
|
+
|
|
238
|
+
# Add to Cursor project config
|
|
239
|
+
npx @lvmk/jira-mcp setup -c cursor -b https://jira.example.com -u admin -p secret -s project
|
|
240
|
+
|
|
241
|
+
# Add to GitHub Copilot (VS Code)
|
|
242
|
+
npx @lvmk/jira-mcp setup -c copilot -b https://jira.example.com -u admin -p secret -s project
|
|
243
|
+
|
|
244
|
+
Supported CLI Tools:
|
|
245
|
+
┌────────────────┬───────────────────────────────────────────────────────┐
|
|
246
|
+
│ CLI │ Config File Location │
|
|
247
|
+
├────────────────┼───────────────────────────────────────────────────────┤
|
|
248
|
+
│ claude-code │ ~/.claude.json (user) | .mcp.json (project) │
|
|
249
|
+
│ claude-desktop │ ~/Library/Application Support/Claude/... (user only) │
|
|
250
|
+
│ copilot │ ~/.mcp.json (user) | .vscode/mcp.json (project) │
|
|
251
|
+
│ cursor │ ~/.cursor/mcp.json (user) | .cursor/mcp.json (proj) │
|
|
252
|
+
│ windsurf │ ~/.codeium/windsurf/mcp_config.json (user) │
|
|
253
|
+
│ roo-code │ ~/.roo/mcp.json (user) | .roo/mcp.json (project) │
|
|
254
|
+
│ zed │ ~/.config/zed/settings.json (user) │
|
|
255
|
+
│ factory-droid │ ~/.factory/mcp.json (user) | .factory/mcp.json (proj) │
|
|
256
|
+
└────────────────┴───────────────────────────────────────────────────────┘
|
|
257
|
+
`);
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Lists all supported CLI tools.
|
|
261
|
+
*/
|
|
262
|
+
export function printSupportedClis() {
|
|
263
|
+
console.log(`
|
|
264
|
+
Supported CLI tools:
|
|
265
|
+
• claude-code - Claude Code (Anthropic)
|
|
266
|
+
• claude-desktop - Claude Desktop App
|
|
267
|
+
• copilot - GitHub Copilot (VS Code)
|
|
268
|
+
• cursor - Cursor AI Editor
|
|
269
|
+
• windsurf - Windsurf (Codeium)
|
|
270
|
+
• roo-code - Roo Code
|
|
271
|
+
• zed - Zed Editor
|
|
272
|
+
• factory-droid - Factory Droid AI
|
|
273
|
+
`);
|
|
274
|
+
}
|
|
275
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file tools/index.ts
|
|
3
|
+
* @description Aggregates all tool exports for the Jira MCP server.
|
|
4
|
+
*/
|
|
5
|
+
export * from './issues.js';
|
|
6
|
+
export * from './search.js';
|
|
7
|
+
export * from './projects.js';
|
|
8
|
+
export * from './transitions.js';
|
|
9
|
+
export * from './users.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @file tools/index.ts
|
|
3
|
+
* @description Aggregates all tool exports for the Jira MCP server.
|
|
4
|
+
*/
|
|
5
|
+
export * from './issues.js';
|
|
6
|
+
export * from './search.js';
|
|
7
|
+
export * from './projects.js';
|
|
8
|
+
export * from './transitions.js';
|
|
9
|
+
export * from './users.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,YAAY,CAAC"}
|