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,445 @@
1
+ import { z } from "zod";
2
+ export function registerComputeServerTools(server, client) {
3
+ // ─── Query Tools ───────────────────────────────────────────────────────────
4
+ server.tool("ncloud_list_servers", "List all server instances in the current region", {
5
+ serverInstanceNoList: z.array(z.string()).optional().describe("Filter by server instance numbers"),
6
+ vpcNo: z.string().optional().describe("Filter by VPC number"),
7
+ pageNo: z.number().optional().describe("Page number for pagination"),
8
+ pageSize: z.number().optional().describe("Page size for pagination"),
9
+ }, async (params) => {
10
+ try {
11
+ const result = await client.request("/vserver/v2/getServerInstanceList", params);
12
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
13
+ }
14
+ catch (error) {
15
+ return { content: [{ type: "text", text: error.message }], isError: true };
16
+ }
17
+ });
18
+ server.tool("ncloud_get_server_detail", "Get detailed information about a specific server instance", {
19
+ serverInstanceNo: z.string().describe("Server instance number to query"),
20
+ }, async (params) => {
21
+ try {
22
+ const result = await client.request("/vserver/v2/getServerInstanceDetail", params);
23
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
24
+ }
25
+ catch (error) {
26
+ return { content: [{ type: "text", text: error.message }], isError: true };
27
+ }
28
+ });
29
+ server.tool("ncloud_get_root_password", "Get the root password for a server instance", {
30
+ serverInstanceNo: z.string().describe("Server instance number"),
31
+ privateKey: z.string().optional().describe("Private key to decrypt the password"),
32
+ }, async (params) => {
33
+ try {
34
+ const result = await client.request("/vserver/v2/getRootPassword", params);
35
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
36
+ }
37
+ catch (error) {
38
+ return { content: [{ type: "text", text: error.message }], isError: true };
39
+ }
40
+ });
41
+ // ─── Image & Spec Tools ────────────────────────────────────────────────────
42
+ server.tool("ncloud_get_server_images", "List available server images (supports Gen2 XEN and Gen3 KVM)", {
43
+ serverImageNoList: z.array(z.string()).optional().describe("Filter by server image numbers"),
44
+ serverImageName: z.string().optional().describe("Filter by image name"),
45
+ serverImageTypeCodeList: z.array(z.string()).optional().describe("Filter by image type (SELF | NCP)"),
46
+ hypervisorTypeCodeList: z.array(z.string()).optional().describe("Filter by hypervisor type (XEN | KVM)"),
47
+ osTypeCodeList: z.array(z.string()).optional().describe("Filter by OS type (CENTOS | UBUNTU | WINDOWS | ROCKY | NAVIX)"),
48
+ platformCategoryCodeList: z.array(z.string()).optional().describe("Filter by platform category (OS | APP | DBMS | GPU)"),
49
+ serverImageStatusCode: z.string().optional().describe("Filter by image status (INIT | CREAT | CREFL)"),
50
+ pageNo: z.number().optional().describe("Page number for pagination"),
51
+ pageSize: z.number().optional().describe("Page size for pagination"),
52
+ sortedBy: z.string().optional().describe("Sort field"),
53
+ sortingOrder: z.string().optional().describe("Sort order (ASC | DESC)"),
54
+ }, async (params) => {
55
+ try {
56
+ const result = await client.request("/vserver/v2/getServerImageList", params);
57
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
58
+ }
59
+ catch (error) {
60
+ return { content: [{ type: "text", text: error.message }], isError: true };
61
+ }
62
+ });
63
+ server.tool("ncloud_get_server_specs", "List available server specifications (supports Gen2 XEN and Gen3 KVM). Use serverImageNo from ncloud_get_server_images to filter compatible specs.", {
64
+ serverImageNo: z.string().optional().describe("Server image number to filter compatible specs (from ncloud_get_server_images)"),
65
+ serverSpecCodeList: z.array(z.string()).optional().describe("Filter by server spec codes (e.g., c2-g3, m2-g2-h100)"),
66
+ hypervisorTypeCodeList: z.array(z.string()).optional().describe("Filter by hypervisor type (XEN | KVM)"),
67
+ zoneCode: z.string().optional().describe("Filter by zone code"),
68
+ }, async (params) => {
69
+ try {
70
+ const result = await client.request("/vserver/v2/getServerSpecList", params);
71
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
72
+ }
73
+ catch (error) {
74
+ return { content: [{ type: "text", text: error.message }], isError: true };
75
+ }
76
+ });
77
+ server.tool("ncloud_get_member_server_image_list", "List member server images (custom images created from running servers)", {
78
+ memberServerImageInstanceNoList: z.array(z.string()).optional().describe("Filter by member server image instance numbers"),
79
+ }, async (params) => {
80
+ try {
81
+ const result = await client.request("/vserver/v2/getMemberServerImageInstanceList", params);
82
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
83
+ }
84
+ catch (error) {
85
+ return { content: [{ type: "text", text: error.message }], isError: true };
86
+ }
87
+ });
88
+ // ─── Create Tools ──────────────────────────────────────────────────────────
89
+ server.tool("ncloud_create_server", "Create a new server instance. For KVM (Gen3): use serverImageNo + serverSpecCode. For XEN (Gen2): use serverImageProductCode + serverProductCode, or serverImageNo + serverSpecCode. Use dryRun=true to preview without creating.", {
90
+ serverImageNo: z.string().optional().describe("Server image number from ncloud_get_server_images (required for KVM/Gen3)"),
91
+ serverImageProductCode: z.string().optional().describe("Server image product code (legacy, XEN/RHV only)"),
92
+ memberServerImageInstanceNo: z.string().optional().describe("Member server image instance number (custom image)"),
93
+ serverSpecCode: z.string().optional().describe("Server spec code from ncloud_get_server_specs (required for KVM/Gen3, e.g., c2-g3, s2-g3)"),
94
+ serverProductCode: z.string().optional().describe("Server product code (legacy, XEN/RHV only, use with serverImageProductCode)"),
95
+ vpcNo: z.string().describe("VPC number"),
96
+ subnetNo: z.string().describe("Subnet number"),
97
+ serverName: z.string().optional().describe("Server name (lowercase+numbers+hyphen, 3-30 chars)"),
98
+ serverDescription: z.string().optional().describe("Server description"),
99
+ loginKeyName: z.string().optional().describe("Login key name for SSH access"),
100
+ initScriptNo: z.string().optional().describe("Init script number"),
101
+ feeSystemTypeCode: z.string().optional().describe("Fee system type (MTRAT: hourly, FXSUM: monthly)"),
102
+ associateWithPublicIp: z.boolean().optional().describe("Associate a new public IP on creation"),
103
+ isProtectServerTermination: z.boolean().optional().describe("Enable termination protection"),
104
+ placementGroupNo: z.string().optional().describe("Placement group number"),
105
+ networkInterfaceList: z.array(z.object({
106
+ networkInterfaceOrder: z.number().describe("Network interface order (0 for primary)"),
107
+ accessControlGroupNoList: z.array(z.string()).optional().describe("ACG numbers for this NIC (max 3)"),
108
+ subnetNo: z.string().optional().describe("Subnet number for this NIC"),
109
+ ip: z.string().optional().describe("Specific IP address for this NIC"),
110
+ })).optional().describe("Network interface configuration list"),
111
+ dryRun: z.boolean().optional().default(false).describe("If true, returns a preview without actually creating the server"),
112
+ }, async (params) => {
113
+ try {
114
+ if (params.dryRun) {
115
+ const preview = {
116
+ label: "🔍 Dry-Run Preview: Server Creation",
117
+ serverImageNo: params.serverImageNo ?? "(not specified)",
118
+ serverImageProductCode: params.serverImageProductCode ?? "(not specified)",
119
+ memberServerImageInstanceNo: params.memberServerImageInstanceNo ?? "(not specified)",
120
+ serverSpecCode: params.serverSpecCode ?? "(not specified)",
121
+ serverProductCode: params.serverProductCode ?? "(not specified)",
122
+ vpcNo: params.vpcNo,
123
+ subnetNo: params.subnetNo,
124
+ serverName: params.serverName ?? "(auto-generated)",
125
+ loginKeyName: params.loginKeyName ?? "(none)",
126
+ initScriptNo: params.initScriptNo ?? "(none)",
127
+ feeSystemTypeCode: params.feeSystemTypeCode ?? "MTRAT",
128
+ message: "이 요청은 실제 서버를 생성하지 않습니다. dryRun=false로 호출하면 서버가 생성됩니다.",
129
+ hint_KVM: "KVM(Gen3) 서버: serverImageNo + serverSpecCode 조합 필수",
130
+ hint_XEN: "XEN(Gen2) 서버: serverImageProductCode + serverProductCode 또는 serverImageNo + serverSpecCode",
131
+ };
132
+ return { content: [{ type: "text", text: JSON.stringify(preview, null, 2) }] };
133
+ }
134
+ const { dryRun, networkInterfaceList, ...apiParams } = params;
135
+ const requestParams = { ...apiParams };
136
+ if (networkInterfaceList) {
137
+ for (let i = 0; i < networkInterfaceList.length; i++) {
138
+ const nic = networkInterfaceList[i];
139
+ requestParams[`networkInterfaceList.${i + 1}.networkInterfaceOrder`] = nic.networkInterfaceOrder;
140
+ if (nic.accessControlGroupNoList) {
141
+ for (let j = 0; j < nic.accessControlGroupNoList.length; j++) {
142
+ requestParams[`networkInterfaceList.${i + 1}.accessControlGroupNoList.${j + 1}`] = nic.accessControlGroupNoList[j];
143
+ }
144
+ }
145
+ if (nic.subnetNo) {
146
+ requestParams[`networkInterfaceList.${i + 1}.subnetNo`] = nic.subnetNo;
147
+ }
148
+ if (nic.ip) {
149
+ requestParams[`networkInterfaceList.${i + 1}.ip`] = nic.ip;
150
+ }
151
+ }
152
+ }
153
+ const result = await client.request("/vserver/v2/createServerInstances", requestParams);
154
+ const instance = result.serverInstanceList?.[0];
155
+ const summary = {
156
+ 리소스타입: "Server",
157
+ 리소스ID: instance?.serverInstanceNo ?? "unknown",
158
+ 리소스명: instance?.serverName ?? params.serverName ?? "unknown",
159
+ 상태: instance?.serverInstanceStatus?.codeName ?? "creating",
160
+ 생성시각: instance?.createDate ?? new Date().toISOString(),
161
+ 서버스펙: params.serverSpecCode ?? params.serverProductCode ?? "default",
162
+ 이미지: params.serverImageNo ?? params.serverImageProductCode ?? params.memberServerImageInstanceNo ?? "unknown",
163
+ VPC: params.vpcNo,
164
+ 서브넷: params.subnetNo,
165
+ 사설IP: instance?.privateIp ?? "pending",
166
+ };
167
+ return { content: [{ type: "text", text: JSON.stringify(summary, null, 2) }] };
168
+ }
169
+ catch (error) {
170
+ return { content: [{ type: "text", text: error.message }], isError: true };
171
+ }
172
+ });
173
+ server.tool("ncloud_create_server_image", "Create a server image from an existing server instance", {
174
+ serverInstanceNo: z.string().describe("Server instance number to create image from"),
175
+ serverImageName: z.string().optional().describe("Name for the new server image"),
176
+ serverImageDescription: z.string().optional().describe("Description for the new server image"),
177
+ }, async (params) => {
178
+ try {
179
+ const result = await client.request("/vserver/v2/createServerImage", params);
180
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
181
+ }
182
+ catch (error) {
183
+ return { content: [{ type: "text", text: error.message }], isError: true };
184
+ }
185
+ });
186
+ server.tool("ncloud_create_member_server_image", "Create a member server image from a running server instance", {
187
+ serverInstanceNo: z.string().describe("Server instance number to create member image from"),
188
+ memberServerImageName: z.string().optional().describe("Name for the member server image"),
189
+ memberServerImageDescription: z.string().optional().describe("Description for the member server image"),
190
+ }, async (params) => {
191
+ try {
192
+ const result = await client.request("/vserver/v2/createMemberServerImageInstance", params);
193
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
194
+ }
195
+ catch (error) {
196
+ return { content: [{ type: "text", text: error.message }], isError: true };
197
+ }
198
+ });
199
+ // ─── Operation Tools (non-destructive) ─────────────────────────────────────
200
+ server.tool("ncloud_start_server", "Start one or more stopped server instances", {
201
+ serverInstanceNoList: z.array(z.string()).min(1).describe("List of server instance numbers to start"),
202
+ }, async (params) => {
203
+ try {
204
+ const result = await client.request("/vserver/v2/startServerInstances", params);
205
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
206
+ }
207
+ catch (error) {
208
+ return { content: [{ type: "text", text: error.message }], isError: true };
209
+ }
210
+ });
211
+ server.tool("ncloud_stop_server", "Stop one or more running server instances", {
212
+ serverInstanceNoList: z.array(z.string()).min(1).describe("List of server instance numbers to stop"),
213
+ }, async (params) => {
214
+ try {
215
+ const result = await client.request("/vserver/v2/stopServerInstances", params);
216
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
217
+ }
218
+ catch (error) {
219
+ return { content: [{ type: "text", text: error.message }], isError: true };
220
+ }
221
+ });
222
+ server.tool("ncloud_reboot_server", "Reboot one or more running server instances", {
223
+ serverInstanceNoList: z.array(z.string()).min(1).describe("List of server instance numbers to reboot"),
224
+ }, async (params) => {
225
+ try {
226
+ const result = await client.request("/vserver/v2/rebootServerInstances", params);
227
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
228
+ }
229
+ catch (error) {
230
+ return { content: [{ type: "text", text: error.message }], isError: true };
231
+ }
232
+ });
233
+ server.tool("ncloud_change_server_spec", "Change the server spec (product code) of a stopped server instance", {
234
+ serverInstanceNo: z.string().describe("Server instance number to change spec"),
235
+ serverProductCode: z.string().describe("New server product code"),
236
+ }, async (params) => {
237
+ try {
238
+ const result = await client.request("/vserver/v2/changeServerInstanceSpec", params);
239
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
240
+ }
241
+ catch (error) {
242
+ return { content: [{ type: "text", text: error.message }], isError: true };
243
+ }
244
+ });
245
+ server.tool("ncloud_set_protect_termination", "Set or unset termination protection on a server instance", {
246
+ serverInstanceNo: z.string().describe("Server instance number"),
247
+ isProtectServerTermination: z.boolean().describe("Whether to enable termination protection"),
248
+ }, async (params) => {
249
+ try {
250
+ const result = await client.request("/vserver/v2/setProtectServerTermination", params);
251
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
252
+ }
253
+ catch (error) {
254
+ return { content: [{ type: "text", text: error.message }], isError: true };
255
+ }
256
+ });
257
+ // ─── Destructive Tools (with confirm gate) ─────────────────────────────────
258
+ server.tool("ncloud_terminate_server", "⚠️ Destructive: Permanently terminate (delete) one or more server instances. Set confirm=true to execute.", {
259
+ serverInstanceNoList: z.array(z.string()).min(1).describe("List of server instance numbers to terminate"),
260
+ confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
261
+ }, async (params) => {
262
+ try {
263
+ if (!params.confirm) {
264
+ const message = `⚠️ This will permanently terminate Server [${params.serverInstanceNoList.join(", ")}]. Do you want to proceed? (yes/no)\n\nTo execute, call this tool again with confirm=true.`;
265
+ return { content: [{ type: "text", text: message }] };
266
+ }
267
+ const { confirm, ...apiParams } = params;
268
+ const result = await client.request("/vserver/v2/terminateServerInstances", apiParams);
269
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
270
+ }
271
+ catch (error) {
272
+ return { content: [{ type: "text", text: error.message }], isError: true };
273
+ }
274
+ });
275
+ server.tool("ncloud_delete_server_images", "⚠️ Destructive: Delete one or more server image instances. Set confirm=true to execute.", {
276
+ serverImageInstanceNoList: z.array(z.string()).min(1).describe("List of server image instance numbers to delete"),
277
+ confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
278
+ }, async (params) => {
279
+ try {
280
+ if (!params.confirm) {
281
+ const message = `⚠️ This will permanently delete ServerImage [${params.serverImageInstanceNoList.join(", ")}]. Do you want to proceed? (yes/no)\n\nTo execute, call this tool again with confirm=true.`;
282
+ return { content: [{ type: "text", text: message }] };
283
+ }
284
+ const { confirm, ...apiParams } = params;
285
+ const result = await client.request("/vserver/v2/deleteServerImageInstances", apiParams);
286
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
287
+ }
288
+ catch (error) {
289
+ return { content: [{ type: "text", text: error.message }], isError: true };
290
+ }
291
+ });
292
+ server.tool("ncloud_delete_member_server_images", "⚠️ Destructive: Delete one or more member server image instances. Set confirm=true to execute.", {
293
+ memberServerImageInstanceNoList: z.array(z.string()).min(1).describe("List of member server image instance numbers to delete"),
294
+ confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
295
+ }, async (params) => {
296
+ try {
297
+ if (!params.confirm) {
298
+ const message = `⚠️ This will permanently delete MemberServerImage [${params.memberServerImageInstanceNoList.join(", ")}]. Do you want to proceed? (yes/no)\n\nTo execute, call this tool again with confirm=true.`;
299
+ return { content: [{ type: "text", text: message }] };
300
+ }
301
+ const { confirm, ...apiParams } = params;
302
+ const result = await client.request("/vserver/v2/deleteMemberServerImageInstances", apiParams);
303
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
304
+ }
305
+ catch (error) {
306
+ return { content: [{ type: "text", text: error.message }], isError: true };
307
+ }
308
+ });
309
+ // ─── Server Instance — Additional APIs ─────────────────────────────────────
310
+ server.tool("ncloud_get_root_password_list", "List server instances that can retrieve root password", {
311
+ rootPasswordServerInstanceNoList: z.array(z.string()).optional().describe("Filter by server instance numbers for root password retrieval"),
312
+ pageNo: z.number().optional().describe("Page number for pagination"),
313
+ pageSize: z.number().optional().describe("Page size for pagination"),
314
+ }, async (params) => {
315
+ try {
316
+ const result = await client.request("/vserver/v2/getRootPasswordServerInstanceList", params);
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_interrupt_server", "Interrupt a server instance for diagnostics of abnormal behavior", {
324
+ serverInstanceNo: z.string().describe("Server instance number to interrupt"),
325
+ }, async (params) => {
326
+ try {
327
+ const result = await client.request("/vserver/v2/interruptServerInstance", params);
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 Image — Additional APIs ────────────────────────────────────────
335
+ server.tool("ncloud_get_server_image_detail", "Get detailed information about a specific server image", {
336
+ serverImageNo: z.string().describe("Server image number to query"),
337
+ }, async (params) => {
338
+ try {
339
+ const result = await client.request("/vserver/v2/getServerImageDetail", params);
340
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
341
+ }
342
+ catch (error) {
343
+ return { content: [{ type: "text", text: error.message }], isError: true };
344
+ }
345
+ });
346
+ server.tool("ncloud_create_server_image_from_snapshot", "Create a server image from block storage snapshots", {
347
+ originalServerImageNo: z.string().describe("Original server image number"),
348
+ blockStorageSnapshotInstanceNoList: z.array(z.string()).min(1).describe("List of block storage snapshot instance numbers"),
349
+ serverImageName: z.string().optional().describe("Name for the new server image"),
350
+ serverImageDescription: z.string().optional().describe("Description for the new server image"),
351
+ }, async (params) => {
352
+ try {
353
+ const result = await client.request("/vserver/v2/createServerImageFromSnapshot", params);
354
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
355
+ }
356
+ catch (error) {
357
+ return { content: [{ type: "text", text: error.message }], isError: true };
358
+ }
359
+ });
360
+ server.tool("ncloud_get_member_server_image_detail", "Get detailed information about a member server image instance", {
361
+ memberServerImageInstanceNo: z.string().describe("Member server image instance number to query"),
362
+ }, async (params) => {
363
+ try {
364
+ const result = await client.request("/vserver/v2/getMemberServerImageInstanceDetail", params);
365
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
366
+ }
367
+ catch (error) {
368
+ return { content: [{ type: "text", text: error.message }], isError: true };
369
+ }
370
+ });
371
+ // ─── Image Sharing Permission APIs ─────────────────────────────────────────
372
+ server.tool("ncloud_add_server_image_sharing", "Add sharing permission for a server image to specified accounts", {
373
+ serverImageNo: z.string().describe("Server image number to share"),
374
+ targetLoginIdList: z.array(z.string()).min(1).describe("List of target login IDs to grant sharing permission"),
375
+ }, async (params) => {
376
+ try {
377
+ const result = await client.request("/vserver/v2/addServerImageSharingPermission", params);
378
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
379
+ }
380
+ catch (error) {
381
+ return { content: [{ type: "text", text: error.message }], isError: true };
382
+ }
383
+ });
384
+ server.tool("ncloud_remove_server_image_sharing", "⚠️ DESTRUCTIVE: Remove sharing permission for a server image. Set confirm=true to execute.", {
385
+ serverImageNo: z.string().describe("Server image number to remove sharing from"),
386
+ targetLoginIdList: z.array(z.string()).min(1).describe("List of target login IDs to revoke sharing permission"),
387
+ confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
388
+ }, async (params) => {
389
+ try {
390
+ if (!params.confirm) {
391
+ const message = `⚠️ This will remove sharing permission for ServerImage [${params.serverImageNo}] from accounts [${params.targetLoginIdList.join(", ")}]. Do you want to proceed? (yes/no)\n\nTo execute, call this tool again with confirm=true.`;
392
+ return { content: [{ type: "text", text: message }] };
393
+ }
394
+ const { confirm, ...apiParams } = params;
395
+ const result = await client.request("/vserver/v2/removeServerImageSharingPermission", apiParams);
396
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
397
+ }
398
+ catch (error) {
399
+ return { content: [{ type: "text", text: error.message }], isError: true };
400
+ }
401
+ });
402
+ server.tool("ncloud_add_member_server_image_sharing", "Add sharing permission for a member server image to specified accounts", {
403
+ memberServerImageInstanceNo: z.string().describe("Member server image instance number to share"),
404
+ targetLoginIdList: z.array(z.string()).min(1).describe("List of target login IDs to grant sharing permission"),
405
+ }, async (params) => {
406
+ try {
407
+ const result = await client.request("/vserver/v2/addMemberServerImageSharingPermission", params);
408
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
409
+ }
410
+ catch (error) {
411
+ return { content: [{ type: "text", text: error.message }], isError: true };
412
+ }
413
+ });
414
+ server.tool("ncloud_set_member_server_image_sharing", "Set sharing permission for a member server image (replaces existing permissions)", {
415
+ memberServerImageInstanceNo: z.string().describe("Member server image instance number"),
416
+ targetLoginIdList: z.array(z.string()).min(1).describe("List of target login IDs to set as sharing permission (replaces existing)"),
417
+ }, async (params) => {
418
+ try {
419
+ const result = await client.request("/vserver/v2/setMemberServerImageSharingPermission", params);
420
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
421
+ }
422
+ catch (error) {
423
+ return { content: [{ type: "text", text: error.message }], isError: true };
424
+ }
425
+ });
426
+ server.tool("ncloud_remove_member_server_image_sharing", "⚠️ DESTRUCTIVE: Remove sharing permission for a member server image. Set confirm=true to execute.", {
427
+ memberServerImageInstanceNo: z.string().describe("Member server image instance number to remove sharing from"),
428
+ targetLoginIdList: z.array(z.string()).min(1).describe("List of target login IDs to revoke sharing permission"),
429
+ confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
430
+ }, async (params) => {
431
+ try {
432
+ if (!params.confirm) {
433
+ const message = `⚠️ This will remove sharing permission for MemberServerImage [${params.memberServerImageInstanceNo}] from accounts [${params.targetLoginIdList.join(", ")}]. Do you want to proceed? (yes/no)\n\nTo execute, call this tool again with confirm=true.`;
434
+ return { content: [{ type: "text", text: message }] };
435
+ }
436
+ const { confirm, ...apiParams } = params;
437
+ const result = await client.request("/vserver/v2/removeMemberServerImageSharingPermission", apiParams);
438
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
439
+ }
440
+ catch (error) {
441
+ return { content: [{ type: "text", text: error.message }], isError: true };
442
+ }
443
+ });
444
+ }
445
+ //# sourceMappingURL=compute-server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compute-server.js","sourceRoot":"","sources":["../../src/tools/compute-server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};