ncloud-mcp-server 1.0.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.
Files changed (220) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +159 -0
  3. package/README_EN.md +159 -0
  4. package/dist/auth/signature.d.ts +16 -0
  5. package/dist/auth/signature.js +18 -0
  6. package/dist/auth/signature.js.map +1 -0
  7. package/dist/auth/signature.test.d.ts +1 -0
  8. package/dist/auth/signature.test.js +90 -0
  9. package/dist/auth/signature.test.js.map +1 -0
  10. package/dist/client/ncloud-client.d.ts +27 -0
  11. package/dist/client/ncloud-client.js +270 -0
  12. package/dist/client/ncloud-client.js.map +1 -0
  13. package/dist/client/ncloud-client.test.d.ts +1 -0
  14. package/dist/client/ncloud-client.test.js +477 -0
  15. package/dist/client/ncloud-client.test.js.map +1 -0
  16. package/dist/client/s3-compatible-client.d.ts +49 -0
  17. package/dist/client/s3-compatible-client.js +210 -0
  18. package/dist/client/s3-compatible-client.js.map +1 -0
  19. package/dist/client/swift-compatible-client.d.ts +68 -0
  20. package/dist/client/swift-compatible-client.js +173 -0
  21. package/dist/client/swift-compatible-client.js.map +1 -0
  22. package/dist/index.d.ts +2 -0
  23. package/dist/index.js +362 -0
  24. package/dist/index.js.map +1 -0
  25. package/dist/tools/acg.d.ts +3 -0
  26. package/dist/tools/acg.js +220 -0
  27. package/dist/tools/acg.js.map +1 -0
  28. package/dist/tools/activity-tracer.d.ts +3 -0
  29. package/dist/tools/activity-tracer.js +77 -0
  30. package/dist/tools/activity-tracer.js.map +1 -0
  31. package/dist/tools/analytics-cdss.d.ts +3 -0
  32. package/dist/tools/analytics-cdss.js +618 -0
  33. package/dist/tools/analytics-cdss.js.map +1 -0
  34. package/dist/tools/analytics-datacatalog.d.ts +10 -0
  35. package/dist/tools/analytics-datacatalog.js +409 -0
  36. package/dist/tools/analytics-datacatalog.js.map +1 -0
  37. package/dist/tools/analytics-dataflow.d.ts +16 -0
  38. package/dist/tools/analytics-dataflow.js +478 -0
  39. package/dist/tools/analytics-dataflow.js.map +1 -0
  40. package/dist/tools/analytics-dataforest.d.ts +10 -0
  41. package/dist/tools/analytics-dataforest.js +379 -0
  42. package/dist/tools/analytics-dataforest.js.map +1 -0
  43. package/dist/tools/analytics-dataquery.d.ts +16 -0
  44. package/dist/tools/analytics-dataquery.js +143 -0
  45. package/dist/tools/analytics-dataquery.js.map +1 -0
  46. package/dist/tools/analytics-datastream.d.ts +13 -0
  47. package/dist/tools/analytics-datastream.js +359 -0
  48. package/dist/tools/analytics-datastream.js.map +1 -0
  49. package/dist/tools/analytics-hadoop.d.ts +12 -0
  50. package/dist/tools/analytics-hadoop.js +450 -0
  51. package/dist/tools/analytics-hadoop.js.map +1 -0
  52. package/dist/tools/analytics-ses.d.ts +3 -0
  53. package/dist/tools/analytics-ses.js +653 -0
  54. package/dist/tools/analytics-ses.js.map +1 -0
  55. package/dist/tools/api-gateway.d.ts +3 -0
  56. package/dist/tools/api-gateway.js +202 -0
  57. package/dist/tools/api-gateway.js.map +1 -0
  58. package/dist/tools/autoscaling.d.ts +3 -0
  59. package/dist/tools/autoscaling.js +430 -0
  60. package/dist/tools/autoscaling.js.map +1 -0
  61. package/dist/tools/billing.d.ts +14 -0
  62. package/dist/tools/billing.js +545 -0
  63. package/dist/tools/billing.js.map +1 -0
  64. package/dist/tools/certificate-manager.d.ts +18 -0
  65. package/dist/tools/certificate-manager.js +84 -0
  66. package/dist/tools/certificate-manager.js.map +1 -0
  67. package/dist/tools/cloud-advisor.d.ts +3 -0
  68. package/dist/tools/cloud-advisor.js +202 -0
  69. package/dist/tools/cloud-advisor.js.map +1 -0
  70. package/dist/tools/cloud-functions.d.ts +3 -0
  71. package/dist/tools/cloud-functions.js +497 -0
  72. package/dist/tools/cloud-functions.js.map +1 -0
  73. package/dist/tools/cloud-insight-integration.d.ts +3 -0
  74. package/dist/tools/cloud-insight-integration.js +90 -0
  75. package/dist/tools/cloud-insight-integration.js.map +1 -0
  76. package/dist/tools/cloud-insight-plugin.d.ts +3 -0
  77. package/dist/tools/cloud-insight-plugin.js +600 -0
  78. package/dist/tools/cloud-insight-plugin.js.map +1 -0
  79. package/dist/tools/cloud-insight-rule.d.ts +3 -0
  80. package/dist/tools/cloud-insight-rule.js +570 -0
  81. package/dist/tools/cloud-insight-rule.js.map +1 -0
  82. package/dist/tools/cloud-insight.d.ts +3 -0
  83. package/dist/tools/cloud-insight.js +246 -0
  84. package/dist/tools/cloud-insight.js.map +1 -0
  85. package/dist/tools/common.d.ts +3 -0
  86. package/dist/tools/common.js +120 -0
  87. package/dist/tools/common.js.map +1 -0
  88. package/dist/tools/compute-initscript.d.ts +3 -0
  89. package/dist/tools/compute-initscript.js +62 -0
  90. package/dist/tools/compute-initscript.js.map +1 -0
  91. package/dist/tools/compute-loginkey.d.ts +3 -0
  92. package/dist/tools/compute-loginkey.js +59 -0
  93. package/dist/tools/compute-loginkey.js.map +1 -0
  94. package/dist/tools/compute-placement.d.ts +3 -0
  95. package/dist/tools/compute-placement.js +196 -0
  96. package/dist/tools/compute-placement.js.map +1 -0
  97. package/dist/tools/compute-publicip.d.ts +3 -0
  98. package/dist/tools/compute-publicip.js +97 -0
  99. package/dist/tools/compute-publicip.js.map +1 -0
  100. package/dist/tools/compute-server.d.ts +3 -0
  101. package/dist/tools/compute-server.js +445 -0
  102. package/dist/tools/compute-server.js.map +1 -0
  103. package/dist/tools/compute-server.test.d.ts +1 -0
  104. package/dist/tools/compute-server.test.js +224 -0
  105. package/dist/tools/compute-server.test.js.map +1 -0
  106. package/dist/tools/compute-storage.d.ts +3 -0
  107. package/dist/tools/compute-storage.js +240 -0
  108. package/dist/tools/compute-storage.js.map +1 -0
  109. package/dist/tools/containers-nks.d.ts +13 -0
  110. package/dist/tools/containers-nks.js +576 -0
  111. package/dist/tools/containers-nks.js.map +1 -0
  112. package/dist/tools/containers-registry.d.ts +3 -0
  113. package/dist/tools/containers-registry.js +181 -0
  114. package/dist/tools/containers-registry.js.map +1 -0
  115. package/dist/tools/database-cache.d.ts +3 -0
  116. package/dist/tools/database-cache.js +388 -0
  117. package/dist/tools/database-cache.js.map +1 -0
  118. package/dist/tools/database-mongodb.d.ts +3 -0
  119. package/dist/tools/database-mongodb.js +460 -0
  120. package/dist/tools/database-mongodb.js.map +1 -0
  121. package/dist/tools/database-mssql.d.ts +3 -0
  122. package/dist/tools/database-mssql.js +345 -0
  123. package/dist/tools/database-mssql.js.map +1 -0
  124. package/dist/tools/database-mysql.d.ts +3 -0
  125. package/dist/tools/database-mysql.js +500 -0
  126. package/dist/tools/database-mysql.js.map +1 -0
  127. package/dist/tools/database-postgresql.d.ts +3 -0
  128. package/dist/tools/database-postgresql.js +432 -0
  129. package/dist/tools/database-postgresql.js.map +1 -0
  130. package/dist/tools/global-dns.d.ts +3 -0
  131. package/dist/tools/global-dns.js +207 -0
  132. package/dist/tools/global-dns.js.map +1 -0
  133. package/dist/tools/global-edge.d.ts +3 -0
  134. package/dist/tools/global-edge.js +386 -0
  135. package/dist/tools/global-edge.js.map +1 -0
  136. package/dist/tools/global-traffic-manager.d.ts +3 -0
  137. package/dist/tools/global-traffic-manager.js +497 -0
  138. package/dist/tools/global-traffic-manager.js.map +1 -0
  139. package/dist/tools/index.d.ts +63 -0
  140. package/dist/tools/index.js +64 -0
  141. package/dist/tools/index.js.map +1 -0
  142. package/dist/tools/kms.d.ts +8 -0
  143. package/dist/tools/kms.js +529 -0
  144. package/dist/tools/kms.js.map +1 -0
  145. package/dist/tools/loadbalancer.d.ts +3 -0
  146. package/dist/tools/loadbalancer.js +341 -0
  147. package/dist/tools/loadbalancer.js.map +1 -0
  148. package/dist/tools/log-analytics.d.ts +3 -0
  149. package/dist/tools/log-analytics.js +183 -0
  150. package/dist/tools/log-analytics.js.map +1 -0
  151. package/dist/tools/media-imageoptimizer.d.ts +3 -0
  152. package/dist/tools/media-imageoptimizer.js +187 -0
  153. package/dist/tools/media-imageoptimizer.js.map +1 -0
  154. package/dist/tools/media-livestation.d.ts +3 -0
  155. package/dist/tools/media-livestation.js +252 -0
  156. package/dist/tools/media-livestation.js.map +1 -0
  157. package/dist/tools/media-vodstation.d.ts +3 -0
  158. package/dist/tools/media-vodstation.js +197 -0
  159. package/dist/tools/media-vodstation.js.map +1 -0
  160. package/dist/tools/nat-gateway.d.ts +3 -0
  161. package/dist/tools/nat-gateway.js +91 -0
  162. package/dist/tools/nat-gateway.js.map +1 -0
  163. package/dist/tools/network-acl.d.ts +3 -0
  164. package/dist/tools/network-acl.js +322 -0
  165. package/dist/tools/network-acl.js.map +1 -0
  166. package/dist/tools/network-interface.d.ts +3 -0
  167. package/dist/tools/network-interface.js +193 -0
  168. package/dist/tools/network-interface.js.map +1 -0
  169. package/dist/tools/private-ca.d.ts +8 -0
  170. package/dist/tools/private-ca.js +368 -0
  171. package/dist/tools/private-ca.js.map +1 -0
  172. package/dist/tools/resource-manager.d.ts +3 -0
  173. package/dist/tools/resource-manager.js +151 -0
  174. package/dist/tools/resource-manager.js.map +1 -0
  175. package/dist/tools/route-table.d.ts +3 -0
  176. package/dist/tools/route-table.js +205 -0
  177. package/dist/tools/route-table.js.map +1 -0
  178. package/dist/tools/security-monitoring.d.ts +3 -0
  179. package/dist/tools/security-monitoring.js +182 -0
  180. package/dist/tools/security-monitoring.js.map +1 -0
  181. package/dist/tools/sens.d.ts +3 -0
  182. package/dist/tools/sens.js +240 -0
  183. package/dist/tools/sens.js.map +1 -0
  184. package/dist/tools/sourcebuild.d.ts +3 -0
  185. package/dist/tools/sourcebuild.js +481 -0
  186. package/dist/tools/sourcebuild.js.map +1 -0
  187. package/dist/tools/sourcecommit.d.ts +13 -0
  188. package/dist/tools/sourcecommit.js +228 -0
  189. package/dist/tools/sourcecommit.js.map +1 -0
  190. package/dist/tools/sourcedeploy.d.ts +3 -0
  191. package/dist/tools/sourcedeploy.js +448 -0
  192. package/dist/tools/sourcedeploy.js.map +1 -0
  193. package/dist/tools/sourcepipeline.d.ts +12 -0
  194. package/dist/tools/sourcepipeline.js +357 -0
  195. package/dist/tools/sourcepipeline.js.map +1 -0
  196. package/dist/tools/storage-archive.d.ts +3 -0
  197. package/dist/tools/storage-archive.js +337 -0
  198. package/dist/tools/storage-archive.js.map +1 -0
  199. package/dist/tools/storage-nas.d.ts +3 -0
  200. package/dist/tools/storage-nas.js +288 -0
  201. package/dist/tools/storage-nas.js.map +1 -0
  202. package/dist/tools/storage-ncloud.d.ts +3 -0
  203. package/dist/tools/storage-ncloud.js +864 -0
  204. package/dist/tools/storage-ncloud.js.map +1 -0
  205. package/dist/tools/storage-object.d.ts +3 -0
  206. package/dist/tools/storage-object.js +982 -0
  207. package/dist/tools/storage-object.js.map +1 -0
  208. package/dist/tools/sub-account.d.ts +3 -0
  209. package/dist/tools/sub-account.js +311 -0
  210. package/dist/tools/sub-account.js.map +1 -0
  211. package/dist/tools/target-group.d.ts +3 -0
  212. package/dist/tools/target-group.js +207 -0
  213. package/dist/tools/target-group.js.map +1 -0
  214. package/dist/tools/vpc-peering.d.ts +3 -0
  215. package/dist/tools/vpc-peering.js +109 -0
  216. package/dist/tools/vpc-peering.js.map +1 -0
  217. package/dist/tools/vpc.d.ts +3 -0
  218. package/dist/tools/vpc.js +194 -0
  219. package/dist/tools/vpc.js.map +1 -0
  220. package/package.json +53 -0
