@khanglvm/jira-mcp 1.3.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 (59) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +126 -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-fetcher.d.ts +30 -0
  8. package/dist/config-fetcher.d.ts.map +1 -0
  9. package/dist/config-fetcher.js +279 -0
  10. package/dist/config-fetcher.js.map +1 -0
  11. package/dist/config.d.ts +54 -0
  12. package/dist/config.d.ts.map +1 -0
  13. package/dist/config.js +66 -0
  14. package/dist/config.js.map +1 -0
  15. package/dist/index.d.ts +12 -0
  16. package/dist/index.d.ts.map +1 -0
  17. package/dist/index.js +228 -0
  18. package/dist/index.js.map +1 -0
  19. package/dist/mcp-registry.d.ts +106 -0
  20. package/dist/mcp-registry.d.ts.map +1 -0
  21. package/dist/mcp-registry.js +168 -0
  22. package/dist/mcp-registry.js.map +1 -0
  23. package/dist/setup.d.ts +41 -0
  24. package/dist/setup.d.ts.map +1 -0
  25. package/dist/setup.js +263 -0
  26. package/dist/setup.js.map +1 -0
  27. package/dist/tools/index.d.ts +10 -0
  28. package/dist/tools/index.d.ts.map +1 -0
  29. package/dist/tools/index.js +10 -0
  30. package/dist/tools/index.js.map +1 -0
  31. package/dist/tools/issues.d.ts +364 -0
  32. package/dist/tools/issues.d.ts.map +1 -0
  33. package/dist/tools/issues.js +392 -0
  34. package/dist/tools/issues.js.map +1 -0
  35. package/dist/tools/projects.d.ts +70 -0
  36. package/dist/tools/projects.d.ts.map +1 -0
  37. package/dist/tools/projects.js +101 -0
  38. package/dist/tools/projects.js.map +1 -0
  39. package/dist/tools/search.d.ts +76 -0
  40. package/dist/tools/search.d.ts.map +1 -0
  41. package/dist/tools/search.js +111 -0
  42. package/dist/tools/search.js.map +1 -0
  43. package/dist/tools/transitions.d.ts +99 -0
  44. package/dist/tools/transitions.d.ts.map +1 -0
  45. package/dist/tools/transitions.js +121 -0
  46. package/dist/tools/transitions.js.map +1 -0
  47. package/dist/tools/users.d.ts +70 -0
  48. package/dist/tools/users.d.ts.map +1 -0
  49. package/dist/tools/users.js +96 -0
  50. package/dist/tools/users.js.map +1 -0
  51. package/dist/types/mcp-config.d.ts +154 -0
  52. package/dist/types/mcp-config.d.ts.map +1 -0
  53. package/dist/types/mcp-config.js +7 -0
  54. package/dist/types/mcp-config.js.map +1 -0
  55. package/dist/utils/path-resolver.d.ts +16 -0
  56. package/dist/utils/path-resolver.d.ts.map +1 -0
  57. package/dist/utils/path-resolver.js +37 -0
  58. package/dist/utils/path-resolver.js.map +1 -0
  59. package/package.json +61 -0
