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,430 @@
1
+ import { z } from "zod";
2
+ export function registerAutoScalingTools(server, client) {
3
+ // ─── Launch Configuration Query Tools ──────────────────────────────────────
4
+ server.tool("ncloud_list_launch_configs", "List all launch configurations for Auto Scaling in the current region", {
5
+ launchConfigurationNoList: z.array(z.string()).optional().describe("Filter by launch configuration numbers"),
6
+ pageNo: z.number().optional().describe("Page number for pagination"),
7
+ pageSize: z.number().optional().describe("Page size for pagination"),
8
+ }, async (params) => {
9
+ try {
10
+ const result = await client.request("/vautoscaling/v2/getLaunchConfigurationList", params);
11
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
12
+ }
13
+ catch (error) {
14
+ return { content: [{ type: "text", text: error.message }], isError: true };
15
+ }
16
+ });
17
+ server.tool("ncloud_get_launch_config_detail", "Get detailed information about a specific launch configuration for Auto Scaling", {
18
+ launchConfigurationNo: z.string({
19
+ required_error: "필수 파라미터 'launchConfigurationNo'가 누락되었습니다.",
20
+ }).describe("Launch configuration number to query"),
21
+ }, async (params) => {
22
+ try {
23
+ const result = await client.request("/vautoscaling/v2/getLaunchConfigurationDetail", params);
24
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
25
+ }
26
+ catch (error) {
27
+ return { content: [{ type: "text", text: error.message }], isError: true };
28
+ }
29
+ });
30
+ // ─── Launch Configuration Create Tool ──────────────────────────────────────
31
+ server.tool("ncloud_create_launch_config", "Create a new launch configuration for Auto Scaling. Use dryRun=true to preview without creating.", {
32
+ serverImageProductCode: z.string({
33
+ required_error: "필수 파라미터 'serverImageProductCode'가 누락되었습니다.",
34
+ }).describe("Server image product code"),
35
+ serverProductCode: z.string({
36
+ required_error: "필수 파라미터 'serverProductCode'가 누락되었습니다.",
37
+ }).describe("Server product (spec) code"),
38
+ launchConfigurationName: z.string().max(255, {
39
+ message: "잘못된 파라미터: 'launchConfigurationName'은 255자 이하여야 합니다.",
40
+ }).optional().describe("Launch configuration name"),
41
+ loginKeyName: z.string().optional().describe("Login key name for SSH access"),
42
+ initScriptNo: z.string().optional().describe("Init script number to run on launch"),
43
+ isEncryptedVolume: z.boolean().optional().describe("Whether to encrypt the root volume"),
44
+ memberServerImageInstanceNo: z.string().optional().describe("Member server image instance number (alternative to serverImageProductCode)"),
45
+ dryRun: z.boolean().optional().default(false).describe("If true, returns a preview without actually creating"),
46
+ }, async (params) => {
47
+ try {
48
+ if (params.dryRun) {
49
+ const preview = {
50
+ label: "🔍 Dry-Run Preview: Launch Configuration Creation",
51
+ serverImageProductCode: params.serverImageProductCode,
52
+ serverProductCode: params.serverProductCode,
53
+ launchConfigurationName: params.launchConfigurationName ?? "(auto-generated)",
54
+ loginKeyName: params.loginKeyName ?? "(none)",
55
+ initScriptNo: params.initScriptNo ?? "(none)",
56
+ isEncryptedVolume: params.isEncryptedVolume ?? false,
57
+ message: "이 요청은 실제 런치 설정을 생성하지 않습니다. dryRun=false로 호출하면 생성됩니다.",
58
+ };
59
+ return { content: [{ type: "text", text: JSON.stringify(preview, null, 2) }] };
60
+ }
61
+ const { dryRun, ...apiParams } = params;
62
+ const result = await client.request("/vautoscaling/v2/createLaunchConfiguration", apiParams);
63
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
64
+ }
65
+ catch (error) {
66
+ return { content: [{ type: "text", text: error.message }], isError: true };
67
+ }
68
+ });
69
+ // ─── Launch Configuration Destructive Tool ─────────────────────────────────
70
+ server.tool("ncloud_delete_launch_config", "⚠️ Destructive: Permanently delete a launch configuration. Set confirm=true to execute.", {
71
+ launchConfigurationNo: z.string({
72
+ required_error: "필수 파라미터 'launchConfigurationNo'가 누락되었습니다.",
73
+ }).describe("Launch configuration number to delete"),
74
+ confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
75
+ }, async (params) => {
76
+ try {
77
+ if (!params.confirm) {
78
+ const message = `⚠️ This will permanently delete LaunchConfiguration [${params.launchConfigurationNo}]. Do you want to proceed? (yes/no)\n\nTo execute, call this tool again with confirm=true.`;
79
+ return { content: [{ type: "text", text: message }] };
80
+ }
81
+ const { confirm, ...apiParams } = params;
82
+ const result = await client.request("/vautoscaling/v2/deleteLaunchConfiguration", apiParams);
83
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
84
+ }
85
+ catch (error) {
86
+ return { content: [{ type: "text", text: error.message }], isError: true };
87
+ }
88
+ });
89
+ // ─── Auto Scaling Group Query Tools ────────────────────────────────────────
90
+ server.tool("ncloud_list_asgs", "List all Auto Scaling Groups in the current region", {
91
+ autoScalingGroupNoList: z.array(z.string()).optional().describe("Filter by Auto Scaling Group numbers"),
92
+ autoScalingGroupName: z.string().optional().describe("Filter by Auto Scaling Group name"),
93
+ pageNo: z.number().optional().describe("Page number for pagination"),
94
+ pageSize: z.number().optional().describe("Page size for pagination"),
95
+ }, async (params) => {
96
+ try {
97
+ const result = await client.request("/vautoscaling/v2/getAutoScalingGroupList", params);
98
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
99
+ }
100
+ catch (error) {
101
+ return { content: [{ type: "text", text: error.message }], isError: true };
102
+ }
103
+ });
104
+ server.tool("ncloud_get_asg_detail", "Get detailed information about a specific Auto Scaling Group", {
105
+ autoScalingGroupNo: z.string({
106
+ required_error: "필수 파라미터 'autoScalingGroupNo'가 누락되었습니다.",
107
+ }).describe("Auto Scaling Group number to query"),
108
+ }, async (params) => {
109
+ try {
110
+ const result = await client.request("/vautoscaling/v2/getAutoScalingGroupDetail", params);
111
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
112
+ }
113
+ catch (error) {
114
+ return { content: [{ type: "text", text: error.message }], isError: true };
115
+ }
116
+ });
117
+ // ─── Auto Scaling Group Create Tool ────────────────────────────────────────
118
+ server.tool("ncloud_create_asg", "Create a new Auto Scaling Group. Use dryRun=true to preview without creating.", {
119
+ launchConfigurationNo: z.string({
120
+ required_error: "필수 파라미터 'launchConfigurationNo'가 누락되었습니다.",
121
+ }).describe("Launch configuration number to use"),
122
+ autoScalingGroupName: z.string().max(255, {
123
+ message: "잘못된 파라미터: 'autoScalingGroupName'은 255자 이하여야 합니다.",
124
+ }).optional().describe("Auto Scaling Group name"),
125
+ subnetNoList: z.array(z.string(), {
126
+ required_error: "필수 파라미터 'subnetNoList'가 누락되었습니다.",
127
+ }).min(1).describe("List of subnet numbers for the ASG"),
128
+ minSize: z.number({
129
+ required_error: "필수 파라미터 'minSize'가 누락되었습니다.",
130
+ }).min(0).describe("Minimum number of instances"),
131
+ maxSize: z.number({
132
+ required_error: "필수 파라미터 'maxSize'가 누락되었습니다.",
133
+ }).min(0).describe("Maximum number of instances"),
134
+ desiredCapacity: z.number().optional().describe("Desired number of instances"),
135
+ defaultCooldown: z.number().optional().describe("Default cooldown period in seconds"),
136
+ healthCheckGracePeriod: z.number().optional().describe("Health check grace period in seconds"),
137
+ healthCheckTypeCode: z.string().optional().describe("Health check type (SVR or LOADB)"),
138
+ targetGroupNoList: z.array(z.string()).optional().describe("List of target group numbers to attach"),
139
+ accessControlGroupNoList: z.array(z.string()).optional().describe("List of ACG numbers"),
140
+ serverNamePrefix: z.string().optional().describe("Prefix for server instance names"),
141
+ dryRun: z.boolean().optional().default(false).describe("If true, returns a preview without actually creating"),
142
+ }, async (params) => {
143
+ try {
144
+ if (params.dryRun) {
145
+ const preview = {
146
+ label: "🔍 Dry-Run Preview: Auto Scaling Group Creation",
147
+ launchConfigurationNo: params.launchConfigurationNo,
148
+ autoScalingGroupName: params.autoScalingGroupName ?? "(auto-generated)",
149
+ subnetNoList: params.subnetNoList,
150
+ minSize: params.minSize,
151
+ maxSize: params.maxSize,
152
+ desiredCapacity: params.desiredCapacity ?? params.minSize,
153
+ healthCheckTypeCode: params.healthCheckTypeCode ?? "SVR",
154
+ targetGroupNoList: params.targetGroupNoList ?? [],
155
+ message: "이 요청은 실제 Auto Scaling Group을 생성하지 않습니다. dryRun=false로 호출하면 생성됩니다.",
156
+ };
157
+ return { content: [{ type: "text", text: JSON.stringify(preview, null, 2) }] };
158
+ }
159
+ const { dryRun, ...apiParams } = params;
160
+ const result = await client.request("/vautoscaling/v2/createAutoScalingGroup", apiParams);
161
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
162
+ }
163
+ catch (error) {
164
+ return { content: [{ type: "text", text: error.message }], isError: true };
165
+ }
166
+ });
167
+ // ─── Auto Scaling Group Destructive Tool ───────────────────────────────────
168
+ server.tool("ncloud_delete_asg", "⚠️ Destructive: Permanently delete an Auto Scaling Group. Set confirm=true to execute.", {
169
+ autoScalingGroupNo: z.string({
170
+ required_error: "필수 파라미터 'autoScalingGroupNo'가 누락되었습니다.",
171
+ }).describe("Auto Scaling Group number to delete"),
172
+ confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
173
+ }, async (params) => {
174
+ try {
175
+ if (!params.confirm) {
176
+ const message = `⚠️ This will permanently delete AutoScalingGroup [${params.autoScalingGroupNo}]. Do you want to proceed? (yes/no)\n\nTo execute, call this tool again with confirm=true.`;
177
+ return { content: [{ type: "text", text: message }] };
178
+ }
179
+ const { confirm, ...apiParams } = params;
180
+ const result = await client.request("/vautoscaling/v2/deleteAutoScalingGroup", apiParams);
181
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
182
+ }
183
+ catch (error) {
184
+ return { content: [{ type: "text", text: error.message }], isError: true };
185
+ }
186
+ });
187
+ // ─── Auto Scaling Group Operation Tools ────────────────────────────────────
188
+ server.tool("ncloud_set_desired_capacity", "Set the desired capacity for an Auto Scaling Group", {
189
+ autoScalingGroupNo: z.string({
190
+ required_error: "필수 파라미터 'autoScalingGroupNo'가 누락되었습니다.",
191
+ }).describe("Auto Scaling Group number"),
192
+ desiredCapacity: z.number({
193
+ required_error: "필수 파라미터 'desiredCapacity'가 누락되었습니다.",
194
+ }).min(0).describe("Desired number of instances"),
195
+ }, async (params) => {
196
+ try {
197
+ const result = await client.request("/vautoscaling/v2/setDesiredCapacity", params);
198
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
199
+ }
200
+ catch (error) {
201
+ return { content: [{ type: "text", text: error.message }], isError: true };
202
+ }
203
+ });
204
+ // ─── Scaling Policy Tools ──────────────────────────────────────────────────
205
+ server.tool("ncloud_put_scaling_policy", "Create or update a scaling policy for an Auto Scaling Group", {
206
+ autoScalingGroupNo: z.string({
207
+ required_error: "필수 파라미터 'autoScalingGroupNo'가 누락되었습니다.",
208
+ }).describe("Auto Scaling Group number"),
209
+ policyName: z.string({
210
+ required_error: "필수 파라미터 'policyName'이 누락되었습니다.",
211
+ }).describe("Scaling policy name"),
212
+ adjustmentTypeCode: z.string({
213
+ required_error: "필수 파라미터 'adjustmentTypeCode'가 누락되었습니다.",
214
+ }).describe("Adjustment type (CHANG — exact change, PRCNT — percentage, EXACT — set to exact number)"),
215
+ scalingAdjustment: z.number({
216
+ required_error: "필수 파라미터 'scalingAdjustment'가 누락되었습니다.",
217
+ }).describe("Scaling adjustment value"),
218
+ cooldown: z.number().optional().describe("Cooldown period in seconds after scaling"),
219
+ minAdjustmentStep: z.number().optional().describe("Minimum adjustment step for percentage-based scaling"),
220
+ }, async (params) => {
221
+ try {
222
+ const result = await client.request("/vautoscaling/v2/putScalingPolicy", params);
223
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
224
+ }
225
+ catch (error) {
226
+ return { content: [{ type: "text", text: error.message }], isError: true };
227
+ }
228
+ });
229
+ server.tool("ncloud_list_scaling_policies", "List all scaling policies for an Auto Scaling Group", {
230
+ autoScalingGroupNo: z.string({
231
+ required_error: "필수 파라미터 'autoScalingGroupNo'가 누락되었습니다.",
232
+ }).describe("Auto Scaling Group number"),
233
+ pageNo: z.number().optional().describe("Page number for pagination"),
234
+ pageSize: z.number().optional().describe("Page size for pagination"),
235
+ }, async (params) => {
236
+ try {
237
+ const result = await client.request("/vautoscaling/v2/getAutoScalingPolicyList", params);
238
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
239
+ }
240
+ catch (error) {
241
+ return { content: [{ type: "text", text: error.message }], isError: true };
242
+ }
243
+ });
244
+ server.tool("ncloud_delete_scaling_policy", "⚠️ Destructive: Delete a scaling policy from an Auto Scaling Group. Set confirm=true to execute.", {
245
+ autoScalingGroupNo: z.string({
246
+ required_error: "필수 파라미터 'autoScalingGroupNo'가 누락되었습니다.",
247
+ }).describe("Auto Scaling Group number"),
248
+ policyName: z.string({
249
+ required_error: "필수 파라미터 'policyName'이 누락되었습니다.",
250
+ }).describe("Scaling policy name to delete"),
251
+ confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
252
+ }, async (params) => {
253
+ try {
254
+ if (!params.confirm) {
255
+ const message = `⚠️ This will permanently delete ScalingPolicy [${params.policyName}] from AutoScalingGroup [${params.autoScalingGroupNo}]. Do you want to proceed? (yes/no)\n\nTo execute, call this tool again with confirm=true.`;
256
+ return { content: [{ type: "text", text: message }] };
257
+ }
258
+ const { confirm, ...apiParams } = params;
259
+ const result = await client.request("/vautoscaling/v2/deleteScalingPolicy", apiParams);
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
+ // ─── Auto Scaling Group Update Tool ────────────────────────────────────────
267
+ server.tool("ncloud_update_asg", "Update an existing Auto Scaling Group configuration (e.g. min/max size, desired capacity, cooldown)", {
268
+ autoScalingGroupNo: z.string({
269
+ required_error: "필수 파라미터 'autoScalingGroupNo'가 누락되었습니다.",
270
+ }).describe("Auto Scaling Group number to update"),
271
+ launchConfigurationNo: z.string().optional().describe("New launch configuration number"),
272
+ minSize: z.number().optional().describe("New minimum number of instances"),
273
+ maxSize: z.number().optional().describe("New maximum number of instances"),
274
+ desiredCapacity: z.number().optional().describe("New desired number of instances"),
275
+ defaultCoolDown: z.number().optional().describe("Default cooldown period in seconds"),
276
+ healthCheckGracePeriod: z.number().optional().describe("Health check grace period in seconds"),
277
+ }, async (params) => {
278
+ try {
279
+ const result = await client.request("/vautoscaling/v2/updateAutoScalingGroup", params);
280
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
281
+ }
282
+ catch (error) {
283
+ return { content: [{ type: "text", text: error.message }], isError: true };
284
+ }
285
+ });
286
+ // ─── Execute Scaling Policy Tool ───────────────────────────────────────────
287
+ server.tool("ncloud_execute_policy", "Manually execute a scaling policy for an Auto Scaling Group", {
288
+ autoScalingGroupNo: z.string({
289
+ required_error: "필수 파라미터 'autoScalingGroupNo'가 누락되었습니다.",
290
+ }).describe("Auto Scaling Group number"),
291
+ policyName: z.string({
292
+ required_error: "필수 파라미터 'policyName'이 누락되었습니다.",
293
+ }).describe("Scaling policy name to execute"),
294
+ }, async (params) => {
295
+ try {
296
+ const result = await client.request("/vautoscaling/v2/executePolicy", params);
297
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
298
+ }
299
+ catch (error) {
300
+ return { content: [{ type: "text", text: error.message }], isError: true };
301
+ }
302
+ });
303
+ // ─── Auto Scaling Activity Log Tool ────────────────────────────────────────
304
+ server.tool("ncloud_list_asg_activity_logs", "List activity logs (scaling actions) for an Auto Scaling Group", {
305
+ autoScalingGroupNo: z.string({
306
+ required_error: "필수 파라미터 'autoScalingGroupNo'가 누락되었습니다.",
307
+ }).describe("Auto Scaling Group number"),
308
+ pageNo: z.number().optional().describe("Page number for pagination"),
309
+ pageSize: z.number().optional().describe("Page size for pagination"),
310
+ }, async (params) => {
311
+ try {
312
+ const result = await client.request("/vautoscaling/v2/getAutoScalingActivityLogList", params);
313
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
314
+ }
315
+ catch (error) {
316
+ return { content: [{ type: "text", text: error.message }], isError: true };
317
+ }
318
+ });
319
+ // ─── Suspend/Resume Processes Tools ────────────────────────────────────────
320
+ server.tool("ncloud_suspend_processes", "Suspend specific scaling processes for an Auto Scaling Group", {
321
+ autoScalingGroupNo: z.string({
322
+ required_error: "필수 파라미터 'autoScalingGroupNo'가 누락되었습니다.",
323
+ }).describe("Auto Scaling Group number"),
324
+ scalingProcessCodeList: z.array(z.string(), {
325
+ required_error: "필수 파라미터 'scalingProcessCodeList'가 누락되었습니다.",
326
+ }).min(1).describe("List of scaling process codes to suspend"),
327
+ }, async (params) => {
328
+ try {
329
+ const result = await client.request("/vautoscaling/v2/suspendProcesses", params);
330
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
331
+ }
332
+ catch (error) {
333
+ return { content: [{ type: "text", text: error.message }], isError: true };
334
+ }
335
+ });
336
+ server.tool("ncloud_resume_processes", "Resume previously suspended scaling processes for an Auto Scaling Group", {
337
+ autoScalingGroupNo: z.string({
338
+ required_error: "필수 파라미터 'autoScalingGroupNo'가 누락되었습니다.",
339
+ }).describe("Auto Scaling Group number"),
340
+ scalingProcessCodeList: z.array(z.string(), {
341
+ required_error: "필수 파라미터 'scalingProcessCodeList'가 누락되었습니다.",
342
+ }).min(1).describe("List of scaling process codes to resume"),
343
+ }, async (params) => {
344
+ try {
345
+ const result = await client.request("/vautoscaling/v2/resumeProcesses", params);
346
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
347
+ }
348
+ catch (error) {
349
+ return { content: [{ type: "text", text: error.message }], isError: true };
350
+ }
351
+ });
352
+ // ─── Scheduled Action Tools ────────────────────────────────────────────────
353
+ server.tool("ncloud_put_scheduled_action", "Create or update a scheduled action for an Auto Scaling Group", {
354
+ autoScalingGroupNo: z.string({
355
+ required_error: "필수 파라미터 'autoScalingGroupNo'가 누락되었습니다.",
356
+ }).describe("Auto Scaling Group number"),
357
+ scheduledActionName: z.string({
358
+ required_error: "필수 파라미터 'scheduledActionName'이 누락되었습니다.",
359
+ }).describe("Scheduled action name"),
360
+ desiredCapacity: z.number().optional().describe("Desired capacity at scheduled time"),
361
+ minSize: z.number().optional().describe("Minimum size at scheduled time"),
362
+ maxSize: z.number().optional().describe("Maximum size at scheduled time"),
363
+ startTime: z.string().optional().describe("Start time in ISO 8601 format (e.g. 2024-01-01T00:00:00+0900)"),
364
+ endTime: z.string().optional().describe("End time in ISO 8601 format (e.g. 2024-12-31T23:59:59+0900)"),
365
+ recurrenceInKST: z.string().optional().describe("Cron expression in KST (e.g. '0 9 * * 1-5' for weekdays at 9am KST)"),
366
+ }, async (params) => {
367
+ try {
368
+ const result = await client.request("/vautoscaling/v2/putScheduledUpdateGroupAction", params);
369
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
370
+ }
371
+ catch (error) {
372
+ return { content: [{ type: "text", text: error.message }], isError: true };
373
+ }
374
+ });
375
+ server.tool("ncloud_list_scheduled_actions", "List scheduled actions that have not yet been executed for an Auto Scaling Group", {
376
+ autoScalingGroupNo: z.string({
377
+ required_error: "필수 파라미터 'autoScalingGroupNo'가 누락되었습니다.",
378
+ }).describe("Auto Scaling Group number"),
379
+ }, async (params) => {
380
+ try {
381
+ const result = await client.request("/vautoscaling/v2/getScheduledActionList", params);
382
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
383
+ }
384
+ catch (error) {
385
+ return { content: [{ type: "text", text: error.message }], isError: true };
386
+ }
387
+ });
388
+ server.tool("ncloud_delete_scheduled_action", "[⚠️ DESTRUCTIVE] Delete a scheduled action from an Auto Scaling Group. Set confirm=true to execute.", {
389
+ autoScalingGroupNo: z.string({
390
+ required_error: "필수 파라미터 'autoScalingGroupNo'가 누락되었습니다.",
391
+ }).describe("Auto Scaling Group number"),
392
+ scheduledActionName: z.string({
393
+ required_error: "필수 파라미터 'scheduledActionName'이 누락되었습니다.",
394
+ }).describe("Scheduled action name to delete"),
395
+ confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
396
+ }, async (params) => {
397
+ try {
398
+ if (!params.confirm) {
399
+ const message = `⚠️ This will permanently delete ScheduledAction [${params.scheduledActionName}] from AutoScalingGroup [${params.autoScalingGroupNo}]. Do you want to proceed? (yes/no)\n\nTo execute, call this tool again with confirm=true.`;
400
+ return { content: [{ type: "text", text: message }] };
401
+ }
402
+ const { confirm, ...apiParams } = params;
403
+ const result = await client.request("/vautoscaling/v2/deleteScheduledAction", apiParams);
404
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
405
+ }
406
+ catch (error) {
407
+ return { content: [{ type: "text", text: error.message }], isError: true };
408
+ }
409
+ });
410
+ // ─── Reference Query Tools ─────────────────────────────────────────────────
411
+ server.tool("ncloud_get_scaling_process_types", "List available scaling process types for Auto Scaling Groups", {}, async () => {
412
+ try {
413
+ const result = await client.request("/vautoscaling/v2/getScalingProcessTypeList", {});
414
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
415
+ }
416
+ catch (error) {
417
+ return { content: [{ type: "text", text: error.message }], isError: true };
418
+ }
419
+ });
420
+ server.tool("ncloud_get_adjustment_types", "List available adjustment type codes for Auto Scaling policy configuration", {}, async () => {
421
+ try {
422
+ const result = await client.request("/vautoscaling/v2/getAdjustmentTypeList", {});
423
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
424
+ }
425
+ catch (error) {
426
+ return { content: [{ type: "text", text: error.message }], isError: true };
427
+ }
428
+ });
429
+ }
430
+ //# sourceMappingURL=autoscaling.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"autoscaling.js","sourceRoot":"","sources":["../../src/tools/autoscaling.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { NcloudClient } from "../client/ncloud-client.js";
3
+ /**
4
+ * Ncloud Billing API Tools
5
+ * Base URL: https://billingapi.apigw.ntruss.com/billing/v1
6
+ *
7
+ * Categories:
8
+ * - List Price: 요금제/서비스/가격 조회
9
+ * - Cost and Usage: 청구 비용/사용량 조회
10
+ * - Discount: 할인/코인/크레딧 조회
11
+ *
12
+ * 모든 API는 조회(GET) 전용이며 파괴적 작업이 없습니다.
13
+ */
14
+ export declare function registerBillingTools(server: McpServer, client: NcloudClient): void;