@rui.branco/jira-mcp 1.7.7 → 1.7.9
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/index.js +20 -3
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -802,6 +802,18 @@ function extractTextSimple(content) {
|
|
|
802
802
|
return result.text;
|
|
803
803
|
}
|
|
804
804
|
|
|
805
|
+
// Prefix each line with "> " so echoed comments render as a markdown blockquote
|
|
806
|
+
function quoteText(text) {
|
|
807
|
+
return text
|
|
808
|
+
.split("\n")
|
|
809
|
+
.map((line) => (line.trim() ? `> ${line}` : ">"))
|
|
810
|
+
.join("\n");
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
// Appended to comment-tool responses so the client relays the posted text to the user
|
|
814
|
+
const ECHO_DIRECTIVE =
|
|
815
|
+
"IMPORTANT: In your reply to the user, reproduce the blockquoted comment above verbatim (keep the > blockquote) so they see exactly what was posted to Jira. Never reply with just 'comment posted' or a summary of it.";
|
|
816
|
+
|
|
805
817
|
// ============ USER SEARCH & MENTIONS ============
|
|
806
818
|
|
|
807
819
|
// Cache for user lookups to avoid repeated API calls
|
|
@@ -2035,6 +2047,8 @@ const SERVER_INSTRUCTIONS = `# jira-mcp usage rules
|
|
|
2035
2047
|
${confluenceMode !== "always" ? "- Confluence tools are hidden until activated: call `confluence_enable` first when a task needs Confluence (pages, spaces, page comments, labels, attachments).\n" : ""}
|
|
2036
2048
|
## Writing Jira comments (jira_add_comment / jira_reply_comment / jira_edit_comment)
|
|
2037
2049
|
Write one short conversational paragraph: start with @DisplayName of who to notify (NOT [~accountId:...] syntax), say what changed, and end with the next step (e.g. 'Ready for verification.'). Keep it HIGH LEVEL for stakeholders/PO/QA — WHAT changed and the impact, not how it was built. Include technical detail (endpoints, payloads, API contracts) ONLY when the reader is a developer and it makes sense; otherwise leave out code, file paths, branch names, commit hashes, and framework-internal terms. NEVER use em dashes (—) or en dashes (–) — use commas, periods, or rewrite. Avoid bullet lists, headings, and bold unless the update genuinely needs them.
|
|
2050
|
+
Do NOT @mention automation/service accounts (e.g. 'Jira Integrations', bots): when the reporter or notify target is one, write the comment without any mention.
|
|
2051
|
+
After the tool succeeds, its response echoes the posted comment as a markdown blockquote. ALWAYS reproduce that blockquote verbatim in your final reply to the user so they see exactly what was posted to Jira — never reply with just 'comment added' or a paraphrase.
|
|
2038
2052
|
|
|
2039
2053
|
## Writing descriptions (jira_create_ticket / jira_update_ticket / jira_create_subtask)
|
|
2040
2054
|
Structure with Markdown: a one/two-sentence overview, then ## / ### headings (Overview, Details, Acceptance Criteria), '-' bullet lists, numbered steps, tables for structured data, **bold** key terms, fenced \`\`\` blocks for code/payloads. Blank line between blocks. Concise and scannable. Never use em/en dashes.`;
|
|
@@ -3599,11 +3613,12 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
3599
3613
|
}, inst);
|
|
3600
3614
|
const author = result.author?.displayName || "Unknown";
|
|
3601
3615
|
const created = new Date(result.created).toLocaleString();
|
|
3616
|
+
const postedText = quoteText(extractTextSimple(result.body).trim());
|
|
3602
3617
|
return {
|
|
3603
3618
|
content: [
|
|
3604
3619
|
{
|
|
3605
3620
|
type: "text",
|
|
3606
|
-
text: `Comment added to ${args.issueKey} by ${author} at ${created}
|
|
3621
|
+
text: `Comment added to ${args.issueKey} by ${author} at ${created}:\n\n${postedText}\n\n${ECHO_DIRECTIVE}`,
|
|
3607
3622
|
},
|
|
3608
3623
|
],
|
|
3609
3624
|
};
|
|
@@ -3667,11 +3682,12 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
3667
3682
|
}, inst);
|
|
3668
3683
|
const author = result.author?.displayName || "Unknown";
|
|
3669
3684
|
const created = new Date(result.created).toLocaleString();
|
|
3685
|
+
const postedText = quoteText(extractTextSimple(result.body).trim());
|
|
3670
3686
|
return {
|
|
3671
3687
|
content: [
|
|
3672
3688
|
{
|
|
3673
3689
|
type: "text",
|
|
3674
|
-
text: `Reply to ${originalAuthor}'s comment posted on ${args.issueKey} by ${author} at ${created}
|
|
3690
|
+
text: `Reply to ${originalAuthor}'s comment posted on ${args.issueKey} by ${author} at ${created}:\n\n${postedText}\n\n${ECHO_DIRECTIVE}`,
|
|
3675
3691
|
},
|
|
3676
3692
|
],
|
|
3677
3693
|
};
|
|
@@ -3691,11 +3707,12 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
3691
3707
|
{ method: "PUT", body },
|
|
3692
3708
|
inst,
|
|
3693
3709
|
);
|
|
3710
|
+
const editedText = quoteText(extractTextSimple(result.body).trim());
|
|
3694
3711
|
return {
|
|
3695
3712
|
content: [
|
|
3696
3713
|
{
|
|
3697
3714
|
type: "text",
|
|
3698
|
-
text: `Comment ${args.commentId} on ${args.issueKey} updated
|
|
3715
|
+
text: `Comment ${args.commentId} on ${args.issueKey} updated:\n\n${editedText}\n\n${ECHO_DIRECTIVE}`,
|
|
3699
3716
|
},
|
|
3700
3717
|
],
|
|
3701
3718
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@rui.branco/jira-mcp",
|
|
3
|
-
"version": "1.7.
|
|
3
|
+
"version": "1.7.9",
|
|
4
4
|
"description": "Jira & Confluence MCP server for any MCP-compatible AI client (Claude Code, Codex, Antigravity, Cursor, etc.) - fetch tickets, search with JQL, update tickets, manage comments, change status, get Figma designs. Optional per-tool scopes, dry-run, audit log, and rate limiting.",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"bin": {
|