@ecubelabs/atlassian-mcp 1.0.1 → 1.1.0-next.1

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 (2) hide show
  1. package/dist/index.js +33 -134
  2. package/package.json +3 -2
package/dist/index.js CHANGED
@@ -25,7 +25,7 @@ server.tool("get-issue", "Get details of a Jira issue by key", {
25
25
  ])
26
26
  .array()
27
27
  .optional()
28
- .describe("Optional fields to expand in the response. Options include: renderedFields (HTML format), names (display names), schema (field type descriptions), transitions (possible transitions), editmeta (field editing info), changelog (recent updates), versionedRepresentations (field value history)"),
28
+ .describe("Optional fields to expand in the response"),
29
29
  }, async ({ issueKey, expand }) => {
30
30
  try {
31
31
  const issue = await jiraService.getIssue(issueKey, expand);
@@ -50,23 +50,10 @@ server.tool("get-issue", "Get details of a Jira issue by key", {
50
50
  }
51
51
  });
52
52
  server.tool("search-issues", "Search Jira issues using JQL", {
53
- jql: z
54
- .string()
55
- .describe("JQL query string. Must be a bounded query with search restrictions."),
56
- fields: z
57
- .array(z.string())
58
- .optional()
59
- .describe("Optional fields to include in the response. Examples: ['summary', 'comment'] or ['*all', '-comment']"),
60
- maxResults: z
61
- .number()
62
- .min(1)
63
- .max(5000)
64
- .optional()
65
- .describe("Maximum number of results to return per page (default: 50, max: 5000)"),
66
- nextPageToken: z
67
- .string()
68
- .optional()
69
- .describe("Token for fetching the next page of results. The first page has null nextPageToken."),
53
+ jql: z.string().describe("JQL query string"),
54
+ fields: z.array(z.string()).optional().describe("Fields to include"),
55
+ maxResults: z.number().min(1).max(5000).optional().describe("Max results"),
56
+ nextPageToken: z.string().optional().describe("Next page token"),
70
57
  expand: z
71
58
  .enum([
72
59
  "renderedFields",
@@ -79,25 +66,11 @@ server.tool("search-issues", "Search Jira issues using JQL", {
79
66
  ])
80
67
  .array()
81
68
  .optional()
82
- .describe("Comma-separated values to expand in response: renderedFields, names, schema, transitions, operations, editmeta, changelog, versionedRepresentations"),
83
- properties: z
84
- .array(z.string())
85
- .max(5)
86
- .optional()
87
- .describe("List of up to 5 issue properties to include in results"),
88
- fieldsByKeys: z
89
- .boolean()
90
- .optional()
91
- .describe("Reference fields by their key rather than ID (default: false)"),
92
- failFast: z
93
- .boolean()
94
- .optional()
95
- .describe("Fail request early if we can't retrieve all field data (default: false)"),
96
- reconcileIssues: z
97
- .array(z.number())
98
- .max(50)
99
- .optional()
100
- .describe("Strong consistency issue IDs to be reconciled with search results (max: 50 IDs)"),
69
+ .describe("Fields to expand"),
70
+ properties: z.array(z.string()).max(5).optional().describe("Properties to include"),
71
+ fieldsByKeys: z.boolean().optional().describe("Use field keys"),
72
+ failFast: z.boolean().optional().describe("Fail fast mode"),
73
+ reconcileIssues: z.array(z.number()).max(50).optional().describe("Issue IDs to reconcile"),
101
74
  }, async ({ jql, fields, maxResults, nextPageToken, expand, properties, fieldsByKeys, failFast, reconcileIssues, }) => {
102
75
  try {
103
76
  const issues = await jiraService.searchIssues({
@@ -133,25 +106,10 @@ server.tool("search-issues", "Search Jira issues using JQL", {
133
106
  });
134
107
  server.tool("get-comments", "Get comments for a Jira issue", {
135
108
  issueKey: z.string().describe("Jira issue key (e.g. PROJ-123)"),
136
- startAt: z
137
- .number()
138
- .min(0)
139
- .optional()
140
- .describe("The index of the first item to return (page offset). Default: 0"),
141
- maxResults: z
142
- .number()
143
- .min(1)
144
- .max(100)
145
- .optional()
146
- .describe("Maximum number of items per page. Default: 100"),
147
- orderBy: z
148
- .enum(["created", "-created", "+created"])
149
- .optional()
150
- .describe("Order comments by creation date. Default: created"),
151
- expand: z
152
- .array(z.enum(["renderedBody"]))
153
- .optional()
154
- .describe("Include additional information: renderedBody (comment body in HTML format)"),
109
+ startAt: z.number().min(0).optional().describe("Page offset"),
110
+ maxResults: z.number().min(1).max(100).optional().describe("Max results"),
111
+ orderBy: z.enum(["created", "-created", "+created"]).optional().describe("Order by"),
112
+ expand: z.array(z.enum(["renderedBody"])).optional().describe("Fields to expand"),
155
113
  }, async ({ issueKey, startAt, maxResults, orderBy, expand }) => {
156
114
  try {
157
115
  const result = await jiraService.getComments(issueKey, {
@@ -181,88 +139,29 @@ server.tool("get-comments", "Get comments for a Jira issue", {
181
139
  }
182
140
  });
183
141
  server.tool("get-projects", "Get list of Jira projects", {
184
- startAt: z
185
- .number()
186
- .min(0)
187
- .optional()
188
- .describe("The index of the first item to return (page offset). Default: 0"),
189
- maxResults: z
190
- .number()
191
- .min(1)
192
- .max(100)
193
- .optional()
194
- .describe("Maximum number of items per page. Default: 50, Maximum: 100"),
142
+ startAt: z.number().min(0).optional().describe("Page offset"),
143
+ maxResults: z.number().min(1).max(100).optional().describe("Max results"),
195
144
  orderBy: z
196
145
  .enum([
197
- "category",
198
- "-category",
199
- "+category",
200
- "key",
201
- "-key",
202
- "+key",
203
- "name",
204
- "-name",
205
- "+name",
206
- "owner",
207
- "-owner",
208
- "+owner",
209
- "issueCount",
210
- "-issueCount",
211
- "+issueCount",
212
- "lastIssueUpdatedTime",
213
- "-lastIssueUpdatedTime",
214
- "+lastIssueUpdatedTime",
215
- "archivedDate",
216
- "-archivedDate",
217
- "+archivedDate",
218
- "deletedDate",
219
- "-deletedDate",
220
- "+deletedDate",
146
+ "category", "-category", "+category",
147
+ "key", "-key", "+key",
148
+ "name", "-name", "+name",
149
+ "owner", "-owner", "+owner",
150
+ "issueCount", "-issueCount", "+issueCount",
151
+ "lastIssueUpdatedTime", "-lastIssueUpdatedTime", "+lastIssueUpdatedTime",
152
+ "archivedDate", "-archivedDate", "+archivedDate",
153
+ "deletedDate", "-deletedDate", "+deletedDate"
221
154
  ])
222
155
  .optional()
223
- .describe("Field to order results by. Default: key"),
224
- id: z
225
- .array(z.number().int())
226
- .max(50)
227
- .optional()
228
- .describe("Filter by project IDs. Maximum: 50 IDs"),
229
- keys: z
230
- .array(z.string())
231
- .max(50)
232
- .optional()
233
- .describe("Filter by project keys. Maximum: 50 keys"),
234
- query: z
235
- .string()
236
- .optional()
237
- .describe("Filter by matching key or name (case insensitive)"),
238
- typeKey: z
239
- .string()
240
- .optional()
241
- .describe("Filter by project type. Accepts comma-separated list: business, service_desk, software"),
242
- categoryId: z
243
- .number()
244
- .int()
245
- .optional()
246
- .describe("Filter by project category ID"),
247
- action: z
248
- .enum(["view", "browse", "edit", "create"])
249
- .optional()
250
- .describe("Filter by user's project permissions. Default: view"),
251
- expand: z
252
- .array(z.enum([
253
- "description",
254
- "projectKeys",
255
- "lead",
256
- "issueTypes",
257
- "url",
258
- "insight",
259
- ]))
260
- .optional()
261
- .describe("Additional fields to include: description, projectKeys, lead, issueTypes, url, insight"),
262
- status: z
263
- .array(z.enum(["live", "archived", "deleted"]))
264
- .optional()
265
- .describe("EXPERIMENTAL. Filter by project status"),
156
+ .describe("Sort order"),
157
+ id: z.array(z.number().int()).max(50).optional().describe("Project IDs"),
158
+ keys: z.array(z.string()).max(50).optional().describe("Project keys"),
159
+ query: z.string().optional().describe("Search query"),
160
+ typeKey: z.string().optional().describe("Project type"),
161
+ categoryId: z.number().int().optional().describe("Category ID"),
162
+ action: z.enum(["view", "browse", "edit", "create"]).optional().describe("Permission filter"),
163
+ expand: z.array(z.enum(["description", "projectKeys", "lead", "issueTypes", "url", "insight"])).optional().describe("Fields to expand"),
164
+ status: z.array(z.enum(["live", "archived", "deleted"])).optional().describe("Status filter"),
266
165
  }, async ({ startAt, maxResults, orderBy, id, keys, query, typeKey, categoryId, action, expand, status, }) => {
267
166
  try {
268
167
  const projects = await jiraService.getProjects({
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ecubelabs/atlassian-mcp",
3
- "version": "1.0.1",
3
+ "version": "1.1.0-next.1",
4
4
  "bin": "./dist/index.js",
5
5
  "repository": {
6
6
  "url": "https://github.com/Ecube-Labs/skynet.git"
@@ -32,5 +32,6 @@
32
32
  "semantic-release-yarn": "^3.0.2",
33
33
  "ts-node": "^10.9.2",
34
34
  "typescript": "^5.8.2"
35
- }
35
+ },
36
+ "stableVersion": "1.0.0"
36
37
  }