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,500 @@
1
+ import { z } from "zod";
2
+ export function registerDatabaseMysqlTools(server, client) {
3
+ // ─── Query Tools ───────────────────────────────────────────────────────────
4
+ server.tool("ncloud_list_mysql_instances", "List all Cloud DB for MySQL instances in the current region", {
5
+ cloudMysqlInstanceNoList: z.array(z.string()).optional().describe("Filter by MySQL instance numbers"),
6
+ cloudMysqlServiceName: z.string().optional().describe("Filter by MySQL service name"),
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("/vmysql/v2/getCloudMysqlInstanceList", 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_mysql_instance_detail", "Get detailed information about a specific Cloud DB for MySQL instance", {
19
+ cloudMysqlInstanceNo: z.string().describe("Cloud MySQL instance number to query"),
20
+ }, async (params) => {
21
+ try {
22
+ const result = await client.request("/vmysql/v2/getCloudMysqlInstanceDetail", 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_list_mysql_databases", "List databases in a Cloud DB for MySQL instance", {
30
+ cloudMysqlInstanceNo: z.string().describe("Cloud MySQL instance number"),
31
+ }, async (params) => {
32
+ try {
33
+ const result = await client.request("/vmysql/v2/getCloudMysqlDatabaseList", params);
34
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
35
+ }
36
+ catch (error) {
37
+ return { content: [{ type: "text", text: error.message }], isError: true };
38
+ }
39
+ });
40
+ server.tool("ncloud_list_mysql_users", "List users in a Cloud DB for MySQL instance", {
41
+ cloudMysqlInstanceNo: z.string().describe("Cloud MySQL instance number"),
42
+ }, async (params) => {
43
+ try {
44
+ const result = await client.request("/vmysql/v2/getCloudMysqlUserList", params);
45
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
46
+ }
47
+ catch (error) {
48
+ return { content: [{ type: "text", text: error.message }], isError: true };
49
+ }
50
+ });
51
+ server.tool("ncloud_list_mysql_backups", "List backups for a Cloud DB for MySQL instance", {
52
+ cloudMysqlInstanceNo: z.string().describe("Cloud MySQL instance number"),
53
+ }, async (params) => {
54
+ try {
55
+ const result = await client.request("/vmysql/v2/getCloudMysqlBackupList", params);
56
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
57
+ }
58
+ catch (error) {
59
+ return { content: [{ type: "text", text: error.message }], isError: true };
60
+ }
61
+ });
62
+ server.tool("ncloud_get_mysql_image_products", "List available Cloud DB for MySQL image product codes (engine versions)", {
63
+ regionCode: z.string().optional().describe("Region code (e.g. KR, SGN, JPN). Defaults to current region."),
64
+ }, async (params) => {
65
+ try {
66
+ const result = await client.request("/vmysql/v2/getCloudMysqlImageProductList", params);
67
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
68
+ }
69
+ catch (error) {
70
+ return { content: [{ type: "text", text: error.message }], isError: true };
71
+ }
72
+ });
73
+ server.tool("ncloud_get_mysql_products", "List available Cloud DB for MySQL server spec product codes for a given image product code", {
74
+ cloudMysqlImageProductCode: z.string().describe("MySQL image product code (from ncloud_get_mysql_image_products)"),
75
+ regionCode: z.string().optional().describe("Region code (e.g. KR, SGN, JPN). Defaults to current region."),
76
+ }, async (params) => {
77
+ try {
78
+ const result = await client.request("/vmysql/v2/getCloudMysqlProductList", params);
79
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
80
+ }
81
+ catch (error) {
82
+ return { content: [{ type: "text", text: error.message }], isError: true };
83
+ }
84
+ });
85
+ server.tool("ncloud_get_mysql_target_vpcs", "List VPCs available for Cloud DB for MySQL instance creation", {
86
+ regionCode: z.string().optional().describe("Region code (e.g. KR, SGN, JPN). Defaults to current region."),
87
+ }, async (params) => {
88
+ try {
89
+ const result = await client.request("/vmysql/v2/getCloudMysqlTargetVpcList", params);
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_get_mysql_target_subnets", "List subnets available for Cloud DB for MySQL instance creation within a specific MySQL instance", {
97
+ cloudMysqlInstanceNo: z.string().describe("Cloud MySQL instance number"),
98
+ regionCode: z.string().optional().describe("Region code (e.g. KR, SGN, JPN). Defaults to current region."),
99
+ }, async (params) => {
100
+ try {
101
+ const result = await client.request("/vmysql/v2/getCloudMysqlTargetSubnetList", params);
102
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
103
+ }
104
+ catch (error) {
105
+ return { content: [{ type: "text", text: error.message }], isError: true };
106
+ }
107
+ });
108
+ server.tool("ncloud_list_mysql_backup_details", "List detailed backup information (including file names) for a Cloud DB for MySQL instance", {
109
+ cloudMysqlInstanceNo: z.string().describe("Cloud MySQL instance number"),
110
+ regionCode: z.string().optional().describe("Region code (e.g. KR, SGN, JPN). Defaults to current region."),
111
+ }, async (params) => {
112
+ try {
113
+ const result = await client.request("/vmysql/v2/getCloudMysqlBackupDetailList", params);
114
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
115
+ }
116
+ catch (error) {
117
+ return { content: [{ type: "text", text: error.message }], isError: true };
118
+ }
119
+ });
120
+ server.tool("ncloud_get_mysql_recovery_time", "Get the available recovery time range (recoveryStartTime ~ recoveryEndTime) for a Cloud DB for MySQL instance", {
121
+ cloudMysqlInstanceNo: z.string().describe("Cloud MySQL instance number"),
122
+ regionCode: z.string().optional().describe("Region code (e.g. KR, SGN, JPN). Defaults to current region."),
123
+ }, async (params) => {
124
+ try {
125
+ const result = await client.request("/vmysql/v2/getCloudMysqlRecoveryTime", params);
126
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
127
+ }
128
+ catch (error) {
129
+ return { content: [{ type: "text", text: error.message }], isError: true };
130
+ }
131
+ });
132
+ server.tool("ncloud_list_mysql_events", "List event history for a Cloud DB for MySQL instance", {
133
+ cloudMysqlInstanceNo: z.string().describe("Cloud MySQL instance number"),
134
+ regionCode: z.string().optional().describe("Region code (e.g. KR, SGN, JPN). Defaults to current region."),
135
+ }, async (params) => {
136
+ try {
137
+ const result = await client.request("/vmysql/v2/getCloudMysqlEventHistoryList", params);
138
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
139
+ }
140
+ catch (error) {
141
+ return { content: [{ type: "text", text: error.message }], isError: true };
142
+ }
143
+ });
144
+ server.tool("ncloud_list_mysql_logs", "List DB server log files for a Cloud DB for MySQL server instance", {
145
+ cloudMysqlServerInstanceNo: z.string().describe("Cloud MySQL server instance number"),
146
+ regionCode: z.string().optional().describe("Region code (e.g. KR, SGN, JPN). Defaults to current region."),
147
+ }, async (params) => {
148
+ try {
149
+ const result = await client.request("/vmysql/v2/getDbServerLogList", params);
150
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
151
+ }
152
+ catch (error) {
153
+ return { content: [{ type: "text", text: error.message }], isError: true };
154
+ }
155
+ });
156
+ // ─── Create Tools ──────────────────────────────────────────────────────────
157
+ server.tool("ncloud_create_mysql_instance", "Create a new Cloud DB for MySQL instance. Use dryRun=true to preview without creating.", {
158
+ // ── Required parameters ──
159
+ cloudMysqlServiceName: z.string({
160
+ required_error: "필수 파라미터 'cloudMysqlServiceName'이 누락되었습니다.",
161
+ }).describe("MySQL service name (3-30 chars, letters, numbers, Korean, '-')"),
162
+ cloudMysqlServerNamePrefix: z.string({
163
+ required_error: "필수 파라미터 'cloudMysqlServerNamePrefix'이 누락되었습니다.",
164
+ }).describe("Server name prefix (3-20 chars, starts with letter, ends with letter/number, allows '-')"),
165
+ cloudMysqlUserName: z.string({
166
+ required_error: "필수 파라미터 'cloudMysqlUserName'이 누락되었습니다.",
167
+ }).describe("DB user account ID (3-16 chars, starts with letter, allows letters/numbers/'-'/'_')"),
168
+ cloudMysqlUserPassword: z.string({
169
+ required_error: "필수 파라미터 'cloudMysqlUserPassword'이 누락되었습니다.",
170
+ }).describe("DB user password (8-20 chars, must include letter+number+special char)"),
171
+ hostIp: z.string({
172
+ required_error: "필수 파라미터 'hostIp'이 누락되었습니다.",
173
+ }).describe("Host IP for MySQL access (e.g. '%' for all, '1.1.1.1', '1.1.1.%', '1.1.1.0/24'). Use '%25' for '%' in GET requests."),
174
+ cloudMysqlDatabaseName: z.string({
175
+ required_error: "필수 파라미터 'cloudMysqlDatabaseName'이 누락되었습니다.",
176
+ }).describe("Initial database name (1-30 chars, starts with letter)"),
177
+ vpcNo: z.string({
178
+ required_error: "필수 파라미터 'vpcNo'이 누락되었습니다.",
179
+ }).describe("VPC number (getCloudMysqlTargetVpcList)"),
180
+ subnetNo: z.string({
181
+ required_error: "필수 파라미터 'subnetNo'이 누락되었습니다.",
182
+ }).describe("Subnet number for primary NIC (getCloudMysqlTargetSubnetList)"),
183
+ // ── Optional parameters ──
184
+ regionCode: z.string().optional().describe("Region code (e.g. KR, SGN, JPN). Defaults to first region."),
185
+ cloudMysqlImageProductCode: z.string().optional().describe("MySQL image product code (getCloudMysqlImageProductList)"),
186
+ cloudMysqlProductCode: z.string().optional().describe("MySQL server product (spec) code (getCloudMysqlProductList). Defaults to minimum spec."),
187
+ dataStorageTypeCode: z.enum(["SSD", "HDD", "CB2"]).optional().describe("Data storage type. G2 default: SSD, G3 default: CB2. Cannot change after creation."),
188
+ isHa: z.boolean().optional().describe("High availability (default: true). If true, creates Standby Master (2 servers). If false, isMultiZone/standbyMasterSubnetNo are ignored."),
189
+ isMultiZone: z.boolean().optional().describe("Multi-zone HA (default: false). Required when isHa=true. Places Master and Standby in different zones."),
190
+ standbyMasterSubnetNo: z.string().optional().describe("Subnet for Standby Master server. Required when isMultiZone=true. Must be different zone from primary subnet."),
191
+ isStorageEncryption: z.boolean().optional().describe("Storage encryption (default: false). Only available when isHa=true. Cannot change after creation."),
192
+ isBackup: z.boolean().optional().describe("Backup enabled (default: true). Fixed to true when isHa=true."),
193
+ backupFileRetentionPeriod: z.number().optional().describe("Backup retention period in days (default: 1). Only InnoDB tables supported."),
194
+ backupTime: z.string().optional().describe("Backup time in HH:mm format (e.g. '02:00'). Required when isBackup=true and isAutomaticBackup=false."),
195
+ isAutomaticBackup: z.boolean().optional().describe("Automatic backup time scheduling (default: true). If true, backupTime cannot be specified."),
196
+ cloudMysqlPort: z.number().optional().describe("MySQL TCP port (default: 3306, range: 10000-20000). Cannot change after creation."),
197
+ engineVersionCode: z.string().optional().describe("DB engine version code (getCloudMysqlImageProductList). Defaults to latest version."),
198
+ isPrivateSubDomain: z.boolean().optional().describe("Use private sub-domain (true/false)"),
199
+ privateSubDomainPrefix: z.string().optional().describe("Private sub-domain prefix (3-15 chars). Required when isPrivateSubDomain=true."),
200
+ isDeleteProtection: z.boolean().optional().describe("Cluster deletion protection (default: false). If true, cluster cannot be deleted."),
201
+ dryRun: z.boolean().optional().default(false).describe("If true, returns a preview without actually creating the instance"),
202
+ }, async (params) => {
203
+ try {
204
+ if (params.dryRun) {
205
+ const preview = {
206
+ label: "🔍 Dry-Run Preview: MySQL Instance Creation",
207
+ cloudMysqlServiceName: params.cloudMysqlServiceName,
208
+ cloudMysqlServerNamePrefix: params.cloudMysqlServerNamePrefix,
209
+ cloudMysqlUserName: params.cloudMysqlUserName,
210
+ hostIp: params.hostIp,
211
+ vpcNo: params.vpcNo,
212
+ subnetNo: params.subnetNo,
213
+ cloudMysqlDatabaseName: params.cloudMysqlDatabaseName,
214
+ isHa: params.isHa ?? true,
215
+ isMultiZone: params.isMultiZone ?? false,
216
+ standbyMasterSubnetNo: params.standbyMasterSubnetNo ?? "(not set)",
217
+ dataStorageTypeCode: params.dataStorageTypeCode ?? "(auto)",
218
+ isStorageEncryption: params.isStorageEncryption ?? false,
219
+ isBackup: params.isBackup ?? true,
220
+ cloudMysqlPort: params.cloudMysqlPort ?? 3306,
221
+ engineVersionCode: params.engineVersionCode ?? "(latest)",
222
+ isDeleteProtection: params.isDeleteProtection ?? false,
223
+ message: "이 요청은 실제 MySQL 인스턴스를 생성하지 않습니다. dryRun=false로 호출하면 인스턴스가 생성됩니다.",
224
+ };
225
+ return { content: [{ type: "text", text: JSON.stringify(preview, null, 2) }] };
226
+ }
227
+ const { dryRun, ...apiParams } = params;
228
+ const result = await client.request("/vmysql/v2/createCloudMysqlInstance", apiParams);
229
+ const instance = result.cloudMysqlInstanceList?.[0];
230
+ const summary = {
231
+ 리소스타입: "MySQL",
232
+ 리소스ID: instance?.cloudMysqlInstanceNo ?? "unknown",
233
+ 서비스명: params.cloudMysqlServiceName,
234
+ 상태: instance?.cloudMysqlInstanceStatus?.codeName ?? "creating",
235
+ 생성시각: instance?.createDate ?? new Date().toISOString(),
236
+ VPC: params.vpcNo,
237
+ 서브넷: params.subnetNo,
238
+ 데이터베이스명: params.cloudMysqlDatabaseName,
239
+ 고가용성: instance?.isHa ?? params.isHa ?? true,
240
+ 멀티존: instance?.isMultiZone ?? params.isMultiZone ?? false,
241
+ };
242
+ return { content: [{ type: "text", text: JSON.stringify(summary, null, 2) }] };
243
+ }
244
+ catch (error) {
245
+ return { content: [{ type: "text", text: error.message }], isError: true };
246
+ }
247
+ });
248
+ server.tool("ncloud_create_mysql_slave", "Create a slave (read replica) for a Cloud DB for MySQL instance", {
249
+ cloudMysqlInstanceNo: z.string().describe("Cloud MySQL instance number to create slave for"),
250
+ subnetNo: z.string().optional().describe("Subnet number for the slave instance. Required when isMultiZone=true. Ignored when isMultiZone=false."),
251
+ regionCode: z.string().optional().describe("Region code (default: first region)"),
252
+ }, async (params) => {
253
+ try {
254
+ const result = await client.request("/vmysql/v2/createCloudMysqlSlaveInstance", params);
255
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
256
+ }
257
+ catch (error) {
258
+ return { content: [{ type: "text", text: error.message }], isError: true };
259
+ }
260
+ });
261
+ server.tool("ncloud_add_mysql_databases", "Add databases to a Cloud DB for MySQL instance", {
262
+ cloudMysqlInstanceNo: z.string().describe("Cloud MySQL instance number"),
263
+ cloudMysqlDatabaseNameList: z.array(z.string()).min(1).describe("List of database names to add"),
264
+ }, async (params) => {
265
+ try {
266
+ const result = await client.request("/vmysql/v2/addCloudMysqlDatabaseList", params);
267
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
268
+ }
269
+ catch (error) {
270
+ return { content: [{ type: "text", text: error.message }], isError: true };
271
+ }
272
+ });
273
+ server.tool("ncloud_add_mysql_users", "Add users to a Cloud DB for MySQL instance", {
274
+ cloudMysqlInstanceNo: z.string().describe("Cloud MySQL instance number"),
275
+ cloudMysqlUserList: z.array(z.object({
276
+ name: z.string().describe("User name"),
277
+ password: z.string().describe("User password"),
278
+ hostIp: z.string().optional().describe("Host IP (default: %)"),
279
+ authority: z.string().optional().describe("User authority (READ, DDL, CRUD)"),
280
+ })).min(1).describe("List of users to add"),
281
+ }, async (params) => {
282
+ try {
283
+ const { cloudMysqlInstanceNo, cloudMysqlUserList } = params;
284
+ const requestParams = { cloudMysqlInstanceNo };
285
+ for (let i = 0; i < cloudMysqlUserList.length; i++) {
286
+ const user = cloudMysqlUserList[i];
287
+ requestParams[`cloudMysqlUserList.${i + 1}.name`] = user.name;
288
+ requestParams[`cloudMysqlUserList.${i + 1}.password`] = user.password;
289
+ if (user.hostIp) {
290
+ requestParams[`cloudMysqlUserList.${i + 1}.hostIp`] = user.hostIp;
291
+ }
292
+ if (user.authority) {
293
+ requestParams[`cloudMysqlUserList.${i + 1}.authority`] = user.authority;
294
+ }
295
+ }
296
+ const result = await client.request("/vmysql/v2/addCloudMysqlUserList", requestParams);
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
+ // ─── Operation Tools ───────────────────────────────────────────────────────
304
+ server.tool("ncloud_reboot_mysql_server", "Reboot a Cloud DB for MySQL server instance", {
305
+ cloudMysqlServerInstanceNo: z.string().describe("Cloud MySQL server instance number to reboot"),
306
+ }, async (params) => {
307
+ try {
308
+ const result = await client.request("/vmysql/v2/rebootCloudMysqlServerInstance", params);
309
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
310
+ }
311
+ catch (error) {
312
+ return { content: [{ type: "text", text: error.message }], isError: true };
313
+ }
314
+ });
315
+ server.tool("ncloud_change_mysql_spec", "Change the server spec (CPU/Memory) of a Cloud DB for MySQL instance", {
316
+ cloudMysqlInstanceNo: z.string().describe("Cloud MySQL instance number (getCloudMysqlInstanceList)"),
317
+ cloudMysqlProductCode: z.string().describe("New MySQL server product (spec) code (getCloudMysqlProductList)"),
318
+ isRolling: z.boolean().optional().describe("Rolling upgrade (default: false). true: sequential upgrade with minimal downtime (G3 only). false: all servers stop simultaneously."),
319
+ regionCode: z.string().optional().describe("Region code (default: first region)"),
320
+ }, async (params) => {
321
+ try {
322
+ const result = await client.request("/vmysql/v2/changeCloudMysqlServerSpec", params);
323
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
324
+ }
325
+ catch (error) {
326
+ return { content: [{ type: "text", text: error.message }], isError: true };
327
+ }
328
+ });
329
+ server.tool("ncloud_create_mysql_recovery", "Create a Recovery server instance for a Cloud DB for MySQL instance. Restores from backup file or point-in-time.", {
330
+ cloudMysqlInstanceNo: z.string().describe("Cloud MySQL instance number (getCloudMysqlInstanceList)"),
331
+ cloudMysqlRecoveryServerName: z.string().describe("Recovery server name prefix (3-20 chars, starts with letter, ends with letter/number, allows '-')"),
332
+ subnetNo: z.string().optional().describe("Subnet number for Recovery server. Required when isMultiZone=true. Ignored when isMultiZone=false."),
333
+ fileName: z.string().optional().describe("Backup file name for restore (getCloudMysqlBackupDetailList). If specified, recoveryTime is ignored. One of fileName or recoveryTime is required."),
334
+ recoveryTime: z.string().optional().describe("Point-in-time recovery (yyyy-MM-dd HH:mm). If specified, fileName is ignored. One of fileName or recoveryTime is required."),
335
+ regionCode: z.string().optional().describe("Region code (default: first region)"),
336
+ }, async (params) => {
337
+ try {
338
+ const result = await client.request("/vmysql/v2/createCloudMysqlRecoveryInstance", params);
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_change_mysql_users", "Change DB user information (authority, password, hostIp) for a Cloud DB for MySQL instance", {
346
+ cloudMysqlInstanceNo: z.string().describe("Cloud MySQL instance number"),
347
+ cloudMysqlUserList: z.array(z.object({
348
+ name: z.string().describe("DB user name to modify"),
349
+ hostIp: z.string().describe("Host IP for MySQL access (e.g. '%', '1.1.1.1', '1.1.1.%')"),
350
+ authority: z.enum(["READ", "CRUD", "DDL"]).describe("User authority: READ (select only), CRUD (insert/select/update/delete), DDL (CRUD + create/drop/alter table)"),
351
+ password: z.string().optional().describe("New password (8-20 chars, must include letter+number+special char). Optional — omit to keep current password."),
352
+ isSystemTableAccess: z.boolean().optional().describe("System table access (default: true)"),
353
+ })).min(1).describe("List of users to modify"),
354
+ regionCode: z.string().optional().describe("Region code (default: first region)"),
355
+ }, async (params) => {
356
+ try {
357
+ const { cloudMysqlInstanceNo, cloudMysqlUserList, regionCode } = params;
358
+ const requestParams = { cloudMysqlInstanceNo };
359
+ if (regionCode)
360
+ requestParams.regionCode = regionCode;
361
+ for (let i = 0; i < cloudMysqlUserList.length; i++) {
362
+ const user = cloudMysqlUserList[i];
363
+ requestParams[`cloudMysqlUserList.${i + 1}.name`] = user.name;
364
+ requestParams[`cloudMysqlUserList.${i + 1}.hostIp`] = user.hostIp;
365
+ requestParams[`cloudMysqlUserList.${i + 1}.authority`] = user.authority;
366
+ if (user.password) {
367
+ requestParams[`cloudMysqlUserList.${i + 1}.password`] = user.password;
368
+ }
369
+ if (user.isSystemTableAccess !== undefined) {
370
+ requestParams[`cloudMysqlUserList.${i + 1}.isSystemTableAccess`] = user.isSystemTableAccess;
371
+ }
372
+ }
373
+ const result = await client.request("/vmysql/v2/changeCloudMysqlUserList", requestParams);
374
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
375
+ }
376
+ catch (error) {
377
+ return { content: [{ type: "text", text: error.message }], isError: true };
378
+ }
379
+ });
380
+ server.tool("ncloud_upgrade_mysql_version", "Upgrade the DB engine version of a Cloud DB for MySQL instance", {
381
+ cloudMysqlInstanceNo: z.string().describe("Cloud MySQL instance number (getCloudMysqlInstanceList)"),
382
+ cloudMysqlImageProductCode: z.string().describe("Target MySQL image product code (getCloudMysqlImageProductList)"),
383
+ engineVersionCode: z.string().optional().describe("Target engine version code (e.g. 'MYSQL8.0.40'). Defaults to latest version if omitted."),
384
+ isMajorVersionUpgrade: z.boolean().optional().describe("Major version upgrade (default: false). true: major upgrade (one step at a time, e.g. 5.7→8.0→8.4). false: minor upgrade only (e.g. 8.0.34→8.0.40)."),
385
+ regionCode: z.string().optional().describe("Region code (default: first region)"),
386
+ }, async (params) => {
387
+ try {
388
+ const result = await client.request("/vmysql/v2/upgradeCloudMysqlDbEngineVersion", params);
389
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
390
+ }
391
+ catch (error) {
392
+ return { content: [{ type: "text", text: error.message }], isError: true };
393
+ }
394
+ });
395
+ // ─── Destructive Tools (with confirm gate) ─────────────────────────────────
396
+ server.tool("ncloud_delete_mysql_server", "⚠️ Destructive: Delete a Slave or Recovery server instance from a Cloud DB for MySQL cluster. Master/Standby cannot be deleted. Set confirm=true to execute.", {
397
+ cloudMysqlServerInstanceNo: z.string().describe("Cloud MySQL server instance number to delete (Slave or Recovery only)"),
398
+ regionCode: z.string().optional().describe("Region code (default: first region)"),
399
+ confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
400
+ }, async (params) => {
401
+ try {
402
+ if (!params.confirm) {
403
+ const message = `⚠️ This will permanently delete MySQL server instance [${params.cloudMysqlServerInstanceNo}] (Slave/Recovery only). Do you want to proceed? (yes/no)\n\nTo execute, call this tool again with confirm=true.`;
404
+ return { content: [{ type: "text", text: message }] };
405
+ }
406
+ const { confirm, ...apiParams } = params;
407
+ const result = await client.request("/vmysql/v2/deleteCloudMysqlServerInstance", apiParams);
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_delete_mysql_instance", "⚠️ Destructive: Permanently delete a Cloud DB for MySQL instance. Set confirm=true to execute.", {
415
+ cloudMysqlInstanceNo: z.string().describe("Cloud MySQL instance number to delete"),
416
+ confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
417
+ }, async (params) => {
418
+ try {
419
+ if (!params.confirm) {
420
+ const message = `⚠️ This will permanently delete MySQL instance [${params.cloudMysqlInstanceNo}]. Do you want to proceed? (yes/no)\n\nTo execute, call this tool again with confirm=true.`;
421
+ return { content: [{ type: "text", text: message }] };
422
+ }
423
+ const { confirm, ...apiParams } = params;
424
+ const result = await client.request("/vmysql/v2/deleteCloudMysqlInstance", apiParams);
425
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
426
+ }
427
+ catch (error) {
428
+ return { content: [{ type: "text", text: error.message }], isError: true };
429
+ }
430
+ });
431
+ server.tool("ncloud_delete_mysql_databases", "⚠️ Destructive: Delete databases from a Cloud DB for MySQL instance. Set confirm=true to execute.", {
432
+ cloudMysqlInstanceNo: z.string().describe("Cloud MySQL instance number"),
433
+ cloudMysqlDatabaseNameList: z.array(z.string()).min(1).describe("List of database names to delete"),
434
+ confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
435
+ }, async (params) => {
436
+ try {
437
+ if (!params.confirm) {
438
+ const message = `⚠️ This will permanently delete databases [${params.cloudMysqlDatabaseNameList.join(", ")}] from MySQL instance [${params.cloudMysqlInstanceNo}]. Do you want to proceed? (yes/no)\n\nTo execute, call this tool again with confirm=true.`;
439
+ return { content: [{ type: "text", text: message }] };
440
+ }
441
+ const { confirm, ...apiParams } = params;
442
+ const result = await client.request("/vmysql/v2/deleteCloudMysqlDatabaseList", apiParams);
443
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
444
+ }
445
+ catch (error) {
446
+ return { content: [{ type: "text", text: error.message }], isError: true };
447
+ }
448
+ });
449
+ server.tool("ncloud_delete_mysql_users", "⚠️ Destructive: Delete users from a Cloud DB for MySQL instance. Set confirm=true to execute.", {
450
+ cloudMysqlInstanceNo: z.string().describe("Cloud MySQL instance number"),
451
+ cloudMysqlUserNameList: z.array(z.string()).min(1).describe("List of user names to delete"),
452
+ confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
453
+ }, async (params) => {
454
+ try {
455
+ if (!params.confirm) {
456
+ const message = `⚠️ This will permanently delete users [${params.cloudMysqlUserNameList.join(", ")}] from MySQL instance [${params.cloudMysqlInstanceNo}]. Do you want to proceed? (yes/no)\n\nTo execute, call this tool again with confirm=true.`;
457
+ return { content: [{ type: "text", text: message }] };
458
+ }
459
+ const { confirm, ...apiParams } = params;
460
+ const result = await client.request("/vmysql/v2/deleteCloudMysqlUserList", apiParams);
461
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
462
+ }
463
+ catch (error) {
464
+ return { content: [{ type: "text", text: error.message }], isError: true };
465
+ }
466
+ });
467
+ // ─── Export Tools ──────────────────────────────────────────────────────────
468
+ server.tool("ncloud_export_mysql_backup", "Export a Cloud DB for MySQL backup file to Object Storage. Use ncloud_list_mysql_backup_details to get available file names.", {
469
+ cloudMysqlInstanceNo: z.string().describe("Cloud MySQL instance number (getCloudMysqlInstanceList)"),
470
+ fileName: z.string().describe("Backup file name to export (getCloudMysqlBackupDetailList)"),
471
+ bucketName: z.string().describe("Object Storage bucket name to export to"),
472
+ folderPath: z.string().optional().describe("Folder path within the bucket (e.g. 'mysql-backups/daily'). If omitted, exports to bucket root."),
473
+ regionCode: z.string().optional().describe("Region code (default: first region)"),
474
+ }, async (params) => {
475
+ try {
476
+ const result = await client.request("/vmysql/v2/exportBackupToObjectStorage", params);
477
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
478
+ }
479
+ catch (error) {
480
+ return { content: [{ type: "text", text: error.message }], isError: true };
481
+ }
482
+ });
483
+ server.tool("ncloud_export_mysql_log", "Export a Cloud DB for MySQL server log file to Object Storage. Use ncloud_list_mysql_logs to get available log files.", {
484
+ cloudMysqlServerInstanceNo: z.string().describe("Cloud MySQL server instance number"),
485
+ logType: z.enum(["BINARY", "ERROR", "SLOW", "GENERAL", "AUDIT"]).describe("Log type to export: BINARY (binlog), ERROR (error log), SLOW (slow query log), GENERAL (general log), AUDIT (audit log)"),
486
+ fileName: z.string().describe("Log file name to export (getDbServerLogList)"),
487
+ bucketName: z.string().describe("Object Storage bucket name to export to"),
488
+ folderPath: z.string().optional().describe("Folder path within the bucket (e.g. 'mysql-logs/error'). If omitted, exports to bucket root."),
489
+ regionCode: z.string().optional().describe("Region code (default: first region)"),
490
+ }, async (params) => {
491
+ try {
492
+ const result = await client.request("/vmysql/v2/exportDbServerLogToObjectStorage", params);
493
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
494
+ }
495
+ catch (error) {
496
+ return { content: [{ type: "text", text: error.message }], isError: true };
497
+ }
498
+ });
499
+ }
500
+ //# sourceMappingURL=database-mysql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-mysql.js","sourceRoot":"","sources":["../../src/tools/database-mysql.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ import { NcloudClient } from "../client/ncloud-client.js";
3
+ export declare function registerDatabasePostgresqlTools(server: McpServer, client: NcloudClient): void;