@@ -0,0 +1,392 @@
1
+ /**
2
+ * @file tools/issues.ts
3
+ * @description Issue-related MCP tools for Jira.
4
+ * Provides tools for creating, reading, updating, and deleting issues.
5
+ */
6
+ import { z } from 'zod';
7
+ /**
8
+ * Schema for get_issue tool input.
9
+ */
10
+ export const getIssueSchema = z.object({
11
+ issueKey: z.string().describe('The issue key (e.g., "PROJ-123") or ID'),
12
+ fields: z
13
+ .string()
14
+ .optional()
15
+ .describe('Comma-separated list of fields to return'),
16
+ });
17
+ /**
18
+ * Schema for create_issue tool input.
19
+ */
20
+ export const createIssueSchema = z.object({
21
+ projectKey: z.string().describe('The project key (e.g., "PROJ")'),
22
+ summary: z.string().describe('Issue summary/title'),
23
+ issueType: z
24
+ .string()
25
+ .default('Task')
26
+ .describe('Issue type name (e.g., "Bug", "Task", "Story")'),
27
+ description: z.string().optional().describe('Issue description'),
28
+ assignee: z.string().optional().describe('Assignee username'),
29
+ priority: z.string().optional().describe('Priority name (e.g., "High", "Medium")'),
30
+ labels: z.array(z.string()).optional().describe('Array of labels'),
31
+ });
32
+ /**
33
+ * Schema for update_issue tool input.
34
+ */
35
+ export const updateIssueSchema = z.object({
36
+ issueKey: z.string().describe('The issue key or ID to update'),
37
+ summary: z.string().optional().describe('New summary'),
38
+ description: z.string().optional().describe('New description'),
39
+ assignee: z
40
+ .string()
41
+ .optional()
42
+ .nullable()
43
+ .describe('New assignee username (null to unassign)'),
44
+ priority: z.string().optional().describe('New priority name'),
45
+ labels: z.array(z.string()).optional().describe('New labels array'),
46
+ });
47
+ /**
48
+ * Schema for delete_issue tool input.
49
+ */
50
+ export const deleteIssueSchema = z.object({
51
+ issueKey: z.string().describe('The issue key or ID to delete'),
52
+ deleteSubtasks: z
53
+ .boolean()
54
+ .default(false)
55
+ .describe('Whether to also delete subtasks'),
56
+ });
57
+ /**
58
+ * Schema for add_comment tool input.
59
+ */
60
+ export const addCommentSchema = z.object({
61
+ issueKey: z.string().describe('The issue key or ID'),
62
+ body: z.string().describe('Comment body text'),
63
+ });
64
+ /**
65
+ * Schema for get_comments tool input.
66
+ */
67
+ export const getCommentsSchema = z.object({
68
+ issueKey: z.string().describe('The issue key or ID'),
69
+ });
70
+ /**
71
+ * Creates issue tool handlers.
72
+ * @param client - Jira client instance
73
+ * @returns Object containing all issue tool handlers
74
+ */
75
+ export function createIssueTools(client) {
76
+ return {
77
+ /**
78
+ * Gets an issue by key or ID.
79
+ */
80
+ jira_get_issue: async (args) => {
81
+ const issue = await client.getIssue(args.issueKey, args.fields);
82
+ return {
83
+ content: [
84
+ {
85
+ type: 'text',
86
+ text: JSON.stringify({
87
+ key: issue.key,
88
+ id: issue.id,
89
+ summary: issue.fields.summary,
90
+ description: issue.fields.description,
91
+ status: issue.fields.status.name,
92
+ priority: issue.fields.priority?.name,
93
+ assignee: issue.fields.assignee?.displayName,
94
+ reporter: issue.fields.reporter?.displayName,
95
+ issueType: issue.fields.issuetype.name,
96
+ project: issue.fields.project.key,
97
+ labels: issue.fields.labels,
98
+ created: issue.fields.created,
99
+ updated: issue.fields.updated,
100
+ }, null, 2),
101
+ },
102
+ ],
103
+ };
104
+ },
105
+ /**
106
+ * Creates a new issue.
107
+ */
108
+ jira_create_issue: async (args) => {
109
+ const result = await client.createIssue({
110
+ project: { key: args.projectKey },
111
+ summary: args.summary,
112
+ issuetype: { name: args.issueType },
113
+ description: args.description,
114
+ assignee: args.assignee ? { name: args.assignee } : undefined,
115
+ priority: args.priority ? { name: args.priority } : undefined,
116
+ labels: args.labels,
117
+ });
118
+ return {
119
+ content: [
120
+ {
121
+ type: 'text',
122
+ text: JSON.stringify({
123
+ success: true,
124
+ key: result.key,
125
+ id: result.id,
126
+ self: result.self,
127
+ }, null, 2),
128
+ },
129
+ ],
130
+ };
131
+ },
132
+ /**
133
+ * Updates an existing issue.
134
+ */
135
+ jira_update_issue: async (args) => {
136
+ await client.updateIssue(args.issueKey, {
137
+ summary: args.summary,
138
+ description: args.description,
139
+ assignee: args.assignee === null ? null : args.assignee ? { name: args.assignee } : undefined,
140
+ priority: args.priority ? { name: args.priority } : undefined,
141
+ labels: args.labels,
142
+ });
143
+ return {
144
+ content: [
145
+ {
146
+ type: 'text',
147
+ text: JSON.stringify({
148
+ success: true,
149
+ message: `Issue ${args.issueKey} updated successfully`,
150
+ }, null, 2),
151
+ },
152
+ ],
153
+ };
154
+ },
155
+ /**
156
+ * Deletes an issue.
157
+ */
158
+ jira_delete_issue: async (args) => {
159
+ await client.deleteIssue(args.issueKey, args.deleteSubtasks);
160
+ return {
161
+ content: [
162
+ {
163
+ type: 'text',
164
+ text: JSON.stringify({
165
+ success: true,
166
+ message: `Issue ${args.issueKey} deleted successfully`,
167
+ }, null, 2),
168
+ },
169
+ ],
170
+ };
171
+ },
172
+ /**
173
+ * Adds a comment to an issue.
174
+ */
175
+ jira_add_comment: async (args) => {
176
+ const comment = await client.addComment(args.issueKey, args.body);
177
+ return {
178
+ content: [
179
+ {
180
+ type: 'text',
181
+ text: JSON.stringify({
182
+ success: true,
183
+ commentId: comment.id,
184
+ author: comment.author.displayName,
185
+ created: comment.created,
186
+ }, null, 2),
187
+ },
188
+ ],
189
+ };
190
+ },
191
+ /**
192
+ * Gets comments on an issue.
193
+ */
194
+ jira_get_comments: async (args) => {
195
+ const result = await client.getComments(args.issueKey);
196
+ return {
197
+ content: [
198
+ {
199
+ type: 'text',
200
+ text: JSON.stringify({
201
+ total: result.total,
202
+ comments: result.comments.map((c) => ({
203
+ id: c.id,
204
+ author: c.author.displayName,
205
+ body: c.body,
206
+ created: c.created,
207
+ updated: c.updated,
208
+ })),
209
+ }, null, 2),
210
+ },
211
+ ],
212
+ };
213
+ },
214
+ };
215
+ }
216
+ /**
217
+ * Tool definitions for issue-related operations.
218
+ * Semantic descriptions help AI understand when to use each tool.
219
+ */
220
+ export const issueToolDefinitions = [
221
+ {
222
+ name: 'jira_get_issue',
223
+ description: `Retrieve full details of a specific Jira issue. Use when user:
224
+ - Asks about a specific ticket by key (PROJ-123) or ID
225
+ - Wants to see issue details, description, status, or assignee
226
+ - Needs information about a particular work item
227
+
228
+ Returns: summary, description, status, priority, assignee, reporter, labels, dates.`,
229
+ inputSchema: {
230
+ type: 'object',
231
+ properties: {
232
+ issueKey: {
233
+ type: 'string',
234
+ description: 'Issue key like PROJ-123 or numeric ID',
235
+ },
236
+ fields: {
237
+ type: 'string',
238
+ description: 'Comma-separated fields to return (optional)',
239
+ },
240
+ },
241
+ required: ['issueKey'],
242
+ },
243
+ },
244
+ {
245
+ name: 'jira_create_issue',
246
+ description: `Create a new issue in Jira. Use when user wants to:
247
+ - Log a bug, task, story, or any work item
248
+ - Report a problem or request a feature
249
+ - Create a ticket for new work
250
+ - Add something to the backlog
251
+
252
+ Defaults to 'Task' type. Common types: Bug, Task, Story, Epic, Sub-task.`,
253
+ inputSchema: {
254
+ type: 'object',
255
+ properties: {
256
+ projectKey: {
257
+ type: 'string',
258
+ description: 'Project key like "PROJ"',
259
+ },
260
+ summary: {
261
+ type: 'string',
262
+ description: 'Issue title/summary',
263
+ },
264
+ issueType: {
265
+ type: 'string',
266
+ description: 'Type: Bug, Task, Story, Epic (default: Task)',
267
+ default: 'Task',
268
+ },
269
+ description: {
270
+ type: 'string',
271
+ description: 'Detailed description',
272
+ },
273
+ assignee: {
274
+ type: 'string',
275
+ description: 'Username to assign to',
276
+ },
277
+ priority: {
278
+ type: 'string',
279
+ description: 'Priority: Highest, High, Medium, Low, Lowest',
280
+ },
281
+ labels: {
282
+ type: 'array',
283
+ items: { type: 'string' },
284
+ description: 'Labels to add',
285
+ },
286
+ },
287
+ required: ['projectKey', 'summary'],
288
+ },
289
+ },
290
+ {
291
+ name: 'jira_update_issue',
292
+ description: `Update an existing Jira issue. Use when user wants to:
293
+ - Change issue summary, description, or priority
294
+ - Reassign to someone else or unassign
295
+ - Update labels or other fields
296
+ - Modify ticket details`,
297
+ inputSchema: {
298
+ type: 'object',
299
+ properties: {
300
+ issueKey: {
301
+ type: 'string',
302
+ description: 'Issue key like PROJ-123',
303
+ },
304
+ summary: {
305
+ type: 'string',
306
+ description: 'New summary/title',
307
+ },
308
+ description: {
309
+ type: 'string',
310
+ description: 'New description',
311
+ },
312
+ assignee: {
313
+ type: ['string', 'null'],
314
+ description: 'New assignee username (null to unassign)',
315
+ },
316
+ priority: {
317
+ type: 'string',
318
+ description: 'New priority level',
319
+ },
320
+ labels: {
321
+ type: 'array',
322
+ items: { type: 'string' },
323
+ description: 'New labels (replaces existing)',
324
+ },
325
+ },
326
+ required: ['issueKey'],
327
+ },
328
+ },
329
+ {
330
+ name: 'jira_delete_issue',
331
+ description: `Delete a Jira issue permanently. Use when user explicitly asks to:
332
+ - Delete or remove an issue
333
+ - Permanently remove a ticket
334
+
335
+ WARNING: This permanently deletes the issue. Consider transitioning to Closed instead.`,
336
+ inputSchema: {
337
+ type: 'object',
338
+ properties: {
339
+ issueKey: {
340
+ type: 'string',
341
+ description: 'Issue key to delete',
342
+ },
343
+ deleteSubtasks: {
344
+ type: 'boolean',
345
+ description: 'Also delete subtasks (default: false)',
346
+ default: false,
347
+ },
348
+ },
349
+ required: ['issueKey'],
350
+ },
351
+ },
352
+ {
353
+ name: 'jira_add_comment',
354
+ description: `Add a comment to a Jira issue. Use when user wants to:
355
+ - Comment on a ticket
356
+ - Add notes or feedback to an issue
357
+ - Leave a message on a work item
358
+ - Document something on a ticket`,
359
+ inputSchema: {
360
+ type: 'object',
361
+ properties: {
362
+ issueKey: {
363
+ type: 'string',
364
+ description: 'Issue key to comment on',
365
+ },
366
+ body: {
367
+ type: 'string',
368
+ description: 'Comment text',
369
+ },
370
+ },
371
+ required: ['issueKey', 'body'],
372
+ },
373
+ },
374
+ {
375
+ name: 'jira_get_comments',
376
+ description: `Get all comments on a Jira issue. Use when user wants to:
377
+ - See comments or discussion on a ticket
378
+ - Review feedback on an issue
379
+ - Check what was said on a work item`,
380
+ inputSchema: {
381
+ type: 'object',
382
+ properties: {
383
+ issueKey: {
384
+ type: 'string',
385
+ description: 'Issue key to get comments from',
386
+ },
387
+ },
388
+ required: ['issueKey'],
389
+ },
390
+ },
391
+ ];
392
+ //# sourceMappingURL=issues.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issues.js","sourceRoot":"","sources":["../../src/tools/issues.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * @file tools/projects.ts
3
+ * @description Project-related MCP tools for Jira.
4
+ */
5
+ import { z } from 'zod';
6
+ import { JiraClient } from '../client.js';
7
+ /**
8
+ * Schema for get_project tool input.
9
+ */
10
+ export declare const getProjectSchema: z.ZodObject<{
11
+ projectKey: z.ZodString;
12
+ }, "strip", z.ZodTypeAny, {
13
+ projectKey: string;
14
+ }, {
15
+ projectKey: string;
16
+ }>;
17
+ /**
18
+ * Creates project tool handlers.
19
+ * @param client - Jira client instance
20
+ * @returns Object containing project tool handlers
21
+ */
22
+ export declare function createProjectTools(client: JiraClient): {
23
+ /**
24
+ * Lists all accessible projects.
25
+ */
26
+ jira_list_projects: () => Promise<{
27
+ content: {
28
+ type: "text";
29
+ text: string;
30
+ }[];
31
+ }>;
32
+ /**
33
+ * Gets a project by key or ID.
34
+ */
35
+ jira_get_project: (args: z.infer<typeof getProjectSchema>) => Promise<{
36
+ content: {
37
+ type: "text";
38
+ text: string;
39
+ }[];
40
+ }>;
41
+ };
42
+ /**
43
+ * Tool definitions for project operations.
44
+ * Semantic descriptions help AI understand project browsing.
45
+ */
46
+ export declare const projectToolDefinitions: ({
47
+ name: string;
48
+ description: string;
49
+ inputSchema: {
50
+ type: "object";
51
+ properties: {
52
+ projectKey?: undefined;
53
+ };
54
+ required: never[];
55
+ };
56
+ } | {
57
+ name: string;
58
+ description: string;
59
+ inputSchema: {
60
+ type: "object";
61
+ properties: {
62
+ projectKey: {
63
+ type: string;
64
+ description: string;
65
+ };
66
+ };
67
+ required: string[];
68
+ };
69
+ })[];
70
+ //# sourceMappingURL=projects.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.d.ts","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;EAE3B,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,UAAU;IAE7C;;OAEG;;;;;;;IA0BH;;OAEG;6BAC4B,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC;;;;;;EAuBtE;AAED;;;GAGG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;IA+BlC,CAAC"}
@@ -0,0 +1,101 @@
1
+ /**
2
+ * @file tools/projects.ts
3
+ * @description Project-related MCP tools for Jira.
4
+ */
5
+ import { z } from 'zod';
6
+ /**
7
+ * Schema for get_project tool input.
8
+ */
9
+ export const getProjectSchema = z.object({
10
+ projectKey: z.string().describe('The project key (e.g., "PROJ") or ID'),
11
+ });
12
+ /**
13
+ * Creates project tool handlers.
14
+ * @param client - Jira client instance
15
+ * @returns Object containing project tool handlers
16
+ */
17
+ export function createProjectTools(client) {
18
+ return {
19
+ /**
20
+ * Lists all accessible projects.
21
+ */
22
+ jira_list_projects: async () => {
23
+ const projects = await client.getProjects();
24
+ return {
25
+ content: [
26
+ {
27
+ type: 'text',
28
+ text: JSON.stringify({
29
+ total: projects.length,
30
+ projects: projects.map((p) => ({
31
+ key: p.key,
32
+ name: p.name,
33
+ id: p.id,
34
+ projectType: p.projectTypeKey,
35
+ lead: p.lead?.displayName,
36
+ })),
37
+ }, null, 2),
38
+ },
39
+ ],
40
+ };
41
+ },
42
+ /**
43
+ * Gets a project by key or ID.
44
+ */
45
+ jira_get_project: async (args) => {
46
+ const project = await client.getProject(args.projectKey);
47
+ return {
48
+ content: [
49
+ {
50
+ type: 'text',
51
+ text: JSON.stringify({
52
+ key: project.key,
53
+ name: project.name,
54
+ id: project.id,
55
+ description: project.description,
56
+ projectType: project.projectTypeKey,
57
+ lead: project.lead?.displayName,
58
+ }, null, 2),
59
+ },
60
+ ],
61
+ };
62
+ },
63
+ };
64
+ }
65
+ /**
66
+ * Tool definitions for project operations.
67
+ * Semantic descriptions help AI understand project browsing.
68
+ */
69
+ export const projectToolDefinitions = [
70
+ {
71
+ name: 'jira_list_projects',
72
+ description: `List all Jira projects accessible to the user. Use when user wants to:
73
+ - See available projects
74
+ - Find a project key
75
+ - Browse what projects exist
76
+ - Get project list for searching issues`,
77
+ inputSchema: {
78
+ type: 'object',
79
+ properties: {},
80
+ required: [],
81
+ },
82
+ },
83
+ {
84
+ name: 'jira_get_project',
85
+ description: `Get details of a specific Jira project. Use when user wants to:
86
+ - Get info about a project by key
87
+ - See project description or lead
88
+ - Check project details`,
89
+ inputSchema: {
90
+ type: 'object',
91
+ properties: {
92
+ projectKey: {
93
+ type: 'string',
94
+ description: 'Project key like "PROJ"',
95
+ },
96
+ },
97
+ required: ['projectKey'],
98
+ },
99
+ },
100
+ ];
101
+ //# sourceMappingURL=projects.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"projects.js","sourceRoot":"","sources":["../../src/tools/projects.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,sCAAsC,CAAC;CAC1E,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAkB;IACjD,OAAO;QACH;;WAEG;QACH,kBAAkB,EAAE,KAAK,IAAI,EAAE;YAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,WAAW,EAAE,CAAC;YAC5C,OAAO;gBACH,OAAO,EAAE;oBACL;wBACI,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAChB;4BACI,KAAK,EAAE,QAAQ,CAAC,MAAM;4BACtB,QAAQ,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;gCAC3B,GAAG,EAAE,CAAC,CAAC,GAAG;gCACV,IAAI,EAAE,CAAC,CAAC,IAAI;gCACZ,EAAE,EAAE,CAAC,CAAC,EAAE;gCACR,WAAW,EAAE,CAAC,CAAC,cAAc;gCAC7B,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,WAAW;6BAC5B,CAAC,CAAC;yBACN,EACD,IAAI,EACJ,CAAC,CACJ;qBACJ;iBACJ;aACJ,CAAC;QACN,CAAC;QAED;;WAEG;QACH,gBAAgB,EAAE,KAAK,EAAE,IAAsC,EAAE,EAAE;YAC/D,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACzD,OAAO;gBACH,OAAO,EAAE;oBACL;wBACI,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAChB;4BACI,GAAG,EAAE,OAAO,CAAC,GAAG;4BAChB,IAAI,EAAE,OAAO,CAAC,IAAI;4BAClB,EAAE,EAAE,OAAO,CAAC,EAAE;4BACd,WAAW,EAAE,OAAO,CAAC,WAAW;4BAChC,WAAW,EAAE,OAAO,CAAC,cAAc;4BACnC,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,WAAW;yBAClC,EACD,IAAI,EACJ,CAAC,CACJ;qBACJ;iBACJ;aACJ,CAAC;QACN,CAAC;KACJ,CAAC;AACN,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG;IAClC;QACI,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE;;;;wCAImB;QAChC,WAAW,EAAE;YACT,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE,EAAE;YACd,QAAQ,EAAE,EAAE;SACf;KACJ;IACD;QACI,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE;;;wBAGG;QAChB,WAAW,EAAE;YACT,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACR,UAAU,EAAE;oBACR,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,yBAAyB;iBACzC;aACJ;YACD,QAAQ,EAAE,CAAC,YAAY,CAAC;SAC3B;KACJ;CACJ,CAAC"}
@@ -0,0 +1,76 @@
1
+ /**
2
+ * @file tools/search.ts
3
+ * @description JQL search tool for Jira MCP.
4
+ */
5
+ import { z } from 'zod';
6
+ import { JiraClient } from '../client.js';
7
+ /**
8
+ * Schema for search tool input.
9
+ */
10
+ export declare const searchSchema: z.ZodObject<{
11
+ jql: z.ZodString;
12
+ maxResults: z.ZodDefault<z.ZodNumber>;
13
+ startAt: z.ZodDefault<z.ZodNumber>;
14
+ fields: z.ZodOptional<z.ZodArray<z.ZodString, "many">>;
15
+ }, "strip", z.ZodTypeAny, {
16
+ jql: string;
17
+ maxResults: number;
18
+ startAt: number;
19
+ fields?: string[] | undefined;
20
+ }, {
21
+ jql: string;
22
+ fields?: string[] | undefined;
23
+ maxResults?: number | undefined;
24
+ startAt?: number | undefined;
25
+ }>;
26
+ /**
27
+ * Creates search tool handlers.
28
+ * @param client - Jira client instance
29
+ * @returns Object containing search tool handler
30
+ */
31
+ export declare function createSearchTools(client: JiraClient): {
32
+ /**
33
+ * Searches for issues using JQL.
34
+ */
35
+ jira_search: (args: z.infer<typeof searchSchema>) => Promise<{
36
+ content: {
37
+ type: "text";
38
+ text: string;
39
+ }[];
40
+ }>;
41
+ };
42
+ /**
43
+ * Tool definitions for search operations.
44
+ */
45
+ export declare const searchToolDefinitions: {
46
+ name: string;
47
+ description: string;
48
+ inputSchema: {
49
+ type: "object";
50
+ properties: {
51
+ jql: {
52
+ type: string;
53
+ description: string;
54
+ };
55
+ maxResults: {
56
+ type: string;
57
+ description: string;
58
+ default: number;
59
+ };
60
+ startAt: {
61
+ type: string;
62
+ description: string;
63
+ default: number;
64
+ };
65
+ fields: {
66
+ type: string;
67
+ items: {
68
+ type: string;
69
+ };
70
+ description: string;
71
+ };
72
+ };
73
+ required: string[];
74
+ };
75
+ }[];
76
+ //# sourceMappingURL=search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/tools/search.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C;;GAEG;AACH,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;EAmBvB,CAAC;AAEH;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,UAAU;IAE5C;;OAEG;wBACuB,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC;;;;;;EAiC7D;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2CjC,CAAC"}