@@ -0,0 +1,618 @@
1
+ import { z } from "zod";
2
+ /**
3
+ * Cloud Data Streaming Service (CDSS) — Apache Kafka 관리형 서비스
4
+ *
5
+ * Base URL: https://clouddatastreamingservice.apigw.ntruss.com
6
+ * 리전별 경로: /api/v1/ (KR), /api/sgn-v1/ (SGN), /api/jpn-v1/ (JPN)
7
+ */
8
+ function getApiPrefix(regionCode) {
9
+ switch (regionCode) {
10
+ case "SGN": return "/api/sgn-v1";
11
+ case "JPN": return "/api/jpn-v1";
12
+ default: return "/api/v1";
13
+ }
14
+ }
15
+ export function registerCloudDataStreamingTools(server, client) {
16
+ const regionCode = client.getRegionCode();
17
+ const prefix = getApiPrefix(regionCode);
18
+ // ─── Cluster Query Tools ─────────────────────────────────────────────
19
+ server.tool("ncloud_cdss_list_clusters", "List Cloud Data Streaming Service (Kafka) clusters with optional filtering", {
20
+ inputText: z.string().optional().describe("Search keyword (partial match on cluster name)"),
21
+ vpcName: z.string().optional().describe("VPC name filter (exact match)"),
22
+ pageNo: z.number().optional().describe("Page number (default: 1)"),
23
+ pageSize: z.number().optional().describe("Page size (default: 10)"),
24
+ }, async (params) => {
25
+ try {
26
+ const body = {};
27
+ if (params.inputText)
28
+ body.inputText = params.inputText;
29
+ if (params.vpcName)
30
+ body.vpcName = params.vpcName;
31
+ if (params.pageNo)
32
+ body.pageNo = params.pageNo;
33
+ if (params.pageSize)
34
+ body.pageSize = params.pageSize;
35
+ const result = await client.postRequest(`${prefix}/cluster/getClusterInfoList`, body);
36
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
37
+ }
38
+ catch (error) {
39
+ return { content: [{ type: "text", text: error.message }], isError: true };
40
+ }
41
+ });
42
+ server.tool("ncloud_cdss_get_cluster_detail", "Get detailed information about a specific CDSS (Kafka) cluster", {
43
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number from cluster list"),
44
+ }, async (params) => {
45
+ try {
46
+ const result = await client.postRequest(`${prefix}/cluster/getClusterInfoList/${params.serviceGroupInstanceNo}`, {});
47
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
48
+ }
49
+ catch (error) {
50
+ return { content: [{ type: "text", text: error.message }], isError: true };
51
+ }
52
+ });
53
+ server.tool("ncloud_cdss_get_cluster_status", "Get health status of a CDSS cluster (broker, zookeeper, CMAK status per node)", {
54
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
55
+ }, async (params) => {
56
+ try {
57
+ const result = await client.requestRaw("GET", `${prefix}/cluster/getClusterStatus/${params.serviceGroupInstanceNo}`);
58
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
59
+ }
60
+ catch (error) {
61
+ return { content: [{ type: "text", text: error.message }], isError: true };
62
+ }
63
+ });
64
+ server.tool("ncloud_cdss_get_cluster_acg", "Get ACG (Access Control Group) rules for a CDSS cluster", {
65
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
66
+ }, async (params) => {
67
+ try {
68
+ const result = await client.requestRaw("GET", `${prefix}/cluster/getClusterAcgInfo/${params.serviceGroupInstanceNo}`);
69
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
70
+ }
71
+ catch (error) {
72
+ return { content: [{ type: "text", text: error.message }], isError: true };
73
+ }
74
+ });
75
+ server.tool("ncloud_cdss_get_certificate", "Get TLS certificate used for cluster communication encryption", {
76
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
77
+ }, async (params) => {
78
+ try {
79
+ const result = await client.requestRaw("GET", `${prefix}/cluster/downloadCertificate/${params.serviceGroupInstanceNo}`);
80
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
81
+ }
82
+ catch (error) {
83
+ return { content: [{ type: "text", text: error.message }], isError: true };
84
+ }
85
+ });
86
+ // ─── Version & Product Query Tools ───────────────────────────────────
87
+ server.tool("ncloud_cdss_get_kafka_versions", "Get available Kafka version list for CDSS cluster creation", {}, async () => {
88
+ try {
89
+ const result = await client.requestRaw("GET", `${prefix}/cluster/getKafkaVersionList`);
90
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
91
+ }
92
+ catch (error) {
93
+ return { content: [{ type: "text", text: error.message }], isError: true };
94
+ }
95
+ });
96
+ server.tool("ncloud_cdss_get_node_products", "Get available node server types (product codes) for CDSS cluster creation", {}, async () => {
97
+ try {
98
+ const result = await client.requestRaw("GET", `${prefix}/cluster/getNodeProductList`);
99
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
100
+ }
101
+ catch (error) {
102
+ return { content: [{ type: "text", text: error.message }], isError: true };
103
+ }
104
+ });
105
+ server.tool("ncloud_cdss_get_os_products", "Get available operating system types for CDSS cluster creation", {}, async () => {
106
+ try {
107
+ const result = await client.requestRaw("GET", `${prefix}/cluster/getOsProductList`);
108
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
109
+ }
110
+ catch (error) {
111
+ return { content: [{ type: "text", text: error.message }], isError: true };
112
+ }
113
+ });
114
+ server.tool("ncloud_cdss_get_vpc_list", "Get available VPC list for CDSS cluster creation", {}, async () => {
115
+ try {
116
+ const result = await client.requestRaw("GET", `${prefix}/cluster/getVpcList`);
117
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
118
+ }
119
+ catch (error) {
120
+ return { content: [{ type: "text", text: error.message }], isError: true };
121
+ }
122
+ });
123
+ server.tool("ncloud_cdss_get_subnet_list", "Get available subnet list for CDSS cluster creation", {
124
+ vpcNo: z.number().optional().describe("VPC number to filter subnets"),
125
+ }, async (params) => {
126
+ try {
127
+ const queryParams = {};
128
+ if (params.vpcNo)
129
+ queryParams.vpcNo = params.vpcNo;
130
+ const result = await client.requestRaw("GET", `${prefix}/cluster/getSubnetList`, queryParams);
131
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
132
+ }
133
+ catch (error) {
134
+ return { content: [{ type: "text", text: error.message }], isError: true };
135
+ }
136
+ });
137
+ // ─── Cluster Create Tool ─────────────────────────────────────────────
138
+ server.tool("ncloud_cdss_create_cluster", "Create a new CDSS (Kafka) cluster (G2). Use dryRun=true to preview.", {
139
+ clusterName: z.string().describe("Cluster name (3-15 chars, lowercase+numbers+'-')"),
140
+ kafkaVersionCode: z.number().describe("Kafka version code (from get_kafka_versions)"),
141
+ configGroupNo: z.number().describe("Config group number"),
142
+ kafkaManagerUserName: z.string().describe("CMAK access account ID"),
143
+ kafkaManagerUserPassword: z.string().describe("CMAK access account password"),
144
+ softwareProductCode: z.string().describe("OS type code (from get_os_products)"),
145
+ vpcNo: z.number().describe("VPC number"),
146
+ managerNodeSubnetNo: z.number().describe("Manager node subnet number"),
147
+ managerNodeProductCode: z.string().describe("Manager node server type code"),
148
+ brokerNodeSubnetNo: z.number().describe("Broker node subnet number"),
149
+ brokerNodeCount: z.number().describe("Number of broker nodes (3-10)"),
150
+ brokerNodeProductCode: z.string().describe("Broker node server type code"),
151
+ brokerNodeStorageSize: z.number().describe("Broker storage in GB (100-2000, 10GB increment)"),
152
+ dryRun: z.boolean().optional().default(false).describe("Preview without creating"),
153
+ }, async (params) => {
154
+ try {
155
+ if (params.dryRun) {
156
+ const { dryRun, ...rest } = params;
157
+ return { content: [{ type: "text", text: JSON.stringify({
158
+ label: "Dry-Run Preview: CDSS Cluster Creation (G2)",
159
+ ...rest,
160
+ message: "No cluster created. Call again with dryRun=false to create.",
161
+ }, null, 2) }] };
162
+ }
163
+ const { dryRun, ...apiParams } = params;
164
+ const result = await client.postRequest(`${prefix}/cluster/createCDSSCluster`, apiParams);
165
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
166
+ }
167
+ catch (error) {
168
+ return { content: [{ type: "text", text: error.message }], isError: true };
169
+ }
170
+ });
171
+ // ─── Cluster Destructive Tool ────────────────────────────────────────
172
+ server.tool("ncloud_cdss_delete_cluster", "⚠️ Destructive: Permanently delete a CDSS (Kafka) cluster. All data will be lost. Set confirm=true to execute.", {
173
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number to delete (required)"),
174
+ confirm: z.boolean().optional().default(false).describe("Must be true to execute deletion"),
175
+ }, async (params) => {
176
+ try {
177
+ if (!params.serviceGroupInstanceNo) {
178
+ return { content: [{ type: "text", text: "Error: serviceGroupInstanceNo is required." }], isError: true };
179
+ }
180
+ if (!params.confirm) {
181
+ return { content: [{ type: "text", text: `⚠️ This will permanently delete CDSS cluster [${params.serviceGroupInstanceNo}]. All data will be lost.\n\nTo execute, call again with confirm=true.` }] };
182
+ }
183
+ const result = await client.deleteRequest(`${prefix}/cluster/deleteCDSSCluster/${params.serviceGroupInstanceNo}`);
184
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
185
+ }
186
+ catch (error) {
187
+ return { content: [{ type: "text", text: error.message }], isError: true };
188
+ }
189
+ });
190
+ // ─── Node Management Tools ───────────────────────────────────────────
191
+ server.tool("ncloud_cdss_list_nodes", "List all nodes (broker, manager) in a CDSS cluster", {
192
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
193
+ }, async (params) => {
194
+ try {
195
+ const result = await client.requestRaw("GET", `${prefix}/cluster/getClusterNodeList/${params.serviceGroupInstanceNo}`);
196
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
197
+ }
198
+ catch (error) {
199
+ return { content: [{ type: "text", text: error.message }], isError: true };
200
+ }
201
+ });
202
+ server.tool("ncloud_cdss_add_nodes", "Add broker nodes to a CDSS cluster", {
203
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
204
+ newBrokerNodeCount: z.number().describe("Number of broker nodes to add (1-10)"),
205
+ }, async (params) => {
206
+ try {
207
+ const result = await client.postRequest(`${prefix}/cluster/changeCountOfBrokerNode/${params.serviceGroupInstanceNo}`, { newBrokerNodeCount: params.newBrokerNodeCount });
208
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
209
+ }
210
+ catch (error) {
211
+ return { content: [{ type: "text", text: error.message }], isError: true };
212
+ }
213
+ });
214
+ server.tool("ncloud_cdss_get_broker_info", "Get broker node communication info (endpoints, ports) for a CDSS cluster", {
215
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
216
+ }, async (params) => {
217
+ try {
218
+ const result = await client.requestRaw("GET", `${prefix}/cluster/getBrokerInfo/${params.serviceGroupInstanceNo}`);
219
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
220
+ }
221
+ catch (error) {
222
+ return { content: [{ type: "text", text: error.message }], isError: true };
223
+ }
224
+ });
225
+ server.tool("ncloud_cdss_get_node_spec", "Get current server spec details for nodes in a CDSS cluster", {
226
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
227
+ }, async (params) => {
228
+ try {
229
+ const result = await client.requestRaw("GET", `${prefix}/cluster/getNodeSpecDetail/${params.serviceGroupInstanceNo}`);
230
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
231
+ }
232
+ catch (error) {
233
+ return { content: [{ type: "text", text: error.message }], isError: true };
234
+ }
235
+ });
236
+ server.tool("ncloud_cdss_change_node_spec", "Change server spec for nodes in a CDSS cluster", {
237
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
238
+ brokerNodeProductCode: z.string().optional().describe("New broker node product code"),
239
+ managerNodeProductCode: z.string().optional().describe("New manager node product code"),
240
+ }, async (params) => {
241
+ try {
242
+ const body = {};
243
+ if (params.brokerNodeProductCode)
244
+ body.brokerNodeProductCode = params.brokerNodeProductCode;
245
+ if (params.managerNodeProductCode)
246
+ body.managerNodeProductCode = params.managerNodeProductCode;
247
+ const result = await client.postRequest(`${prefix}/cluster/changeSpecNode/${params.serviceGroupInstanceNo}`, body);
248
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
249
+ }
250
+ catch (error) {
251
+ return { content: [{ type: "text", text: error.message }], isError: true };
252
+ }
253
+ });
254
+ // ─── Cluster Service Restart Tools ───────────────────────────────────
255
+ server.tool("ncloud_cdss_restart_all_services", "Restart all services (Kafka + ZooKeeper + CMAK) in a CDSS cluster", {
256
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
257
+ }, async (params) => {
258
+ try {
259
+ const result = await client.postRequest(`${prefix}/cluster/restartAllServices/${params.serviceGroupInstanceNo}`, {});
260
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
261
+ }
262
+ catch (error) {
263
+ return { content: [{ type: "text", text: error.message }], isError: true };
264
+ }
265
+ });
266
+ server.tool("ncloud_cdss_restart_kafka", "Restart Kafka and ZooKeeper services in a CDSS cluster", {
267
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
268
+ }, async (params) => {
269
+ try {
270
+ const result = await client.postRequest(`${prefix}/cluster/restartKafkaService/${params.serviceGroupInstanceNo}`, {});
271
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
272
+ }
273
+ catch (error) {
274
+ return { content: [{ type: "text", text: error.message }], isError: true };
275
+ }
276
+ });
277
+ server.tool("ncloud_cdss_restart_cmak", "Restart CMAK (Cluster Manager for Apache Kafka) in a CDSS cluster", {
278
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
279
+ }, async (params) => {
280
+ try {
281
+ const result = await client.postRequest(`${prefix}/cluster/restartCmakService/${params.serviceGroupInstanceNo}`, {});
282
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
283
+ }
284
+ catch (error) {
285
+ return { content: [{ type: "text", text: error.message }], isError: true };
286
+ }
287
+ });
288
+ server.tool("ncloud_cdss_restart_kafka_per_node", "Restart Kafka on a specific node in a CDSS cluster", {
289
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
290
+ computeInstanceNo: z.string().describe("Node compute instance number to restart"),
291
+ }, async (params) => {
292
+ try {
293
+ const result = await client.postRequest(`${prefix}/cluster/restartKafkaServicePerNode/${params.serviceGroupInstanceNo}`, { computeInstanceNo: params.computeInstanceNo });
294
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
295
+ }
296
+ catch (error) {
297
+ return { content: [{ type: "text", text: error.message }], isError: true };
298
+ }
299
+ });
300
+ // ─── Public Domain & Endpoint Tools ──────────────────────────────────
301
+ server.tool("ncloud_cdss_enable_public_domain", "Enable public domain for CMAK management tool access", {
302
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
303
+ }, async (params) => {
304
+ try {
305
+ const result = await client.postRequest(`${prefix}/cluster/enablePublicDomain/${params.serviceGroupInstanceNo}`, {});
306
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
307
+ }
308
+ catch (error) {
309
+ return { content: [{ type: "text", text: error.message }], isError: true };
310
+ }
311
+ });
312
+ server.tool("ncloud_cdss_disable_public_domain", "Disable public domain for CMAK management tool access", {
313
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
314
+ }, async (params) => {
315
+ try {
316
+ const result = await client.postRequest(`${prefix}/cluster/disablePublicDomain/${params.serviceGroupInstanceNo}`, {});
317
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
318
+ }
319
+ catch (error) {
320
+ return { content: [{ type: "text", text: error.message }], isError: true };
321
+ }
322
+ });
323
+ server.tool("ncloud_cdss_enable_public_endpoint", "Enable public endpoint for broker nodes", {
324
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
325
+ }, async (params) => {
326
+ try {
327
+ const result = await client.postRequest(`${prefix}/cluster/enableBrokerNodePublicEndpoint/${params.serviceGroupInstanceNo}`, {});
328
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
329
+ }
330
+ catch (error) {
331
+ return { content: [{ type: "text", text: error.message }], isError: true };
332
+ }
333
+ });
334
+ server.tool("ncloud_cdss_disable_public_endpoint", "Disable public endpoint for broker nodes", {
335
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
336
+ }, async (params) => {
337
+ try {
338
+ const result = await client.postRequest(`${prefix}/cluster/disableBrokerNodePublicEndpoint/${params.serviceGroupInstanceNo}`, {});
339
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
340
+ }
341
+ catch (error) {
342
+ return { content: [{ type: "text", text: error.message }], isError: true };
343
+ }
344
+ });
345
+ server.tool("ncloud_cdss_reset_cmak_password", "Reset CMAK access account password for a CDSS cluster", {
346
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
347
+ kafkaManagerUserPassword: z.string().describe("New CMAK password (8-20 chars, letters+numbers+special)"),
348
+ }, async (params) => {
349
+ try {
350
+ const result = await client.postRequest(`${prefix}/cluster/resetCmakPassword/${params.serviceGroupInstanceNo}`, { kafkaManagerUserPassword: params.kafkaManagerUserPassword });
351
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
352
+ }
353
+ catch (error) {
354
+ return { content: [{ type: "text", text: error.message }], isError: true };
355
+ }
356
+ });
357
+ // ─── Monitoring Tools ────────────────────────────────────────────────
358
+ server.tool("ncloud_cdss_get_monitoring", "Get monitoring metrics for a CDSS cluster and its nodes", {
359
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
360
+ startTime: z.string().optional().describe("Start time (ISO 8601 format)"),
361
+ endTime: z.string().optional().describe("End time (ISO 8601 format)"),
362
+ }, async (params) => {
363
+ try {
364
+ const body = {
365
+ serviceGroupInstanceNo: params.serviceGroupInstanceNo,
366
+ };
367
+ if (params.startTime)
368
+ body.startTime = params.startTime;
369
+ if (params.endTime)
370
+ body.endTime = params.endTime;
371
+ const result = await client.postRequest(`${prefix}/monitoring/getMonitoringData`, body);
372
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
373
+ }
374
+ catch (error) {
375
+ return { content: [{ type: "text", text: error.message }], isError: true };
376
+ }
377
+ });
378
+ server.tool("ncloud_cdss_get_os_monitoring", "Get OS-level monitoring metrics (CPU, memory, disk) for CDSS cluster nodes", {
379
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
380
+ startTime: z.string().optional().describe("Start time (ISO 8601 format)"),
381
+ endTime: z.string().optional().describe("End time (ISO 8601 format)"),
382
+ }, async (params) => {
383
+ try {
384
+ const body = {
385
+ serviceGroupInstanceNo: params.serviceGroupInstanceNo,
386
+ };
387
+ if (params.startTime)
388
+ body.startTime = params.startTime;
389
+ if (params.endTime)
390
+ body.endTime = params.endTime;
391
+ const result = await client.postRequest(`${prefix}/monitoring/getOsMonitoringData`, body);
392
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
393
+ }
394
+ catch (error) {
395
+ return { content: [{ type: "text", text: error.message }], isError: true };
396
+ }
397
+ });
398
+ // ─── Config Group Tools ──────────────────────────────────────────────
399
+ server.tool("ncloud_cdss_list_config_groups", "List Config Groups for CDSS (Kafka configuration templates)", {
400
+ kafkaVersionCode: z.string().optional().describe("Filter by Kafka version code"),
401
+ }, async (params) => {
402
+ try {
403
+ const queryParams = {};
404
+ if (params.kafkaVersionCode)
405
+ queryParams.kafkaVersionCode = params.kafkaVersionCode;
406
+ const result = await client.requestRaw("GET", `${prefix}/configGroup/getConfigGroupList`, queryParams);
407
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
408
+ }
409
+ catch (error) {
410
+ return { content: [{ type: "text", text: error.message }], isError: true };
411
+ }
412
+ });
413
+ server.tool("ncloud_cdss_get_config_group_detail", "Get Config Group details including Kafka settings", {
414
+ configGroupNo: z.string().describe("Config group number"),
415
+ }, async (params) => {
416
+ try {
417
+ const result = await client.requestRaw("GET", `${prefix}/configGroup/getConfigGroupDetail/${params.configGroupNo}`);
418
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
419
+ }
420
+ catch (error) {
421
+ return { content: [{ type: "text", text: error.message }], isError: true };
422
+ }
423
+ });
424
+ server.tool("ncloud_cdss_get_kafka_config", "Get Kafka configuration settings for a Config Group", {
425
+ configGroupNo: z.string().describe("Config group number"),
426
+ }, async (params) => {
427
+ try {
428
+ const result = await client.requestRaw("GET", `${prefix}/configGroup/getKafkaConfig/${params.configGroupNo}`);
429
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
430
+ }
431
+ catch (error) {
432
+ return { content: [{ type: "text", text: error.message }], isError: true };
433
+ }
434
+ });
435
+ server.tool("ncloud_cdss_create_config_group", "Create a new Config Group for CDSS cluster configuration", {
436
+ configGroupName: z.string().describe("Config group name"),
437
+ kafkaVersionCode: z.string().describe("Kafka version code"),
438
+ description: z.string().optional().describe("Config group description"),
439
+ }, async (params) => {
440
+ try {
441
+ const body = {
442
+ configGroupName: params.configGroupName,
443
+ kafkaVersionCode: params.kafkaVersionCode,
444
+ };
445
+ if (params.description)
446
+ body.description = params.description;
447
+ const result = await client.postRequest(`${prefix}/configGroup/createConfigGroup`, body);
448
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
449
+ }
450
+ catch (error) {
451
+ return { content: [{ type: "text", text: error.message }], isError: true };
452
+ }
453
+ });
454
+ server.tool("ncloud_cdss_apply_config_group", "Apply a Config Group to a CDSS cluster", {
455
+ configGroupNo: z.string().describe("Config group number to apply"),
456
+ serviceGroupInstanceNo: z.string().describe("Target cluster instance number"),
457
+ }, async (params) => {
458
+ try {
459
+ const result = await client.postRequest(`${prefix}/configGroup/applyConfigGroup/${params.configGroupNo}`, { serviceGroupInstanceNo: params.serviceGroupInstanceNo });
460
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
461
+ }
462
+ catch (error) {
463
+ return { content: [{ type: "text", text: error.message }], isError: true };
464
+ }
465
+ });
466
+ server.tool("ncloud_cdss_change_kafka_config", "Change Kafka configuration settings in a Config Group", {
467
+ configGroupNo: z.string().describe("Config group number"),
468
+ kafkaConfig: z.record(z.string()).describe("Kafka config key-value pairs to change"),
469
+ }, async (params) => {
470
+ try {
471
+ const result = await client.putRequest(`${prefix}/configGroup/changeKafkaConfig/${params.configGroupNo}`, { kafkaConfig: params.kafkaConfig });
472
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
473
+ }
474
+ catch (error) {
475
+ return { content: [{ type: "text", text: error.message }], isError: true };
476
+ }
477
+ });
478
+ server.tool("ncloud_cdss_delete_config_group", "⚠️ Destructive: Delete a Config Group. Set confirm=true to execute.", {
479
+ configGroupNo: z.string().describe("Config group number to delete (required)"),
480
+ confirm: z.boolean().optional().default(false).describe("Must be true to execute deletion"),
481
+ }, async (params) => {
482
+ try {
483
+ if (!params.configGroupNo) {
484
+ return { content: [{ type: "text", text: "Error: configGroupNo is required." }], isError: true };
485
+ }
486
+ if (!params.confirm) {
487
+ return { content: [{ type: "text", text: `⚠️ This will delete Config Group [${params.configGroupNo}].\n\nTo execute, call again with confirm=true.` }] };
488
+ }
489
+ const result = await client.deleteRequest(`${prefix}/configGroup/deleteConfigGroup/${params.configGroupNo}`);
490
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
491
+ }
492
+ catch (error) {
493
+ return { content: [{ type: "text", text: error.message }], isError: true };
494
+ }
495
+ });
496
+ // ─── Rolling Restart & Upgrade Tools ──────────────────────────────────
497
+ server.tool("ncloud_cdss_rolling_restart", "Perform a rolling restart of all nodes in a CDSS cluster", {
498
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
499
+ }, async (params) => {
500
+ try {
501
+ const result = await client.postRequest(`${prefix}/cluster/rollingRestart/${params.serviceGroupInstanceNo}`, {});
502
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
503
+ }
504
+ catch (error) {
505
+ return { content: [{ type: "text", text: error.message }], isError: true };
506
+ }
507
+ });
508
+ server.tool("ncloud_cdss_rolling_restart_precheck", "Pre-check before performing a rolling restart", {
509
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
510
+ }, async (params) => {
511
+ try {
512
+ const result = await client.postRequest(`${prefix}/cluster/rollingRestartPreCheck/${params.serviceGroupInstanceNo}`, {});
513
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
514
+ }
515
+ catch (error) {
516
+ return { content: [{ type: "text", text: error.message }], isError: true };
517
+ }
518
+ });
519
+ server.tool("ncloud_cdss_rolling_restart_status", "Get the progress status of a rolling restart operation", {
520
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
521
+ }, async (params) => {
522
+ try {
523
+ const result = await client.requestRaw("GET", `${prefix}/cluster/rollingRestartProgressCheck/${params.serviceGroupInstanceNo}`);
524
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
525
+ }
526
+ catch (error) {
527
+ return { content: [{ type: "text", text: error.message }], isError: true };
528
+ }
529
+ });
530
+ server.tool("ncloud_cdss_upgrade_version", "Upgrade Kafka version for a CDSS cluster", {
531
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
532
+ kafkaVersionCode: z.string().describe("Target Kafka version code"),
533
+ configGroupNo: z.string().optional().describe("Config group number for the new version"),
534
+ }, async (params) => {
535
+ try {
536
+ const body = {
537
+ kafkaVersionCode: params.kafkaVersionCode,
538
+ };
539
+ if (params.configGroupNo)
540
+ body.configGroupNo = params.configGroupNo;
541
+ const result = await client.postRequest(`${prefix}/cluster/rollingUpgrade/${params.serviceGroupInstanceNo}`, body);
542
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
543
+ }
544
+ catch (error) {
545
+ return { content: [{ type: "text", text: error.message }], isError: true };
546
+ }
547
+ });
548
+ server.tool("ncloud_cdss_upgrade_precheck", "Pre-check before upgrading Kafka version", {
549
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
550
+ kafkaVersionCode: z.string().describe("Target Kafka version code"),
551
+ configGroupNo: z.string().optional().describe("Config group number for the new version"),
552
+ }, async (params) => {
553
+ try {
554
+ const body = {
555
+ kafkaVersionCode: params.kafkaVersionCode,
556
+ };
557
+ if (params.configGroupNo)
558
+ body.configGroupNo = params.configGroupNo;
559
+ const result = await client.postRequest(`${prefix}/cluster/rollingUpgradePreCheck/${params.serviceGroupInstanceNo}`, body);
560
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
561
+ }
562
+ catch (error) {
563
+ return { content: [{ type: "text", text: error.message }], isError: true };
564
+ }
565
+ });
566
+ server.tool("ncloud_cdss_upgrade_status", "Get the progress status of a version upgrade operation", {
567
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
568
+ }, async (params) => {
569
+ try {
570
+ const result = await client.requestRaw("GET", `${prefix}/cluster/rollingUpgradeProgressCheck/${params.serviceGroupInstanceNo}`);
571
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
572
+ }
573
+ catch (error) {
574
+ return { content: [{ type: "text", text: error.message }], isError: true };
575
+ }
576
+ });
577
+ // ─── Server Generation & G3 Tools ───────────────────────────────────
578
+ server.tool("ncloud_cdss_get_server_generations", "Get available server generations (hypervisor types) for CDSS", {}, async () => {
579
+ try {
580
+ const result = await client.requestRaw("GET", `${prefix}/cluster/getServerGenerationList`);
581
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
582
+ }
583
+ catch (error) {
584
+ return { content: [{ type: "text", text: error.message }], isError: true };
585
+ }
586
+ });
587
+ server.tool("ncloud_cdss_get_server_spec_list", "Get available server specs for CDSS (G3/KVM)", {}, async () => {
588
+ try {
589
+ const result = await client.requestRaw("GET", `${prefix}/cluster/getServerSpecList`);
590
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
591
+ }
592
+ catch (error) {
593
+ return { content: [{ type: "text", text: error.message }], isError: true };
594
+ }
595
+ });
596
+ server.tool("ncloud_cdss_get_cluster_server_images", "Get available OS images for CDSS (G3/KVM)", {}, async () => {
597
+ try {
598
+ const result = await client.requestRaw("GET", `${prefix}/cluster/getClusterServerImageList`);
599
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
600
+ }
601
+ catch (error) {
602
+ return { content: [{ type: "text", text: error.message }], isError: true };
603
+ }
604
+ });
605
+ // ─── Load Balancer Query Tool ────────────────────────────────────────
606
+ server.tool("ncloud_cdss_get_load_balancers", "Get available load balancers for CDSS broker node public endpoint", {
607
+ serviceGroupInstanceNo: z.string().describe("Cluster instance number"),
608
+ }, async (params) => {
609
+ try {
610
+ const result = await client.requestRaw("GET", `${prefix}/cluster/getLoadBalancerInstanceList/${params.serviceGroupInstanceNo}`);
611
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
612
+ }
613
+ catch (error) {
614
+ return { content: [{ type: "text", text: error.message }], isError: true };
615
+ }
616
+ });
617
+ }
618
+ //# sourceMappingURL=analytics-cdss.js.map