@dyno181cm.nexsoft/zentao_mcp 1.2.0 → 1.2.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/build/index.js +1 -1
- package/build/tools.js +85 -2
- package/package.json +1 -1
package/build/index.js
CHANGED
package/build/tools.js
CHANGED
|
@@ -13,6 +13,87 @@ const client = new ZentaoClient();
|
|
|
13
13
|
*
|
|
14
14
|
* @param server The MCP Server instance where the tools will be registered.
|
|
15
15
|
*/
|
|
16
|
+
function parseFiles(files) {
|
|
17
|
+
if (!files)
|
|
18
|
+
return [];
|
|
19
|
+
const mapper = (f) => ({
|
|
20
|
+
id: f.id,
|
|
21
|
+
title: f.title || f.name,
|
|
22
|
+
extension: f.extension,
|
|
23
|
+
size: f.size
|
|
24
|
+
});
|
|
25
|
+
if (Array.isArray(files)) {
|
|
26
|
+
return files.map(mapper);
|
|
27
|
+
}
|
|
28
|
+
if (typeof files === 'object') {
|
|
29
|
+
return Object.values(files).map(mapper);
|
|
30
|
+
}
|
|
31
|
+
return [];
|
|
32
|
+
}
|
|
33
|
+
function cleanTask(task) {
|
|
34
|
+
if (!task)
|
|
35
|
+
return null;
|
|
36
|
+
return {
|
|
37
|
+
id: task.id,
|
|
38
|
+
name: task.name,
|
|
39
|
+
status: task.status,
|
|
40
|
+
pri: task.pri,
|
|
41
|
+
desc: task.desc,
|
|
42
|
+
estimate: task.estimate,
|
|
43
|
+
consumed: task.consumed,
|
|
44
|
+
left: task.left,
|
|
45
|
+
progress: task.progress,
|
|
46
|
+
openedBy: task.openedBy ? {
|
|
47
|
+
account: task.openedBy.account,
|
|
48
|
+
realname: task.openedBy.realname
|
|
49
|
+
} : undefined,
|
|
50
|
+
assignedTo: task.assignedTo ? {
|
|
51
|
+
account: task.assignedTo.account,
|
|
52
|
+
realname: task.assignedTo.realname
|
|
53
|
+
} : undefined,
|
|
54
|
+
finishedBy: task.finishedBy ? {
|
|
55
|
+
account: task.finishedBy.account,
|
|
56
|
+
realname: task.finishedBy.realname
|
|
57
|
+
} : undefined,
|
|
58
|
+
closedBy: task.closedBy ? {
|
|
59
|
+
account: task.closedBy.account,
|
|
60
|
+
realname: task.closedBy.realname
|
|
61
|
+
} : undefined,
|
|
62
|
+
closedReason: task.closedReason,
|
|
63
|
+
files: parseFiles(task.files)
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
function cleanBug(bug) {
|
|
67
|
+
if (!bug)
|
|
68
|
+
return null;
|
|
69
|
+
return {
|
|
70
|
+
id: bug.id,
|
|
71
|
+
title: bug.title,
|
|
72
|
+
status: bug.status,
|
|
73
|
+
severity: bug.severity,
|
|
74
|
+
pri: bug.pri,
|
|
75
|
+
type: bug.type,
|
|
76
|
+
steps: bug.steps,
|
|
77
|
+
openedBy: bug.openedBy ? {
|
|
78
|
+
account: bug.openedBy.account,
|
|
79
|
+
realname: bug.openedBy.realname
|
|
80
|
+
} : undefined,
|
|
81
|
+
assignedTo: bug.assignedTo ? {
|
|
82
|
+
account: bug.assignedTo.account,
|
|
83
|
+
realname: bug.assignedTo.realname
|
|
84
|
+
} : undefined,
|
|
85
|
+
resolvedBy: bug.resolvedBy ? {
|
|
86
|
+
account: bug.resolvedBy.account,
|
|
87
|
+
realname: bug.resolvedBy.realname
|
|
88
|
+
} : undefined,
|
|
89
|
+
resolution: bug.resolution,
|
|
90
|
+
closedBy: bug.closedBy ? {
|
|
91
|
+
account: bug.closedBy.account,
|
|
92
|
+
realname: bug.closedBy.realname
|
|
93
|
+
} : undefined,
|
|
94
|
+
files: parseFiles(bug.files)
|
|
95
|
+
};
|
|
96
|
+
}
|
|
16
97
|
export function registerTools(server) {
|
|
17
98
|
server.registerTool("zentao_get_task_details", {
|
|
18
99
|
description: "Get detailed information of a task",
|
|
@@ -21,8 +102,9 @@ export function registerTools(server) {
|
|
|
21
102
|
}
|
|
22
103
|
}, async ({ taskId }) => {
|
|
23
104
|
const data = await client.getTaskDetails(taskId);
|
|
105
|
+
const cleaned = cleanTask(data);
|
|
24
106
|
return {
|
|
25
|
-
content: [{ type: "text", text: JSON.stringify(
|
|
107
|
+
content: [{ type: "text", text: JSON.stringify(cleaned, null, 2) }],
|
|
26
108
|
};
|
|
27
109
|
});
|
|
28
110
|
server.registerTool("zentao_get_bug_details", {
|
|
@@ -32,8 +114,9 @@ export function registerTools(server) {
|
|
|
32
114
|
}
|
|
33
115
|
}, async ({ bugId }) => {
|
|
34
116
|
const data = await client.getBugDetails(bugId);
|
|
117
|
+
const cleaned = cleanBug(data);
|
|
35
118
|
return {
|
|
36
|
-
content: [{ type: "text", text: JSON.stringify(
|
|
119
|
+
content: [{ type: "text", text: JSON.stringify(cleaned, null, 2) }],
|
|
37
120
|
};
|
|
38
121
|
});
|
|
39
122
|
server.registerTool("zentao_download_attachment", {
|