@pschroee/redmine-mcp 0.5.13 → 0.5.15
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/formatters/issue.js
CHANGED
|
@@ -157,8 +157,14 @@ export function formatIssueList(response) {
|
|
|
157
157
|
}
|
|
158
158
|
const customFieldIds = Array.from(customFieldMap.keys()).sort((a, b) => a - b);
|
|
159
159
|
const customFieldNames = customFieldIds.map(id => customFieldMap.get(id));
|
|
160
|
+
// Check if any issue has tags
|
|
161
|
+
const hasTags = issues.some(issue => issue.tags && issue.tags.length > 0);
|
|
160
162
|
// Table header
|
|
161
|
-
const headerCols = ["ID", "Subject", "Status", "Priority", "Assigned", "Version", "Created", "Updated"
|
|
163
|
+
const headerCols = ["ID", "Subject", "Status", "Priority", "Assigned", "Version", "Created", "Updated"];
|
|
164
|
+
if (hasTags) {
|
|
165
|
+
headerCols.push("Tags");
|
|
166
|
+
}
|
|
167
|
+
headerCols.push(...customFieldNames);
|
|
162
168
|
lines.push("| " + headerCols.join(" | ") + " |");
|
|
163
169
|
lines.push("|" + headerCols.map(() => "---").join("|") + "|");
|
|
164
170
|
// Table rows
|
|
@@ -171,6 +177,7 @@ export function formatIssueList(response) {
|
|
|
171
177
|
const version = issue.fixed_version?.name ?? "";
|
|
172
178
|
const created = formatDateShort(issue.created_on);
|
|
173
179
|
const updated = formatDateShort(issue.updated_on);
|
|
180
|
+
const tags = issue.tags?.map(t => t.name).join(", ") ?? "";
|
|
174
181
|
// Build custom field values in order
|
|
175
182
|
const cfValues = [];
|
|
176
183
|
for (const cfId of customFieldIds) {
|
|
@@ -183,7 +190,11 @@ export function formatIssueList(response) {
|
|
|
183
190
|
cfValues.push("");
|
|
184
191
|
}
|
|
185
192
|
}
|
|
186
|
-
const cols = [id, subject, status, priority, assigned, version, created, updated
|
|
193
|
+
const cols = [id, subject, status, priority, assigned, version, created, updated];
|
|
194
|
+
if (hasTags) {
|
|
195
|
+
cols.push(tags);
|
|
196
|
+
}
|
|
197
|
+
cols.push(...cfValues);
|
|
187
198
|
lines.push("| " + cols.join(" | ") + " |");
|
|
188
199
|
}
|
|
189
200
|
return lines.join("\n");
|
package/dist/redmine/client.d.ts
CHANGED
package/dist/redmine/client.js
CHANGED
|
@@ -109,6 +109,8 @@ export class RedmineClient {
|
|
|
109
109
|
query.set("offset", String(params.offset));
|
|
110
110
|
if (params?.query_id)
|
|
111
111
|
query.set("query_id", String(params.query_id));
|
|
112
|
+
if (params?.tags)
|
|
113
|
+
query.set("tags", params.tags);
|
|
112
114
|
const queryString = query.toString();
|
|
113
115
|
const path = `/issues.json${queryString ? `?${queryString}` : ""}`;
|
|
114
116
|
return this.request("GET", path);
|
package/dist/redmine/types.d.ts
CHANGED
|
@@ -237,6 +237,10 @@ export interface RedmineIssue {
|
|
|
237
237
|
total_estimated_hours?: number;
|
|
238
238
|
total_spent_hours?: number;
|
|
239
239
|
custom_fields?: RedmineCustomFieldValue[];
|
|
240
|
+
tags?: {
|
|
241
|
+
id: number;
|
|
242
|
+
name: string;
|
|
243
|
+
}[];
|
|
240
244
|
created_on: string;
|
|
241
245
|
updated_on: string;
|
|
242
246
|
closed_on?: string;
|
package/dist/tools/core.js
CHANGED
|
@@ -21,6 +21,7 @@ export function registerCoreTools(server, client) {
|
|
|
21
21
|
limit: z.number().optional().describe("Maximum results (default 25, max 100)"),
|
|
22
22
|
offset: z.number().optional().describe("Skip first N results"),
|
|
23
23
|
query_id: z.number().optional().describe("Use a saved query ID to filter issues (get IDs from list_queries). For project-specific queries, project_id is automatically fetched from the query if not provided."),
|
|
24
|
+
tags: z.string().optional().describe("Filter by tags (comma-separated tag names, requires redmine_tags plugin)"),
|
|
24
25
|
},
|
|
25
26
|
}, async (params) => {
|
|
26
27
|
const result = await client.listIssues(params);
|