@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.
Files changed (43) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +583 -0
  3. package/dist/client.d.ts +287 -0
  4. package/dist/client.d.ts.map +1 -0
  5. package/dist/client.js +235 -0
  6. package/dist/client.js.map +1 -0
  7. package/dist/config.d.ts +54 -0
  8. package/dist/config.d.ts.map +1 -0
  9. package/dist/config.js +66 -0
  10. package/dist/config.js.map +1 -0
  11. package/dist/index.d.ts +10 -0
  12. package/dist/index.d.ts.map +1 -0
  13. package/dist/index.js +222 -0
  14. package/dist/index.js.map +1 -0
  15. package/dist/setup.d.ts +41 -0
  16. package/dist/setup.d.ts.map +1 -0
  17. package/dist/setup.js +275 -0
  18. package/dist/setup.js.map +1 -0
  19. package/dist/tools/index.d.ts +10 -0
  20. package/dist/tools/index.d.ts.map +1 -0
  21. package/dist/tools/index.js +10 -0
  22. package/dist/tools/index.js.map +1 -0
  23. package/dist/tools/issues.d.ts +363 -0
  24. package/dist/tools/issues.d.ts.map +1 -0
  25. package/dist/tools/issues.js +365 -0
  26. package/dist/tools/issues.js.map +1 -0
  27. package/dist/tools/projects.d.ts +69 -0
  28. package/dist/tools/projects.d.ts.map +1 -0
  29. package/dist/tools/projects.js +93 -0
  30. package/dist/tools/projects.js.map +1 -0
  31. package/dist/tools/search.d.ts +76 -0
  32. package/dist/tools/search.d.ts.map +1 -0
  33. package/dist/tools/search.js +98 -0
  34. package/dist/tools/search.js.map +1 -0
  35. package/dist/tools/transitions.d.ts +98 -0
  36. package/dist/tools/transitions.d.ts.map +1 -0
  37. package/dist/tools/transitions.js +109 -0
  38. package/dist/tools/transitions.js.map +1 -0
  39. package/dist/tools/users.d.ts +69 -0
  40. package/dist/tools/users.d.ts.map +1 -0
  41. package/dist/tools/users.js +89 -0
  42. package/dist/tools/users.js.map +1 -0
  43. 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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"}
@@ -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"}