@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 CHANGED
@@ -8,7 +8,7 @@ dotenv.config();
8
8
  // Create the MCP server instance
9
9
  const server = new McpServer({
10
10
  name: "Zentao MCP Server",
11
- version: "1.2.0"
11
+ version: "1.2.1"
12
12
  });
13
13
  // Register all Zentao-specific tools onto the server
14
14
  registerTools(server);
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(data, null, 2) }],
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(data, null, 2) }],
119
+ content: [{ type: "text", text: JSON.stringify(cleaned, null, 2) }],
37
120
  };
38
121
  });
39
122
  server.registerTool("zentao_download_attachment", {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@dyno181cm.nexsoft/zentao_mcp",
3
- "version": "1.2.0",
3
+ "version": "1.2.1",
4
4
  "description": "Zentao MCP Server",
5
5
  "main": "build/index.js",
6
6
  "bin": {