mcp-jira-stdio 1.11.1 → 1.12.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.
package/README.md CHANGED
@@ -185,7 +185,7 @@ Restart Claude Desktop after adding the configuration.
185
185
  - `jira_get_issue`: Retrieve issue details by key (supports optional fields/expand).
186
186
  - `jira_search_issues`: Search for Jira issues using JQL with pagination and fields.
187
187
  - `jira_create_issue`: Create a new issue in a project (type, priority, assignee, labels, components).
188
- - `jira_update_issue`: Update an existing issue (summary, description, priority, assignee, labels, components).
188
+ - `jira_update_issue`: Update an existing issue (summary, description, priority, assignee, labels, components, fix versions).
189
189
  - `jira_create_subtask`: Create a subtask under a parent issue (auto-detects subtask type).
190
190
 
191
191
  ### Comments
package/dist/index.js CHANGED
@@ -440,7 +440,7 @@ var require_package2 = __commonJS({
440
440
  "package.json"(exports$1, module) {
441
441
  module.exports = {
442
442
  name: "mcp-jira-stdio",
443
- version: "1.11.1",
443
+ version: "1.12.0",
444
444
  mcpName: "io.github.freema/mcp-jira-stdio",
445
445
  description: "Model Context Protocol (MCP) server for Jira API integration",
446
446
  author: "graslt",
@@ -886,6 +886,7 @@ var UpdateIssueInputSchema = z.object({
886
886
  assignee: z.string().optional().describe("New assignee account ID"),
887
887
  labels: z.array(z.string()).optional().describe("New labels (replaces existing)"),
888
888
  components: z.array(z.string()).optional().describe("New components (replaces existing)"),
889
+ fixVersions: z.array(z.string()).optional().describe("New fix version names (replaces existing fix versions)"),
889
890
  parent: z.string().optional().describe(
890
891
  "New parent issue key (e.g., PROJECT-100). Set to empty string to remove the parent."
891
892
  ),
@@ -1287,6 +1288,9 @@ async function updateIssue(issueKey, updates) {
1287
1288
  if (updates.components !== void 0) {
1288
1289
  fields.components = updates.components.map((name) => ({ name }));
1289
1290
  }
1291
+ if (updates.fixVersions !== void 0) {
1292
+ fields.fixVersions = updates.fixVersions.map((name) => ({ name }));
1293
+ }
1290
1294
  if (updates.parent !== void 0) {
1291
1295
  fields.parent = updates.parent ? { key: updates.parent } : null;
1292
1296
  }
@@ -1687,6 +1691,8 @@ function formatIssueResponse(issue) {
1687
1691
  const labelsText = labelsArray.length > 0 ? labelsArray.join(", ") : "None";
1688
1692
  const componentsArray = Array.isArray(fields?.components) ? fields.components : [];
1689
1693
  const componentsText = componentsArray.length > 0 ? componentsArray.map((c) => c.name).join(", ") : "None";
1694
+ const fixVersionsArray = Array.isArray(fields?.fixVersions) ? fields.fixVersions : [];
1695
+ const fixVersionsText = fixVersionsArray.length > 0 ? fixVersionsArray.map((v) => v.name).join(", ") : "None";
1690
1696
  let description = fields?.description;
1691
1697
  if (description && typeof description === "object") {
1692
1698
  const parsed = adfToPlainText(description);
@@ -1712,7 +1718,8 @@ function formatIssueResponse(issue) {
1712
1718
  **Project:** ${fields?.project?.name || "Unknown"} (${fields?.project?.key || "N/A"})
1713
1719
  **Issue Type:** ${fields?.issuetype?.name || "Unknown"}
1714
1720
  **Labels:** ${labelsText}
1715
- **Components:** ${componentsText}${parentText}
1721
+ **Components:** ${componentsText}
1722
+ **Fix Versions:** ${fixVersionsText}${parentText}
1716
1723
  **Created:** ${createdText}
1717
1724
  **Updated:** ${updatedText}
1718
1725
 
@@ -2460,7 +2467,7 @@ async function handleCreateIssue(input) {
2460
2467
  // src/tools/update-issue.ts
2461
2468
  var log12 = createLogger("tool:update-issue");
2462
2469
  var updateIssueTool = {
2463
- description: 'Updates an existing Jira issue by its key. Supports updating summary, description, priority, assignee, labels, and components. Description format is controlled by the "format" parameter (default: markdown). Only specified fields will be updated.'};
2470
+ description: 'Updates an existing Jira issue by its key. Supports updating summary, description, priority, assignee, labels, components, and fix versions. Description format is controlled by the "format" parameter (default: markdown). Only specified fields will be updated.'};
2464
2471
  async function handleUpdateIssue(input) {
2465
2472
  try {
2466
2473
  const validated = validateInput(UpdateIssueInputSchema, input);
@@ -2472,6 +2479,7 @@ async function handleUpdateIssue(input) {
2472
2479
  if (validated.assignee !== void 0) updateParams.assignee = validated.assignee;
2473
2480
  if (validated.labels !== void 0) updateParams.labels = validated.labels;
2474
2481
  if (validated.components !== void 0) updateParams.components = validated.components;
2482
+ if (validated.fixVersions !== void 0) updateParams.fixVersions = validated.fixVersions;
2475
2483
  if (validated.parent !== void 0) updateParams.parent = validated.parent;
2476
2484
  if (validated.format !== void 0) updateParams.format = validated.format;
2477
2485
  await updateIssue(validated.issueKey, updateParams);