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.
- package/LICENSE +21 -0
- package/README.md +159 -0
- package/README_EN.md +159 -0
- package/dist/auth/signature.d.ts +16 -0
- package/dist/auth/signature.js +18 -0
- package/dist/auth/signature.js.map +1 -0
- package/dist/auth/signature.test.d.ts +1 -0
- package/dist/auth/signature.test.js +90 -0
- package/dist/auth/signature.test.js.map +1 -0
- package/dist/client/ncloud-client.d.ts +27 -0
- package/dist/client/ncloud-client.js +270 -0
- package/dist/client/ncloud-client.js.map +1 -0
- package/dist/client/ncloud-client.test.d.ts +1 -0
- package/dist/client/ncloud-client.test.js +477 -0
- package/dist/client/ncloud-client.test.js.map +1 -0
- package/dist/client/s3-compatible-client.d.ts +49 -0
- package/dist/client/s3-compatible-client.js +210 -0
- package/dist/client/s3-compatible-client.js.map +1 -0
- package/dist/client/swift-compatible-client.d.ts +68 -0
- package/dist/client/swift-compatible-client.js +173 -0
- package/dist/client/swift-compatible-client.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +362 -0
- package/dist/index.js.map +1 -0
- package/dist/tools/acg.d.ts +3 -0
- package/dist/tools/acg.js +220 -0
- package/dist/tools/acg.js.map +1 -0
- package/dist/tools/activity-tracer.d.ts +3 -0
- package/dist/tools/activity-tracer.js +77 -0
- package/dist/tools/activity-tracer.js.map +1 -0
- package/dist/tools/analytics-cdss.d.ts +3 -0
- package/dist/tools/analytics-cdss.js +618 -0
- package/dist/tools/analytics-cdss.js.map +1 -0
- package/dist/tools/analytics-datacatalog.d.ts +10 -0
- package/dist/tools/analytics-datacatalog.js +409 -0
- package/dist/tools/analytics-datacatalog.js.map +1 -0
- package/dist/tools/analytics-dataflow.d.ts +16 -0
- package/dist/tools/analytics-dataflow.js +478 -0
- package/dist/tools/analytics-dataflow.js.map +1 -0
- package/dist/tools/analytics-dataforest.d.ts +10 -0
- package/dist/tools/analytics-dataforest.js +379 -0
- package/dist/tools/analytics-dataforest.js.map +1 -0
- package/dist/tools/analytics-dataquery.d.ts +16 -0
- package/dist/tools/analytics-dataquery.js +143 -0
- package/dist/tools/analytics-dataquery.js.map +1 -0
- package/dist/tools/analytics-datastream.d.ts +13 -0
- package/dist/tools/analytics-datastream.js +359 -0
- package/dist/tools/analytics-datastream.js.map +1 -0
- package/dist/tools/analytics-hadoop.d.ts +12 -0
- package/dist/tools/analytics-hadoop.js +450 -0
- package/dist/tools/analytics-hadoop.js.map +1 -0
- package/dist/tools/analytics-ses.d.ts +3 -0
- package/dist/tools/analytics-ses.js +653 -0
- package/dist/tools/analytics-ses.js.map +1 -0
- package/dist/tools/api-gateway.d.ts +3 -0
- package/dist/tools/api-gateway.js +202 -0
- package/dist/tools/api-gateway.js.map +1 -0
- package/dist/tools/autoscaling.d.ts +3 -0
- package/dist/tools/autoscaling.js +430 -0
- package/dist/tools/autoscaling.js.map +1 -0
- package/dist/tools/billing.d.ts +14 -0
- package/dist/tools/billing.js +545 -0
- package/dist/tools/billing.js.map +1 -0
- package/dist/tools/certificate-manager.d.ts +18 -0
- package/dist/tools/certificate-manager.js +84 -0
- package/dist/tools/certificate-manager.js.map +1 -0
- package/dist/tools/cloud-advisor.d.ts +3 -0
- package/dist/tools/cloud-advisor.js +202 -0
- package/dist/tools/cloud-advisor.js.map +1 -0
- package/dist/tools/cloud-functions.d.ts +3 -0
- package/dist/tools/cloud-functions.js +497 -0
- package/dist/tools/cloud-functions.js.map +1 -0
- package/dist/tools/cloud-insight-integration.d.ts +3 -0
- package/dist/tools/cloud-insight-integration.js +90 -0
- package/dist/tools/cloud-insight-integration.js.map +1 -0
- package/dist/tools/cloud-insight-plugin.d.ts +3 -0
- package/dist/tools/cloud-insight-plugin.js +600 -0
- package/dist/tools/cloud-insight-plugin.js.map +1 -0
- package/dist/tools/cloud-insight-rule.d.ts +3 -0
- package/dist/tools/cloud-insight-rule.js +570 -0
- package/dist/tools/cloud-insight-rule.js.map +1 -0
- package/dist/tools/cloud-insight.d.ts +3 -0
- package/dist/tools/cloud-insight.js +246 -0
- package/dist/tools/cloud-insight.js.map +1 -0
- package/dist/tools/common.d.ts +3 -0
- package/dist/tools/common.js +120 -0
- package/dist/tools/common.js.map +1 -0
- package/dist/tools/compute-initscript.d.ts +3 -0
- package/dist/tools/compute-initscript.js +62 -0
- package/dist/tools/compute-initscript.js.map +1 -0
- package/dist/tools/compute-loginkey.d.ts +3 -0
- package/dist/tools/compute-loginkey.js +59 -0
- package/dist/tools/compute-loginkey.js.map +1 -0
- package/dist/tools/compute-placement.d.ts +3 -0
- package/dist/tools/compute-placement.js +196 -0
- package/dist/tools/compute-placement.js.map +1 -0
- package/dist/tools/compute-publicip.d.ts +3 -0
- package/dist/tools/compute-publicip.js +97 -0
- package/dist/tools/compute-publicip.js.map +1 -0
- package/dist/tools/compute-server.d.ts +3 -0
- package/dist/tools/compute-server.js +445 -0
- package/dist/tools/compute-server.js.map +1 -0
- package/dist/tools/compute-server.test.d.ts +1 -0
- package/dist/tools/compute-server.test.js +224 -0
- package/dist/tools/compute-server.test.js.map +1 -0
- package/dist/tools/compute-storage.d.ts +3 -0
- package/dist/tools/compute-storage.js +240 -0
- package/dist/tools/compute-storage.js.map +1 -0
- package/dist/tools/containers-nks.d.ts +13 -0
- package/dist/tools/containers-nks.js +576 -0
- package/dist/tools/containers-nks.js.map +1 -0
- package/dist/tools/containers-registry.d.ts +3 -0
- package/dist/tools/containers-registry.js +181 -0
- package/dist/tools/containers-registry.js.map +1 -0
- package/dist/tools/database-cache.d.ts +3 -0
- package/dist/tools/database-cache.js +388 -0
- package/dist/tools/database-cache.js.map +1 -0
- package/dist/tools/database-mongodb.d.ts +3 -0
- package/dist/tools/database-mongodb.js +460 -0
- package/dist/tools/database-mongodb.js.map +1 -0
- package/dist/tools/database-mssql.d.ts +3 -0
- package/dist/tools/database-mssql.js +345 -0
- package/dist/tools/database-mssql.js.map +1 -0
- package/dist/tools/database-mysql.d.ts +3 -0
- package/dist/tools/database-mysql.js +500 -0
- package/dist/tools/database-mysql.js.map +1 -0
- package/dist/tools/database-postgresql.d.ts +3 -0
- package/dist/tools/database-postgresql.js +432 -0
- package/dist/tools/database-postgresql.js.map +1 -0
- package/dist/tools/global-dns.d.ts +3 -0
- package/dist/tools/global-dns.js +207 -0
- package/dist/tools/global-dns.js.map +1 -0
- package/dist/tools/global-edge.d.ts +3 -0
- package/dist/tools/global-edge.js +386 -0
- package/dist/tools/global-edge.js.map +1 -0
- package/dist/tools/global-traffic-manager.d.ts +3 -0
- package/dist/tools/global-traffic-manager.js +497 -0
- package/dist/tools/global-traffic-manager.js.map +1 -0
- package/dist/tools/index.d.ts +63 -0
- package/dist/tools/index.js +64 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/kms.d.ts +8 -0
- package/dist/tools/kms.js +529 -0
- package/dist/tools/kms.js.map +1 -0
- package/dist/tools/loadbalancer.d.ts +3 -0
- package/dist/tools/loadbalancer.js +341 -0
- package/dist/tools/loadbalancer.js.map +1 -0
- package/dist/tools/log-analytics.d.ts +3 -0
- package/dist/tools/log-analytics.js +183 -0
- package/dist/tools/log-analytics.js.map +1 -0
- package/dist/tools/media-imageoptimizer.d.ts +3 -0
- package/dist/tools/media-imageoptimizer.js +187 -0
- package/dist/tools/media-imageoptimizer.js.map +1 -0
- package/dist/tools/media-livestation.d.ts +3 -0
- package/dist/tools/media-livestation.js +252 -0
- package/dist/tools/media-livestation.js.map +1 -0
- package/dist/tools/media-vodstation.d.ts +3 -0
- package/dist/tools/media-vodstation.js +197 -0
- package/dist/tools/media-vodstation.js.map +1 -0
- package/dist/tools/nat-gateway.d.ts +3 -0
- package/dist/tools/nat-gateway.js +91 -0
- package/dist/tools/nat-gateway.js.map +1 -0
- package/dist/tools/network-acl.d.ts +3 -0
- package/dist/tools/network-acl.js +322 -0
- package/dist/tools/network-acl.js.map +1 -0
- package/dist/tools/network-interface.d.ts +3 -0
- package/dist/tools/network-interface.js +193 -0
- package/dist/tools/network-interface.js.map +1 -0
- package/dist/tools/private-ca.d.ts +8 -0
- package/dist/tools/private-ca.js +368 -0
- package/dist/tools/private-ca.js.map +1 -0
- package/dist/tools/resource-manager.d.ts +3 -0
- package/dist/tools/resource-manager.js +151 -0
- package/dist/tools/resource-manager.js.map +1 -0
- package/dist/tools/route-table.d.ts +3 -0
- package/dist/tools/route-table.js +205 -0
- package/dist/tools/route-table.js.map +1 -0
- package/dist/tools/security-monitoring.d.ts +3 -0
- package/dist/tools/security-monitoring.js +182 -0
- package/dist/tools/security-monitoring.js.map +1 -0
- package/dist/tools/sens.d.ts +3 -0
- package/dist/tools/sens.js +240 -0
- package/dist/tools/sens.js.map +1 -0
- package/dist/tools/sourcebuild.d.ts +3 -0
- package/dist/tools/sourcebuild.js +481 -0
- package/dist/tools/sourcebuild.js.map +1 -0
- package/dist/tools/sourcecommit.d.ts +13 -0
- package/dist/tools/sourcecommit.js +228 -0
- package/dist/tools/sourcecommit.js.map +1 -0
- package/dist/tools/sourcedeploy.d.ts +3 -0
- package/dist/tools/sourcedeploy.js +448 -0
- package/dist/tools/sourcedeploy.js.map +1 -0
- package/dist/tools/sourcepipeline.d.ts +12 -0
- package/dist/tools/sourcepipeline.js +357 -0
- package/dist/tools/sourcepipeline.js.map +1 -0
- package/dist/tools/storage-archive.d.ts +3 -0
- package/dist/tools/storage-archive.js +337 -0
- package/dist/tools/storage-archive.js.map +1 -0
- package/dist/tools/storage-nas.d.ts +3 -0
- package/dist/tools/storage-nas.js +288 -0
- package/dist/tools/storage-nas.js.map +1 -0
- package/dist/tools/storage-ncloud.d.ts +3 -0
- package/dist/tools/storage-ncloud.js +864 -0
- package/dist/tools/storage-ncloud.js.map +1 -0
- package/dist/tools/storage-object.d.ts +3 -0
- package/dist/tools/storage-object.js +982 -0
- package/dist/tools/storage-object.js.map +1 -0
- package/dist/tools/sub-account.d.ts +3 -0
- package/dist/tools/sub-account.js +311 -0
- package/dist/tools/sub-account.js.map +1 -0
- package/dist/tools/target-group.d.ts +3 -0
- package/dist/tools/target-group.js +207 -0
- package/dist/tools/target-group.js.map +1 -0
- package/dist/tools/vpc-peering.d.ts +3 -0
- package/dist/tools/vpc-peering.js +109 -0
- package/dist/tools/vpc-peering.js.map +1 -0
- package/dist/tools/vpc.d.ts +3 -0
- package/dist/tools/vpc.js +194 -0
- package/dist/tools/vpc.js.map +1 -0
- package/package.json +53 -0
|
@@ -0,0 +1,345 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
export function registerDatabaseMssqlTools(server, client) {
|
|
3
|
+
// ─── Query Tools ───────────────────────────────────────────────────────────
|
|
4
|
+
server.tool("ncloud_list_mssql_instances", "List all Cloud DB for MSSQL instances in the current region", {
|
|
5
|
+
cloudMssqlInstanceNoList: z.array(z.string()).optional().describe("Filter by MSSQL instance numbers"),
|
|
6
|
+
cloudMssqlServiceName: z.string().optional().describe("Filter by MSSQL 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("/vmssql/v2/getCloudMssqlInstanceList", 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_mssql_instance_detail", "Get detailed information about a specific Cloud DB for MSSQL instance", {
|
|
19
|
+
cloudMssqlInstanceNo: z.string().describe("Cloud MSSQL instance number to query"),
|
|
20
|
+
}, async (params) => {
|
|
21
|
+
try {
|
|
22
|
+
const result = await client.request("/vmssql/v2/getCloudMssqlInstanceDetail", 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_mssql_backups", "List backups for a Cloud DB for MSSQL instance", {
|
|
30
|
+
cloudMssqlInstanceNo: z.string().describe("Cloud MSSQL instance number"),
|
|
31
|
+
}, async (params) => {
|
|
32
|
+
try {
|
|
33
|
+
const result = await client.request("/vmssql/v2/getCloudMssqlBackupList", 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_mssql_backup_details", "List detailed backup information for a Cloud DB for MSSQL instance including file paths", {
|
|
41
|
+
cloudMssqlInstanceNo: z.string().describe("Cloud MSSQL instance number"),
|
|
42
|
+
cloudMssqlServerInstanceNo: z.string().describe("Cloud MSSQL server instance number"),
|
|
43
|
+
}, async (params) => {
|
|
44
|
+
try {
|
|
45
|
+
const result = await client.request("/vmssql/v2/getCloudMssqlBackupDetailList", params);
|
|
46
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
server.tool("ncloud_list_mssql_log_backup_files", "List log backup files for a Cloud DB for MSSQL instance", {
|
|
53
|
+
cloudMssqlInstanceNo: z.string().describe("Cloud MSSQL instance number"),
|
|
54
|
+
cloudMssqlServerInstanceNo: z.string().describe("Cloud MSSQL server instance number"),
|
|
55
|
+
}, async (params) => {
|
|
56
|
+
try {
|
|
57
|
+
const result = await client.request("/vmssql/v2/getCloudMssqlLogBackupFileList", params);
|
|
58
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
59
|
+
}
|
|
60
|
+
catch (error) {
|
|
61
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
62
|
+
}
|
|
63
|
+
});
|
|
64
|
+
server.tool("ncloud_list_mssql_log_files", "List log files for a Cloud DB for MSSQL server instance", {
|
|
65
|
+
cloudMssqlServerInstanceNo: z.string().describe("Cloud MSSQL server instance number"),
|
|
66
|
+
}, async (params) => {
|
|
67
|
+
try {
|
|
68
|
+
const result = await client.request("/vmssql/v2/getCloudMssqlLogFileList", params);
|
|
69
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
73
|
+
}
|
|
74
|
+
});
|
|
75
|
+
server.tool("ncloud_get_mssql_image_products", "List available Cloud DB for MSSQL image product codes (engine versions)", {
|
|
76
|
+
regionCode: z.string().optional().describe("Region code (e.g. KR, SGN, JPN). Defaults to current region."),
|
|
77
|
+
}, async (params) => {
|
|
78
|
+
try {
|
|
79
|
+
const result = await client.request("/vmssql/v2/getCloudMssqlImageProductList", params);
|
|
80
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
84
|
+
}
|
|
85
|
+
});
|
|
86
|
+
server.tool("ncloud_get_mssql_products", "List available Cloud DB for MSSQL server spec product codes", {
|
|
87
|
+
cloudMssqlImageProductCode: z.string().describe("MSSQL image product code (from ncloud_get_mssql_image_products)"),
|
|
88
|
+
}, async (params) => {
|
|
89
|
+
try {
|
|
90
|
+
const result = await client.request("/vmssql/v2/getCloudMssqlProductList", params);
|
|
91
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
92
|
+
}
|
|
93
|
+
catch (error) {
|
|
94
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
server.tool("ncloud_get_mssql_target_vpcs", "List VPCs available for Cloud DB for MSSQL", {
|
|
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("/vmssql/v2/getCloudMssqlTargetVpcList", 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_get_mssql_target_subnets", "List subnets available for Cloud DB for MSSQL within a specific instance", {
|
|
109
|
+
cloudMssqlInstanceNo: z.string().describe("Cloud MSSQL 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("/vmssql/v2/getCloudMssqlTargetSubnetList", 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_list_mssql_character_sets", "List available character sets for Cloud DB for MSSQL", {
|
|
121
|
+
regionCode: z.string().optional().describe("Region code (e.g. KR, SGN, JPN). Defaults to current region."),
|
|
122
|
+
}, async (params) => {
|
|
123
|
+
try {
|
|
124
|
+
const result = await client.request("/vmssql/v2/getCloudMssqlCharacterSetList", 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
|
+
server.tool("ncloud_list_mssql_config_groups", "List available Config Groups for Cloud DB for MSSQL", {
|
|
132
|
+
regionCode: z.string().optional().describe("Region code (e.g. KR, SGN, JPN). Defaults to current region."),
|
|
133
|
+
}, async (params) => {
|
|
134
|
+
try {
|
|
135
|
+
const result = await client.request("/vmssql/v2/getCloudMssqlConfigGroupList", params);
|
|
136
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
137
|
+
}
|
|
138
|
+
catch (error) {
|
|
139
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
140
|
+
}
|
|
141
|
+
});
|
|
142
|
+
server.tool("ncloud_list_mssql_buckets", "List Object Storage buckets available for Cloud DB for MSSQL backup export", {
|
|
143
|
+
regionCode: z.string().optional().describe("Region code (e.g. KR, SGN, JPN). Defaults to current region."),
|
|
144
|
+
}, async (params) => {
|
|
145
|
+
try {
|
|
146
|
+
const result = await client.request("/vmssql/v2/getCloudMssqlBucketList", params);
|
|
147
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
148
|
+
}
|
|
149
|
+
catch (error) {
|
|
150
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
151
|
+
}
|
|
152
|
+
});
|
|
153
|
+
server.tool("ncloud_list_mssql_folders", "List folders within an Object Storage bucket for Cloud DB for MSSQL", {
|
|
154
|
+
bucketName: z.string().describe("Object Storage bucket name"),
|
|
155
|
+
}, async (params) => {
|
|
156
|
+
try {
|
|
157
|
+
const result = await client.request("/vmssql/v2/getCloudMssqlFolderList", params);
|
|
158
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
159
|
+
}
|
|
160
|
+
catch (error) {
|
|
161
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
162
|
+
}
|
|
163
|
+
});
|
|
164
|
+
// ─── Create Tools ──────────────────────────────────────────────────────────
|
|
165
|
+
server.tool("ncloud_create_mssql_instance", "Create a new Cloud DB for MSSQL instance. Use dryRun=true to preview without creating.", {
|
|
166
|
+
cloudMssqlServiceName: z.string({
|
|
167
|
+
required_error: "필수 파라미터 'cloudMssqlServiceName'이 누락되었습니다.",
|
|
168
|
+
}).describe("MSSQL service name (3-20 chars, lowercase letters and numbers)"),
|
|
169
|
+
vpcNo: z.string({
|
|
170
|
+
required_error: "필수 파라미터 'vpcNo'이 누락되었습니다.",
|
|
171
|
+
}).describe("VPC number"),
|
|
172
|
+
subnetNo: z.string({
|
|
173
|
+
required_error: "필수 파라미터 'subnetNo'이 누락되었습니다.",
|
|
174
|
+
}).describe("Subnet number"),
|
|
175
|
+
cloudMssqlUserName: z.string({
|
|
176
|
+
required_error: "필수 파라미터 'cloudMssqlUserName'이 누락되었습니다.",
|
|
177
|
+
}).describe("Initial admin user name"),
|
|
178
|
+
cloudMssqlUserPassword: z.string({
|
|
179
|
+
required_error: "필수 파라미터 'cloudMssqlUserPassword'이 누락되었습니다.",
|
|
180
|
+
}).describe("Initial admin user password"),
|
|
181
|
+
isHa: z.boolean({
|
|
182
|
+
required_error: "필수 파라미터 'isHa'이 누락되었습니다.",
|
|
183
|
+
}).describe("High availability mode (true creates Mirror server, 2 servers total)"),
|
|
184
|
+
cloudMssqlImageProductCode: z.string().optional().describe("MSSQL image product code"),
|
|
185
|
+
cloudMssqlProductCode: z.string().optional().describe("MSSQL server product (spec) code"),
|
|
186
|
+
mirrorSubnetNo: z.string().optional().describe("Mirror server subnet number. Required when isMultiZone=true."),
|
|
187
|
+
dataStorageTypeCode: z.string().optional().describe("Data storage type: SSD | HDD | CB2"),
|
|
188
|
+
isMultiZone: z.boolean().optional().describe("Multi Zone mode (only when isHa=true)"),
|
|
189
|
+
characterSetName: z.string().optional().describe("DB character set (Korean_Wansung_CI_AS | SQL_Latin1_General_CP1_CI_AS)"),
|
|
190
|
+
engineVersionCode: z.string().optional().describe("DB engine version code"),
|
|
191
|
+
configGroupNo: z.string().optional().describe("Config Group number"),
|
|
192
|
+
cloudMssqlPort: z.number().optional().describe("MSSQL port number (default: 1433, range: 10000-20000)"),
|
|
193
|
+
isBackup: z.boolean().optional().describe("Whether to enable automatic backup"),
|
|
194
|
+
backupTime: z.string().optional().describe("Backup time (HH:mm format)"),
|
|
195
|
+
backupFileRetentionPeriod: z.number().optional().describe("Backup retention period in days (1-30)"),
|
|
196
|
+
isAutomaticBackup: z.boolean().optional().describe("Whether to enable automatic backup scheduling"),
|
|
197
|
+
dryRun: z.boolean().optional().default(false).describe("If true, returns a preview without actually creating the instance"),
|
|
198
|
+
}, async (params) => {
|
|
199
|
+
try {
|
|
200
|
+
if (params.dryRun) {
|
|
201
|
+
const preview = {
|
|
202
|
+
label: "🔍 Dry-Run Preview: MSSQL Instance Creation",
|
|
203
|
+
cloudMssqlServiceName: params.cloudMssqlServiceName,
|
|
204
|
+
vpcNo: params.vpcNo,
|
|
205
|
+
subnetNo: params.subnetNo,
|
|
206
|
+
cloudMssqlUserName: params.cloudMssqlUserName,
|
|
207
|
+
isHa: params.isHa,
|
|
208
|
+
isMultiZone: params.isMultiZone ?? false,
|
|
209
|
+
characterSetName: params.characterSetName ?? "Korean_Wansung_CI_AS",
|
|
210
|
+
cloudMssqlPort: params.cloudMssqlPort ?? 1433,
|
|
211
|
+
isBackup: params.isBackup ?? true,
|
|
212
|
+
message: "이 요청은 실제 MSSQL 인스턴스를 생성하지 않습니다. dryRun=false로 호출하면 인스턴스가 생성됩니다.",
|
|
213
|
+
};
|
|
214
|
+
return { content: [{ type: "text", text: JSON.stringify(preview, null, 2) }] };
|
|
215
|
+
}
|
|
216
|
+
const { dryRun, ...apiParams } = params;
|
|
217
|
+
const result = await client.request("/vmssql/v2/createCloudMssqlInstance", apiParams);
|
|
218
|
+
const instance = result.cloudMssqlInstanceList?.[0];
|
|
219
|
+
const summary = {
|
|
220
|
+
리소스타입: "MSSQL",
|
|
221
|
+
리소스ID: instance?.cloudMssqlInstanceNo ?? "unknown",
|
|
222
|
+
서비스명: params.cloudMssqlServiceName,
|
|
223
|
+
상태: instance?.cloudMssqlInstanceStatus?.codeName ?? "creating",
|
|
224
|
+
생성시각: instance?.createDate ?? new Date().toISOString(),
|
|
225
|
+
VPC: params.vpcNo,
|
|
226
|
+
서브넷: params.subnetNo,
|
|
227
|
+
고가용성: params.isHa,
|
|
228
|
+
};
|
|
229
|
+
return { content: [{ type: "text", text: JSON.stringify(summary, null, 2) }] };
|
|
230
|
+
}
|
|
231
|
+
catch (error) {
|
|
232
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
server.tool("ncloud_create_mssql_slave", "Create a slave server instance for a Cloud DB for MSSQL instance", {
|
|
236
|
+
cloudMssqlInstanceNo: z.string().describe("Cloud MSSQL instance number to create slave for"),
|
|
237
|
+
privateDomainPostfix: z.string().describe("Private domain postfix (001-999)"),
|
|
238
|
+
subnetNo: z.string().optional().describe("Subnet number for the slave instance. Required when Multi Zone is enabled."),
|
|
239
|
+
}, async (params) => {
|
|
240
|
+
try {
|
|
241
|
+
const result = await client.request("/vmssql/v2/createCloudMssqlSlaveInstance", params);
|
|
242
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
243
|
+
}
|
|
244
|
+
catch (error) {
|
|
245
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
// ─── Operation Tools ───────────────────────────────────────────────────────
|
|
249
|
+
server.tool("ncloud_reboot_mssql_server", "Reboot a Cloud DB for MSSQL server instance", {
|
|
250
|
+
cloudMssqlServerInstanceNo: z.string().describe("Cloud MSSQL server instance number to reboot"),
|
|
251
|
+
}, async (params) => {
|
|
252
|
+
try {
|
|
253
|
+
const result = await client.request("/vmssql/v2/rebootCloudMssqlServerInstance", params);
|
|
254
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
255
|
+
}
|
|
256
|
+
catch (error) {
|
|
257
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
258
|
+
}
|
|
259
|
+
});
|
|
260
|
+
// ─── Export Tools ──────────────────────────────────────────────────────────
|
|
261
|
+
server.tool("ncloud_export_mssql_backup", "Export Cloud DB for MSSQL backup files to Object Storage. Use ncloud_list_mssql_backup_details to get available file names.", {
|
|
262
|
+
cloudMssqlInstanceNo: z.string().describe("Cloud MSSQL instance number"),
|
|
263
|
+
cloudMssqlServerInstanceNo: z.string().describe("Cloud MSSQL server instance number"),
|
|
264
|
+
bucketName: z.string().describe("Object Storage bucket name to export to"),
|
|
265
|
+
folderPath: z.string().optional().describe("Folder path within the bucket. If omitted, exports to bucket root."),
|
|
266
|
+
cloudMssqlExportObjectList: z.array(z.object({
|
|
267
|
+
fullObjectName: z.string().describe("Full object name of the backup file to export"),
|
|
268
|
+
})).min(1).describe("List of backup objects to export"),
|
|
269
|
+
}, async (params) => {
|
|
270
|
+
try {
|
|
271
|
+
const { cloudMssqlInstanceNo, cloudMssqlServerInstanceNo, bucketName, folderPath, cloudMssqlExportObjectList } = params;
|
|
272
|
+
const requestParams = { cloudMssqlInstanceNo, cloudMssqlServerInstanceNo, bucketName };
|
|
273
|
+
if (folderPath)
|
|
274
|
+
requestParams.folderPath = folderPath;
|
|
275
|
+
for (let i = 0; i < cloudMssqlExportObjectList.length; i++) {
|
|
276
|
+
requestParams[`cloudMssqlExportObjectList.${i + 1}.fullObjectName`] = cloudMssqlExportObjectList[i].fullObjectName;
|
|
277
|
+
}
|
|
278
|
+
const result = await client.request("/vmssql/v2/exportBackupToObjectStorage", requestParams);
|
|
279
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
280
|
+
}
|
|
281
|
+
catch (error) {
|
|
282
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
283
|
+
}
|
|
284
|
+
});
|
|
285
|
+
server.tool("ncloud_export_mssql_log", "Export Cloud DB for MSSQL server logs to Object Storage. Use ncloud_list_mssql_log_files to get available log files.", {
|
|
286
|
+
cloudMssqlInstanceNo: z.string().describe("Cloud MSSQL instance number"),
|
|
287
|
+
cloudMssqlServerInstanceNo: z.string().describe("Cloud MSSQL server instance number"),
|
|
288
|
+
bucketName: z.string().describe("Object Storage bucket name to export to"),
|
|
289
|
+
folderPath: z.string().optional().describe("Folder path within the bucket. If omitted, exports to bucket root."),
|
|
290
|
+
cloudMssqlExportObjectList: z.array(z.object({
|
|
291
|
+
fullObjectName: z.string().describe("Full object name of the log file to export"),
|
|
292
|
+
})).min(1).describe("List of log objects to export"),
|
|
293
|
+
}, async (params) => {
|
|
294
|
+
try {
|
|
295
|
+
const { cloudMssqlInstanceNo, cloudMssqlServerInstanceNo, bucketName, folderPath, cloudMssqlExportObjectList } = params;
|
|
296
|
+
const requestParams = { cloudMssqlInstanceNo, cloudMssqlServerInstanceNo, bucketName };
|
|
297
|
+
if (folderPath)
|
|
298
|
+
requestParams.folderPath = folderPath;
|
|
299
|
+
for (let i = 0; i < cloudMssqlExportObjectList.length; i++) {
|
|
300
|
+
requestParams[`cloudMssqlExportObjectList.${i + 1}.fullObjectName`] = cloudMssqlExportObjectList[i].fullObjectName;
|
|
301
|
+
}
|
|
302
|
+
const result = await client.request("/vmssql/v2/exportDbServerLogsToObjectStorage", requestParams);
|
|
303
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
304
|
+
}
|
|
305
|
+
catch (error) {
|
|
306
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
307
|
+
}
|
|
308
|
+
});
|
|
309
|
+
// ─── Destructive Tools (with confirm gate) ─────────────────────────────────
|
|
310
|
+
server.tool("ncloud_delete_mssql_instance", "⚠️ Destructive: Permanently delete a Cloud DB for MSSQL instance. Set confirm=true to execute.", {
|
|
311
|
+
cloudMssqlInstanceNo: z.string().describe("Cloud MSSQL instance number to delete"),
|
|
312
|
+
confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
|
|
313
|
+
}, async (params) => {
|
|
314
|
+
try {
|
|
315
|
+
if (!params.confirm) {
|
|
316
|
+
const message = `⚠️ This will permanently delete MSSQL instance [${params.cloudMssqlInstanceNo}]. Do you want to proceed? (yes/no)\n\nTo execute, call this tool again with confirm=true.`;
|
|
317
|
+
return { content: [{ type: "text", text: message }] };
|
|
318
|
+
}
|
|
319
|
+
const { confirm, ...apiParams } = params;
|
|
320
|
+
const result = await client.request("/vmssql/v2/deleteCloudMssqlInstance", apiParams);
|
|
321
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
322
|
+
}
|
|
323
|
+
catch (error) {
|
|
324
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
325
|
+
}
|
|
326
|
+
});
|
|
327
|
+
server.tool("ncloud_delete_mssql_server", "⚠️ Destructive: Delete a Slave server instance from a Cloud DB for MSSQL cluster. Set confirm=true to execute.", {
|
|
328
|
+
cloudMssqlServerInstanceNo: z.string().describe("Cloud MSSQL server instance number to delete (Slave only)"),
|
|
329
|
+
confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
|
|
330
|
+
}, async (params) => {
|
|
331
|
+
try {
|
|
332
|
+
if (!params.confirm) {
|
|
333
|
+
const message = `⚠️ This will permanently delete MSSQL server instance [${params.cloudMssqlServerInstanceNo}] (Slave only). Do you want to proceed? (yes/no)\n\nTo execute, call this tool again with confirm=true.`;
|
|
334
|
+
return { content: [{ type: "text", text: message }] };
|
|
335
|
+
}
|
|
336
|
+
const { confirm, ...apiParams } = params;
|
|
337
|
+
const result = await client.request("/vmssql/v2/deleteCloudMssqlServerInstance", apiParams);
|
|
338
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
339
|
+
}
|
|
340
|
+
catch (error) {
|
|
341
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
342
|
+
}
|
|
343
|
+
});
|
|
344
|
+
}
|
|
345
|
+
//# sourceMappingURL=database-mssql.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database-mssql.js","sourceRoot":"","sources":["../../src/tools/database-mssql.ts"],"names":[],"mappings":"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"}
|