@stubbedev/atlassian-mcp 0.1.16 → 0.1.17
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/README.md +16 -10
- package/dist/index.js +11 -10
- package/dist/jira.js +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -273,10 +273,23 @@ This package is published to npm as `@stubbedev/atlassian-mcp`.
|
|
|
273
273
|
|
|
274
274
|
Use semantic versioning for releases. Breaking tool-surface changes should bump the minor version while `<1.0.0` (for example `0.0.x` -> `0.1.0`).
|
|
275
275
|
|
|
276
|
-
Automatic publish is configured in `.github/workflows/publish.yml
|
|
276
|
+
Automatic publish is configured in `.github/workflows/publish.yml` and runs when a new version tag is pushed.
|
|
277
277
|
|
|
278
|
-
|
|
279
|
-
|
|
278
|
+
Release flow:
|
|
279
|
+
|
|
280
|
+
```bash
|
|
281
|
+
# choose one: patch | minor | major
|
|
282
|
+
increment=patch
|
|
283
|
+
|
|
284
|
+
# bumps package.json + package-lock.json,
|
|
285
|
+
# creates a version commit, and creates a git tag (for example v0.1.17)
|
|
286
|
+
npm version "$increment"
|
|
287
|
+
|
|
288
|
+
# push commit and tag to GitHub
|
|
289
|
+
git push origin HEAD --follow-tags
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
GitHub Actions will publish the npm release from that pushed tag.
|
|
280
293
|
|
|
281
294
|
- The workflow is configured for npm Trusted Publisher (OIDC), so no `NPM_TOKEN` secret is required
|
|
282
295
|
|
|
@@ -284,13 +297,6 @@ Required npm setup (one-time):
|
|
|
284
297
|
|
|
285
298
|
- In npm package settings, add this GitHub repo/workflow as a Trusted Publisher
|
|
286
299
|
|
|
287
|
-
Manual publish from local machine:
|
|
288
|
-
|
|
289
|
-
```bash
|
|
290
|
-
npm run build
|
|
291
|
-
npm publish --access public
|
|
292
|
-
```
|
|
293
|
-
|
|
294
300
|
---
|
|
295
301
|
|
|
296
302
|
## Creating Personal Access Tokens
|
package/dist/index.js
CHANGED
|
@@ -39,6 +39,7 @@ function normalizeJiraMutateArgs(args) {
|
|
|
39
39
|
}
|
|
40
40
|
return out;
|
|
41
41
|
}
|
|
42
|
+
const JIRA_WIKI_MARKUP_HINT = 'Use Jira wiki markup (Atlassian renderer syntax), not GitHub/CommonMark markdown.';
|
|
42
43
|
server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
43
44
|
tools: [
|
|
44
45
|
// ── Context ───────────────────────────────────────────────────────────
|
|
@@ -157,7 +158,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
|
157
158
|
},
|
|
158
159
|
{
|
|
159
160
|
name: 'jira_create_issue',
|
|
160
|
-
description:
|
|
161
|
+
description: `Use when you want to create a new Jira ticket (bug, story, task, etc.). If projectKey/project is omitted, the server auto-picks from branch context or asks you to choose. ${JIRA_WIKI_MARKUP_HINT}`,
|
|
161
162
|
inputSchema: {
|
|
162
163
|
type: 'object',
|
|
163
164
|
properties: {
|
|
@@ -165,7 +166,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
|
165
166
|
project: { type: 'string', description: 'Alias for projectKey' },
|
|
166
167
|
issueType: { type: 'string', description: 'Issue type name, for example "Bug", "Story", or "Task"' },
|
|
167
168
|
summary: { type: 'string', description: 'Issue title' },
|
|
168
|
-
description: { type: 'string', description:
|
|
169
|
+
description: { type: 'string', description: `Issue description (optional). ${JIRA_WIKI_MARKUP_HINT}` },
|
|
169
170
|
assignee: { type: 'string', description: 'Username to assign to (optional)' },
|
|
170
171
|
priority: { type: 'string', description: 'Priority name, e.g. "High" (optional)' },
|
|
171
172
|
sprintId: { type: 'number', description: 'Sprint ID to immediately add the new issue into (optional)' },
|
|
@@ -175,13 +176,13 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
|
175
176
|
},
|
|
176
177
|
{
|
|
177
178
|
name: 'jira_update_issue',
|
|
178
|
-
description:
|
|
179
|
+
description: `Use when you want to edit an existing Jira ticket: title, description, assignee, or priority. ${JIRA_WIKI_MARKUP_HINT}`,
|
|
179
180
|
inputSchema: {
|
|
180
181
|
type: 'object',
|
|
181
182
|
properties: {
|
|
182
183
|
issueKey: { type: 'string', description: 'Jira issue key' },
|
|
183
184
|
summary: { type: 'string', description: 'New summary (optional)' },
|
|
184
|
-
description: { type: 'string', description:
|
|
185
|
+
description: { type: 'string', description: `New description (optional). ${JIRA_WIKI_MARKUP_HINT}` },
|
|
185
186
|
assignee: { type: 'string', description: 'New assignee username, or empty string to unassign (optional)' },
|
|
186
187
|
priority: { type: 'string', description: 'New priority name (optional)' },
|
|
187
188
|
sprintId: { type: 'number', description: 'Sprint ID to add this issue into (optional)' },
|
|
@@ -204,7 +205,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
|
204
205
|
},
|
|
205
206
|
{
|
|
206
207
|
name: 'jira_mutate_issue',
|
|
207
|
-
description:
|
|
208
|
+
description: `Use when you want to bundle Jira mutations in one call: create or target an issue, then optional update, sprint assignment, transition, and comment. ${JIRA_WIKI_MARKUP_HINT}`,
|
|
208
209
|
inputSchema: {
|
|
209
210
|
type: 'object',
|
|
210
211
|
properties: {
|
|
@@ -216,7 +217,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
|
216
217
|
project: { type: 'string', description: 'Alias for projectKey' },
|
|
217
218
|
issueType: { type: 'string', description: 'Issue type name, e.g. Bug, Story, Task' },
|
|
218
219
|
summary: { type: 'string', description: 'Issue title' },
|
|
219
|
-
description: { type: 'string', description:
|
|
220
|
+
description: { type: 'string', description: `Issue description (optional). ${JIRA_WIKI_MARKUP_HINT}` },
|
|
220
221
|
assignee: { type: 'string', description: 'Username to assign to (optional)' },
|
|
221
222
|
priority: { type: 'string', description: 'Priority name (optional)' },
|
|
222
223
|
},
|
|
@@ -226,7 +227,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
|
226
227
|
type: 'object',
|
|
227
228
|
properties: {
|
|
228
229
|
summary: { type: 'string', description: 'New summary (optional)' },
|
|
229
|
-
description: { type: 'string', description:
|
|
230
|
+
description: { type: 'string', description: `New description (optional). ${JIRA_WIKI_MARKUP_HINT}` },
|
|
230
231
|
assignee: { type: 'string', description: 'New assignee username, or empty string to unassign (optional)' },
|
|
231
232
|
priority: { type: 'string', description: 'New priority name (optional)' },
|
|
232
233
|
},
|
|
@@ -234,7 +235,7 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
|
234
235
|
sprintId: { type: 'number', description: 'Sprint ID to add the issue into (optional)' },
|
|
235
236
|
transitionId: { type: 'string', description: 'Transition ID (optional if transitionName is provided)' },
|
|
236
237
|
transitionName: { type: 'string', description: 'Transition name, e.g. In Progress (optional if transitionId is provided)' },
|
|
237
|
-
comment: { type: 'string', description:
|
|
238
|
+
comment: { type: 'string', description: `Comment to add after other mutations (optional, no emoji). ${JIRA_WIKI_MARKUP_HINT}` },
|
|
238
239
|
},
|
|
239
240
|
},
|
|
240
241
|
},
|
|
@@ -272,12 +273,12 @@ server.setRequestHandler(ListToolsRequestSchema, async () => ({
|
|
|
272
273
|
},
|
|
273
274
|
{
|
|
274
275
|
name: 'jira_add_comment',
|
|
275
|
-
description:
|
|
276
|
+
description: `Use when you want to leave a comment on a Jira ticket. Keep comments concise and free of filler. Never include emojis. ${JIRA_WIKI_MARKUP_HINT}`,
|
|
276
277
|
inputSchema: {
|
|
277
278
|
type: 'object',
|
|
278
279
|
properties: {
|
|
279
280
|
issueKey: { type: 'string', description: 'Jira issue key' },
|
|
280
|
-
body: { type: 'string', description:
|
|
281
|
+
body: { type: 'string', description: `Concise comment text. No filler. Do not include emojis. ${JIRA_WIKI_MARKUP_HINT}` },
|
|
281
282
|
},
|
|
282
283
|
required: ['issueKey', 'body'],
|
|
283
284
|
},
|
package/dist/jira.js
CHANGED
|
@@ -83,7 +83,7 @@ function validateCommentBody(body) {
|
|
|
83
83
|
throw new Error('Jira comment body must not be empty.');
|
|
84
84
|
}
|
|
85
85
|
if (EMOJI_RE.test(trimmed)) {
|
|
86
|
-
throw new Error('Jira comments must not include emoji. Use concise plain text only.');
|
|
86
|
+
throw new Error('Jira comments must not include emoji. Use concise Jira wiki markup or plain text only.');
|
|
87
87
|
}
|
|
88
88
|
return trimmed;
|
|
89
89
|
}
|