@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.
- package/dist/index.js +33 -134
- 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
|
|
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
|
-
|
|
55
|
-
|
|
56
|
-
|
|
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("
|
|
83
|
-
properties: z
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
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
|
-
|
|
138
|
-
|
|
139
|
-
|
|
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
|
-
|
|
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
|
-
"-
|
|
199
|
-
"+
|
|
200
|
-
"
|
|
201
|
-
"-
|
|
202
|
-
"+
|
|
203
|
-
"
|
|
204
|
-
"-
|
|
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("
|
|
224
|
-
id: z
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
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
|
}
|