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,432 @@
1
+ import { z } from "zod";
2
+ export function registerDatabasePostgresqlTools(server, client) {
3
+ // ─── Query Tools ───────────────────────────────────────────────────────────
4
+ server.tool("ncloud_list_postgresql_instances", "List all Cloud DB for PostgreSQL instances in the current region", {
5
+ cloudPostgresqlInstanceNoList: z.array(z.string()).optional().describe("Filter by PostgreSQL instance numbers"),
6
+ cloudPostgresqlServiceName: z.string().optional().describe("Filter by PostgreSQL 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("/vpostgresql/v2/getCloudPostgresqlInstanceList", 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_postgresql_instance_detail", "Get detailed information about a specific Cloud DB for PostgreSQL instance", {
19
+ cloudPostgresqlInstanceNo: z.string().describe("Cloud PostgreSQL instance number to query"),
20
+ }, async (params) => {
21
+ try {
22
+ const result = await client.request("/vpostgresql/v2/getCloudPostgresqlInstanceDetail", 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_postgresql_backups", "List backups for a Cloud DB for PostgreSQL instance", {
30
+ cloudPostgresqlInstanceNo: z.string().describe("Cloud PostgreSQL instance number"),
31
+ }, async (params) => {
32
+ try {
33
+ const result = await client.request("/vpostgresql/v2/getCloudPostgresqlBackupList", 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
+ // ─── Create Tools ──────────────────────────────────────────────────────────
41
+ server.tool("ncloud_create_postgresql_instance", "Create a new Cloud DB for PostgreSQL instance. Use dryRun=true to preview without creating.", {
42
+ cloudPostgresqlServiceName: z.string({
43
+ required_error: "필수 파라미터 'cloudPostgresqlServiceName'이 누락되었습니다.",
44
+ }).describe("PostgreSQL service name (3-20 chars, lowercase letters and numbers)"),
45
+ vpcNo: z.string({
46
+ required_error: "필수 파라미터 'vpcNo'이 누락되었습니다.",
47
+ }).describe("VPC number"),
48
+ subnetNo: z.string({
49
+ required_error: "필수 파라미터 'subnetNo'이 누락되었습니다.",
50
+ }).describe("Subnet number"),
51
+ cloudPostgresqlDatabaseName: z.string({
52
+ required_error: "필수 파라미터 'cloudPostgresqlDatabaseName'이 누락되었습니다.",
53
+ }).describe("Initial database name"),
54
+ cloudPostgresqlUserName: z.string({
55
+ required_error: "필수 파라미터 'cloudPostgresqlUserName'이 누락되었습니다.",
56
+ }).describe("Initial user name"),
57
+ cloudPostgresqlUserPassword: z.string({
58
+ required_error: "필수 파라미터 'cloudPostgresqlUserPassword'이 누락되었습니다.",
59
+ }).describe("Initial user password"),
60
+ cloudPostgresqlServerNamePrefix: z.string({
61
+ required_error: "필수 파라미터 'cloudPostgresqlServerNamePrefix'이 누락되었습니다.",
62
+ }).describe("Server name prefix"),
63
+ clientCidr: z.string({
64
+ required_error: "필수 파라미터 'clientCidr'이 누락되었습니다.",
65
+ }).describe("Client CIDR for access control"),
66
+ cloudPostgresqlImageProductCode: z.string().optional().describe("PostgreSQL image product code"),
67
+ cloudPostgresqlProductCode: z.string().optional().describe("PostgreSQL server product (spec) code"),
68
+ isMultiZone: z.boolean().optional().describe("Whether to enable multi-zone high availability"),
69
+ secondarySubnetNo: z.string().optional().describe("Secondary subnet number (required when isMultiZone is true)"),
70
+ isHa: z.boolean().optional().describe("High availability setting (default: true)"),
71
+ dataStorageTypeCode: z.string().optional().describe("Data storage type code (SSD | HDD | CB2)"),
72
+ isStorageEncryption: z.boolean().optional().describe("Storage encryption (cannot be changed after creation)"),
73
+ isBackup: z.boolean().optional().describe("Whether to enable automatic backup"),
74
+ backupTime: z.string().optional().describe("Backup time (HH:mm format)"),
75
+ backupFileRetentionPeriod: z.number().optional().describe("Backup retention period in days (1-30)"),
76
+ backupFileStorageCount: z.number().optional().describe("Number of backup files to retain (1-30)"),
77
+ isBackupFileCompression: z.boolean().optional().describe("Whether to compress backup files"),
78
+ isAutomaticBackup: z.boolean().optional().describe("Whether to enable automatic backup scheduling"),
79
+ cloudPostgresqlPort: z.number().optional().describe("PostgreSQL port number (default: 5432)"),
80
+ engineVersionCode: z.string().optional().describe("PostgreSQL engine version code (required for Gen3/KVM)"),
81
+ dryRun: z.boolean().optional().default(false).describe("If true, returns a preview without actually creating the instance"),
82
+ }, async (params) => {
83
+ try {
84
+ if (params.dryRun) {
85
+ const preview = {
86
+ label: "🔍 Dry-Run Preview: PostgreSQL Instance Creation",
87
+ cloudPostgresqlServiceName: params.cloudPostgresqlServiceName,
88
+ vpcNo: params.vpcNo,
89
+ subnetNo: params.subnetNo,
90
+ cloudPostgresqlDatabaseName: params.cloudPostgresqlDatabaseName,
91
+ cloudPostgresqlUserName: params.cloudPostgresqlUserName,
92
+ isMultiZone: params.isMultiZone ?? false,
93
+ isBackup: params.isBackup ?? true,
94
+ cloudPostgresqlPort: params.cloudPostgresqlPort ?? 5432,
95
+ message: "이 요청은 실제 PostgreSQL 인스턴스를 생성하지 않습니다. dryRun=false로 호출하면 인스턴스가 생성됩니다.",
96
+ };
97
+ return { content: [{ type: "text", text: JSON.stringify(preview, null, 2) }] };
98
+ }
99
+ const { dryRun, ...apiParams } = params;
100
+ const result = await client.request("/vpostgresql/v2/createCloudPostgresqlInstance", apiParams);
101
+ const instance = result.cloudPostgresqlInstanceList?.[0];
102
+ const summary = {
103
+ 리소스타입: "PostgreSQL",
104
+ 리소스ID: instance?.cloudPostgresqlInstanceNo ?? "unknown",
105
+ 서비스명: params.cloudPostgresqlServiceName,
106
+ 상태: instance?.cloudPostgresqlInstanceStatus?.codeName ?? "creating",
107
+ 생성시각: instance?.createDate ?? new Date().toISOString(),
108
+ VPC: params.vpcNo,
109
+ 서브넷: params.subnetNo,
110
+ 데이터베이스명: params.cloudPostgresqlDatabaseName,
111
+ };
112
+ return { content: [{ type: "text", text: JSON.stringify(summary, null, 2) }] };
113
+ }
114
+ catch (error) {
115
+ return { content: [{ type: "text", text: error.message }], isError: true };
116
+ }
117
+ });
118
+ server.tool("ncloud_create_postgresql_read_replica", "Create a read replica for a Cloud DB for PostgreSQL instance", {
119
+ cloudPostgresqlInstanceNo: z.string().describe("Cloud PostgreSQL instance number to create read replica for"),
120
+ subnetNo: z.string().optional().describe("Subnet number for the read replica instance"),
121
+ cloudPostgresqlServerNamePrefix: z.string().optional().describe("Server name prefix for the read replica"),
122
+ }, async (params) => {
123
+ try {
124
+ const result = await client.request("/vpostgresql/v2/createCloudPostgresqlReadReplicaInstance", params);
125
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
126
+ }
127
+ catch (error) {
128
+ return { content: [{ type: "text", text: error.message }], isError: true };
129
+ }
130
+ });
131
+ // ─── Operation Tools ───────────────────────────────────────────────────────
132
+ server.tool("ncloud_reboot_postgresql_server", "Reboot a Cloud DB for PostgreSQL server instance", {
133
+ cloudPostgresqlServerInstanceNo: z.string().describe("Cloud PostgreSQL server instance number to reboot"),
134
+ }, async (params) => {
135
+ try {
136
+ const result = await client.request("/vpostgresql/v2/rebootCloudPostgresqlServerInstance", params);
137
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
138
+ }
139
+ catch (error) {
140
+ return { content: [{ type: "text", text: error.message }], isError: true };
141
+ }
142
+ });
143
+ // ─── Database Management Tools ──────────────────────────────────────────────
144
+ server.tool("ncloud_list_postgresql_databases", "List databases in a Cloud DB for PostgreSQL instance", {
145
+ cloudPostgresqlInstanceNo: z.string().describe("Cloud PostgreSQL instance number"),
146
+ }, async (params) => {
147
+ try {
148
+ const result = await client.request("/vpostgresql/v2/getCloudPostgresqlDatabaseList", params);
149
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
150
+ }
151
+ catch (error) {
152
+ return { content: [{ type: "text", text: error.message }], isError: true };
153
+ }
154
+ });
155
+ server.tool("ncloud_add_postgresql_databases", "Add databases to a Cloud DB for PostgreSQL instance", {
156
+ cloudPostgresqlInstanceNo: z.string().describe("Cloud PostgreSQL instance number"),
157
+ cloudPostgresqlDatabaseList: z.array(z.object({
158
+ name: z.string().describe("Database name to add"),
159
+ })).min(1).describe("List of databases to add"),
160
+ }, async (params) => {
161
+ try {
162
+ const { cloudPostgresqlInstanceNo, cloudPostgresqlDatabaseList } = params;
163
+ const requestParams = { cloudPostgresqlInstanceNo };
164
+ for (let i = 0; i < cloudPostgresqlDatabaseList.length; i++) {
165
+ const db = cloudPostgresqlDatabaseList[i];
166
+ requestParams[`cloudPostgresqlDatabaseList.${i + 1}.name`] = db.name;
167
+ }
168
+ const result = await client.request("/vpostgresql/v2/addCloudPostgresqlDatabaseList", requestParams);
169
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
170
+ }
171
+ catch (error) {
172
+ return { content: [{ type: "text", text: error.message }], isError: true };
173
+ }
174
+ });
175
+ // ─── User Management Tools ─────────────────────────────────────────────────
176
+ server.tool("ncloud_list_postgresql_users", "List users in a Cloud DB for PostgreSQL instance", {
177
+ cloudPostgresqlInstanceNo: z.string().describe("Cloud PostgreSQL instance number"),
178
+ }, async (params) => {
179
+ try {
180
+ const result = await client.request("/vpostgresql/v2/getCloudPostgresqlUserList", params);
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
+ server.tool("ncloud_add_postgresql_users", "Add users to a Cloud DB for PostgreSQL instance", {
188
+ cloudPostgresqlInstanceNo: z.string().describe("Cloud PostgreSQL instance number"),
189
+ cloudPostgresqlUserList: z.array(z.object({
190
+ name: z.string().describe("User name to add"),
191
+ password: z.string().describe("User password"),
192
+ })).min(1).describe("List of users to add"),
193
+ }, async (params) => {
194
+ try {
195
+ const { cloudPostgresqlInstanceNo, cloudPostgresqlUserList } = params;
196
+ const requestParams = { cloudPostgresqlInstanceNo };
197
+ for (let i = 0; i < cloudPostgresqlUserList.length; i++) {
198
+ const user = cloudPostgresqlUserList[i];
199
+ requestParams[`cloudPostgresqlUserList.${i + 1}.name`] = user.name;
200
+ requestParams[`cloudPostgresqlUserList.${i + 1}.password`] = user.password;
201
+ }
202
+ const result = await client.request("/vpostgresql/v2/addCloudPostgresqlUserList", requestParams);
203
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
204
+ }
205
+ catch (error) {
206
+ return { content: [{ type: "text", text: error.message }], isError: true };
207
+ }
208
+ });
209
+ server.tool("ncloud_change_postgresql_users", "Change user information (password) for a Cloud DB for PostgreSQL instance", {
210
+ cloudPostgresqlInstanceNo: z.string().describe("Cloud PostgreSQL instance number"),
211
+ cloudPostgresqlUserList: z.array(z.object({
212
+ name: z.string().describe("User name to modify"),
213
+ password: z.string().describe("New password for the user"),
214
+ })).min(1).describe("List of users to modify"),
215
+ }, async (params) => {
216
+ try {
217
+ const { cloudPostgresqlInstanceNo, cloudPostgresqlUserList } = params;
218
+ const requestParams = { cloudPostgresqlInstanceNo };
219
+ for (let i = 0; i < cloudPostgresqlUserList.length; i++) {
220
+ const user = cloudPostgresqlUserList[i];
221
+ requestParams[`cloudPostgresqlUserList.${i + 1}.name`] = user.name;
222
+ requestParams[`cloudPostgresqlUserList.${i + 1}.password`] = user.password;
223
+ }
224
+ const result = await client.request("/vpostgresql/v2/changeCloudPostgresqlUserList", requestParams);
225
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
226
+ }
227
+ catch (error) {
228
+ return { content: [{ type: "text", text: error.message }], isError: true };
229
+ }
230
+ });
231
+ // ─── Destructive Tools (with confirm gate) ─────────────────────────────────
232
+ server.tool("ncloud_delete_postgresql_instance", "⚠️ Destructive: Permanently delete a Cloud DB for PostgreSQL instance. Set confirm=true to execute.", {
233
+ cloudPostgresqlInstanceNo: z.string().describe("Cloud PostgreSQL instance number to delete"),
234
+ confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
235
+ }, async (params) => {
236
+ try {
237
+ if (!params.confirm) {
238
+ const message = `⚠️ This will permanently delete PostgreSQL instance [${params.cloudPostgresqlInstanceNo}]. Do you want to proceed? (yes/no)\n\nTo execute, call this tool again with confirm=true.`;
239
+ return { content: [{ type: "text", text: message }] };
240
+ }
241
+ const { confirm, ...apiParams } = params;
242
+ const result = await client.request("/vpostgresql/v2/deleteCloudPostgresqlInstance", apiParams);
243
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
244
+ }
245
+ catch (error) {
246
+ return { content: [{ type: "text", text: error.message }], isError: true };
247
+ }
248
+ });
249
+ server.tool("ncloud_delete_postgresql_databases", "⚠️ Destructive: Delete databases from a Cloud DB for PostgreSQL instance. Set confirm=true to execute.", {
250
+ cloudPostgresqlInstanceNo: z.string().describe("Cloud PostgreSQL instance number"),
251
+ cloudPostgresqlDatabaseList: z.array(z.object({
252
+ name: z.string().describe("Database name to delete"),
253
+ })).min(1).describe("List of databases to delete"),
254
+ confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
255
+ }, async (params) => {
256
+ try {
257
+ if (!params.confirm) {
258
+ const names = params.cloudPostgresqlDatabaseList.map(db => db.name).join(", ");
259
+ const message = `⚠️ This will permanently delete databases [${names}] from PostgreSQL instance [${params.cloudPostgresqlInstanceNo}]. Do you want to proceed? (yes/no)\n\nTo execute, call this tool again with confirm=true.`;
260
+ return { content: [{ type: "text", text: message }] };
261
+ }
262
+ const { confirm, cloudPostgresqlInstanceNo, cloudPostgresqlDatabaseList } = params;
263
+ const requestParams = { cloudPostgresqlInstanceNo };
264
+ for (let i = 0; i < cloudPostgresqlDatabaseList.length; i++) {
265
+ const db = cloudPostgresqlDatabaseList[i];
266
+ requestParams[`cloudPostgresqlDatabaseList.${i + 1}.name`] = db.name;
267
+ }
268
+ const result = await client.request("/vpostgresql/v2/deleteCloudPostgresqlDatabaseList", requestParams);
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_postgresql_users", "⚠️ Destructive: Delete users from a Cloud DB for PostgreSQL instance. Set confirm=true to execute.", {
276
+ cloudPostgresqlInstanceNo: z.string().describe("Cloud PostgreSQL instance number"),
277
+ cloudPostgresqlUserList: z.array(z.object({
278
+ name: z.string().describe("User name to delete"),
279
+ })).min(1).describe("List of users to delete"),
280
+ confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
281
+ }, async (params) => {
282
+ try {
283
+ if (!params.confirm) {
284
+ const names = params.cloudPostgresqlUserList.map(u => u.name).join(", ");
285
+ const message = `⚠️ This will permanently delete users [${names}] from PostgreSQL instance [${params.cloudPostgresqlInstanceNo}]. Do you want to proceed? (yes/no)\n\nTo execute, call this tool again with confirm=true.`;
286
+ return { content: [{ type: "text", text: message }] };
287
+ }
288
+ const { confirm, cloudPostgresqlInstanceNo, cloudPostgresqlUserList } = params;
289
+ const requestParams = { cloudPostgresqlInstanceNo };
290
+ for (let i = 0; i < cloudPostgresqlUserList.length; i++) {
291
+ const user = cloudPostgresqlUserList[i];
292
+ requestParams[`cloudPostgresqlUserList.${i + 1}.name`] = user.name;
293
+ }
294
+ const result = await client.request("/vpostgresql/v2/deleteCloudPostgresqlUserList", requestParams);
295
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
296
+ }
297
+ catch (error) {
298
+ return { content: [{ type: "text", text: error.message }], isError: true };
299
+ }
300
+ });
301
+ server.tool("ncloud_delete_postgresql_read_replica", "⚠️ Destructive: Delete a Cloud DB for PostgreSQL Read Replica instance. Set confirm=true to execute.", {
302
+ cloudPostgresqlReadReplicaInstanceNo: z.string().describe("Cloud PostgreSQL Read Replica instance number to delete"),
303
+ confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
304
+ }, async (params) => {
305
+ try {
306
+ if (!params.confirm) {
307
+ const message = `⚠️ This will permanently delete PostgreSQL Read Replica instance [${params.cloudPostgresqlReadReplicaInstanceNo}]. Do you want to proceed? (yes/no)\n\nTo execute, call this tool again with confirm=true.`;
308
+ return { content: [{ type: "text", text: message }] };
309
+ }
310
+ const { confirm, ...apiParams } = params;
311
+ const result = await client.request("/vpostgresql/v2/deleteCloudPostgresqlReadReplicaInstance", apiParams);
312
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
313
+ }
314
+ catch (error) {
315
+ return { content: [{ type: "text", text: error.message }], isError: true };
316
+ }
317
+ });
318
+ // ─── Reference/Query Tools (P3) ────────────────────────────────────────────
319
+ server.tool("ncloud_get_postgresql_image_products", "List available Cloud DB for PostgreSQL image product codes (engine versions)", {
320
+ regionCode: z.string().optional().describe("Region code (e.g. KR, SGN, JPN). Defaults to current region."),
321
+ }, async (params) => {
322
+ try {
323
+ const result = await client.request("/vpostgresql/v2/getCloudPostgresqlImageProductList", params);
324
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
325
+ }
326
+ catch (error) {
327
+ return { content: [{ type: "text", text: error.message }], isError: true };
328
+ }
329
+ });
330
+ server.tool("ncloud_get_postgresql_products", "List available Cloud DB for PostgreSQL server spec product codes for a given image product code", {
331
+ cloudPostgresqlImageProductCode: z.string().describe("PostgreSQL image product code (from ncloud_get_postgresql_image_products)"),
332
+ regionCode: z.string().optional().describe("Region code (e.g. KR, SGN, JPN). Defaults to current region."),
333
+ }, async (params) => {
334
+ try {
335
+ const result = await client.request("/vpostgresql/v2/getCloudPostgresqlProductList", params);
336
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
337
+ }
338
+ catch (error) {
339
+ return { content: [{ type: "text", text: error.message }], isError: true };
340
+ }
341
+ });
342
+ server.tool("ncloud_get_postgresql_target_vpcs", "List VPCs available for Cloud DB for PostgreSQL instance creation", {
343
+ regionCode: z.string().optional().describe("Region code (e.g. KR, SGN, JPN). Defaults to current region."),
344
+ }, async (params) => {
345
+ try {
346
+ const result = await client.request("/vpostgresql/v2/getCloudPostgresqlTargetVpcList", params);
347
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
348
+ }
349
+ catch (error) {
350
+ return { content: [{ type: "text", text: error.message }], isError: true };
351
+ }
352
+ });
353
+ server.tool("ncloud_get_postgresql_target_subnets", "List subnets available for Cloud DB for PostgreSQL instance creation within a specific PostgreSQL instance", {
354
+ cloudPostgresqlInstanceNo: z.string().describe("Cloud PostgreSQL instance number"),
355
+ regionCode: z.string().optional().describe("Region code (e.g. KR, SGN, JPN). Defaults to current region."),
356
+ }, async (params) => {
357
+ try {
358
+ const result = await client.request("/vpostgresql/v2/getCloudPostgresqlTargetSubnetList", params);
359
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
360
+ }
361
+ catch (error) {
362
+ return { content: [{ type: "text", text: error.message }], isError: true };
363
+ }
364
+ });
365
+ server.tool("ncloud_list_postgresql_backup_details", "List detailed backup information (including file names) for a Cloud DB for PostgreSQL instance", {
366
+ cloudPostgresqlInstanceNo: z.string().describe("Cloud PostgreSQL instance number"),
367
+ regionCode: z.string().optional().describe("Region code (e.g. KR, SGN, JPN). Defaults to current region."),
368
+ }, async (params) => {
369
+ try {
370
+ const result = await client.request("/vpostgresql/v2/getCloudPostgresqlBackupDetailList", params);
371
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
372
+ }
373
+ catch (error) {
374
+ return { content: [{ type: "text", text: error.message }], isError: true };
375
+ }
376
+ });
377
+ server.tool("ncloud_list_postgresql_buckets", "List Object Storage buckets available for Cloud DB for PostgreSQL (for backup export)", {
378
+ regionCode: z.string().optional().describe("Region code (e.g. KR, SGN, JPN). Defaults to current region."),
379
+ }, async (params) => {
380
+ try {
381
+ const result = await client.request("/vpostgresql/v2/getCloudPostgresqlBucketList", 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_list_postgresql_logs", "List DB server log files for a Cloud DB for PostgreSQL server instance", {
389
+ cloudPostgresqlServerInstanceNo: z.string().describe("Cloud PostgreSQL server instance number"),
390
+ regionCode: z.string().optional().describe("Region code (e.g. KR, SGN, JPN). Defaults to current region."),
391
+ }, async (params) => {
392
+ try {
393
+ const result = await client.request("/vpostgresql/v2/getDbServerLogList", params);
394
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
395
+ }
396
+ catch (error) {
397
+ return { content: [{ type: "text", text: error.message }], isError: true };
398
+ }
399
+ });
400
+ server.tool("ncloud_export_postgresql_backup", "Export a Cloud DB for PostgreSQL backup file to Object Storage. Use ncloud_list_postgresql_backup_details to get available file names.", {
401
+ cloudPostgresqlInstanceNo: z.string().describe("Cloud PostgreSQL instance number"),
402
+ fileName: z.string().describe("Backup file name to export (from ncloud_list_postgresql_backup_details)"),
403
+ bucketName: z.string().describe("Object Storage bucket name to export to"),
404
+ folderPath: z.string().optional().describe("Folder path within the bucket (e.g. 'postgresql-backups/daily'). If omitted, exports to bucket root."),
405
+ regionCode: z.string().optional().describe("Region code (default: current region)"),
406
+ }, async (params) => {
407
+ try {
408
+ const result = await client.request("/vpostgresql/v2/exportBackupToObjectStorage", params);
409
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
410
+ }
411
+ catch (error) {
412
+ return { content: [{ type: "text", text: error.message }], isError: true };
413
+ }
414
+ });
415
+ server.tool("ncloud_export_postgresql_log", "Export a Cloud DB for PostgreSQL server log file to Object Storage. Use ncloud_list_postgresql_logs to get available log files.", {
416
+ cloudPostgresqlServerInstanceNo: z.string().describe("Cloud PostgreSQL server instance number"),
417
+ logType: z.string().describe("Log type to export (e.g. ERROR, SLOW, etc.)"),
418
+ fileName: z.string().describe("Log file name to export (from ncloud_list_postgresql_logs)"),
419
+ bucketName: z.string().describe("Object Storage bucket name to export to"),
420
+ folderPath: z.string().optional().describe("Folder path within the bucket (e.g. 'postgresql-logs/error'). If omitted, exports to bucket root."),
421
+ regionCode: z.string().optional().describe("Region code (default: current region)"),
422
+ }, async (params) => {
423
+ try {
424
+ const result = await client.request("/vpostgresql/v2/exportDbServerLogToObjectStorage", params);
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
+ }
432
+ //# sourceMappingURL=database-postgresql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"database-postgresql.js","sourceRoot":"","sources":["../../src/tools/database-postgresql.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 registerGlobalDnsTools(server: McpServer, client: NcloudClient): void;