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,205 @@
1
+ import { z } from "zod";
2
+ export function registerRouteTableTools(server, client) {
3
+ // ─── Query Tools ───────────────────────────────────────────────────────────
4
+ server.tool("ncloud_list_route_tables", "List all route tables in the current region", {
5
+ routeTableNoList: z.array(z.string()).optional().describe("Filter by route table numbers"),
6
+ routeTableName: z.string().optional().describe("Filter by route table name"),
7
+ vpcNo: z.string().optional().describe("Filter by VPC number"),
8
+ supportedSubnetTypeCode: z.string().optional().describe("Filter by supported subnet type (PUBLIC, PRIVATE)"),
9
+ }, async (params) => {
10
+ try {
11
+ const result = await client.request("/vpc/v2/getRouteTableList", 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_route_table_detail", "Get detailed information about a specific route table", {
19
+ routeTableNo: z.string().describe("Route table number to query"),
20
+ }, async (params) => {
21
+ try {
22
+ const result = await client.request("/vpc/v2/getRouteTableDetail", params);
23
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
24
+ }
25
+ catch (error) {
26
+ return { content: [{ type: "text", text: error.message }], isError: true };
27
+ }
28
+ });
29
+ server.tool("ncloud_get_routes", "List all routes in a specific route table", {
30
+ routeTableNo: z.string().describe("Route table number"),
31
+ vpcNo: z.string().describe("VPC number"),
32
+ }, async (params) => {
33
+ try {
34
+ const result = await client.request("/vpc/v2/getRouteList", params);
35
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
36
+ }
37
+ catch (error) {
38
+ return { content: [{ type: "text", text: error.message }], isError: true };
39
+ }
40
+ });
41
+ // ─── Create Tool ─────────────────────────────────────────────────────────
42
+ server.tool("ncloud_create_route_table", "Create a new route table in a VPC", {
43
+ vpcNo: z.string({ required_error: "필수 파라미터 'vpcNo'가 누락되었습니다." }).describe("VPC number to create route table in"),
44
+ supportedSubnetTypeCode: z.string({ required_error: "필수 파라미터 'supportedSubnetTypeCode'가 누락되었습니다." }).describe("Supported subnet type (PUBLIC or PRIVATE)"),
45
+ routeTableName: z.string().max(30, {
46
+ message: "잘못된 파라미터: 'routeTableName'은 30자 이하여야 합니다.",
47
+ }).optional().describe("Route table name (max 30 characters)"),
48
+ routeTableDescription: z.string().optional().describe("Description for the route table"),
49
+ }, async (params) => {
50
+ try {
51
+ const result = await client.request("/vpc/v2/createRouteTable", params);
52
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
53
+ }
54
+ catch (error) {
55
+ return { content: [{ type: "text", text: error.message }], isError: true };
56
+ }
57
+ });
58
+ // ─── Route Management Tool ─────────────────────────────────────────────────
59
+ server.tool("ncloud_add_route", "Add a route to a route table", {
60
+ routeTableNo: z.string({ required_error: "필수 파라미터 'routeTableNo'가 누락되었습니다." }).describe("Route table number"),
61
+ vpcNo: z.string({ required_error: "필수 파라미터 'vpcNo'가 누락되었습니다." }).describe("VPC number"),
62
+ destinationCidrBlock: z.string({ required_error: "필수 파라미터 'destinationCidrBlock'이 누락되었습니다." }).regex(/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2}$/, {
63
+ message: "잘못된 파라미터: 'destinationCidrBlock'은 CIDR 형식이어야 합니다 (예: 0.0.0.0/0)",
64
+ }).describe("Destination CIDR block (e.g., 0.0.0.0/0)"),
65
+ targetTypeCode: z.string({ required_error: "필수 파라미터 'targetTypeCode'가 누락되었습니다." }).describe("Target type code (NATGW, VPCPEERING, VGW)"),
66
+ targetNo: z.string({ required_error: "필수 파라미터 'targetNo'가 누락되었습니다." }).describe("Target instance number"),
67
+ targetName: z.string().optional().describe("Target name"),
68
+ }, async (params) => {
69
+ try {
70
+ const { routeTableNo, vpcNo, destinationCidrBlock, targetTypeCode, targetNo, targetName } = params;
71
+ const requestParams = {
72
+ routeTableNo,
73
+ vpcNo,
74
+ "routeList.1.destinationCidrBlock": destinationCidrBlock,
75
+ "routeList.1.targetTypeCode": targetTypeCode,
76
+ "routeList.1.targetNo": targetNo,
77
+ };
78
+ if (targetName)
79
+ requestParams["routeList.1.targetName"] = targetName;
80
+ const result = await client.request("/vpc/v2/addRoute", requestParams);
81
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
82
+ }
83
+ catch (error) {
84
+ return { content: [{ type: "text", text: error.message }], isError: true };
85
+ }
86
+ });
87
+ // ─── Destructive Tools (with confirm gate) ─────────────────────────────────
88
+ // ─── Subnet Association Tools ────────────────────────────────────────────────
89
+ server.tool("ncloud_get_route_table_subnets", "List subnets associated with a specific route table", {
90
+ routeTableNo: z.string().describe("Route table number"),
91
+ }, async (params) => {
92
+ try {
93
+ const result = await client.request("/vpc/v2/getRouteTableSubnetList", params);
94
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
95
+ }
96
+ catch (error) {
97
+ return { content: [{ type: "text", text: error.message }], isError: true };
98
+ }
99
+ });
100
+ server.tool("ncloud_add_route_table_subnet", "Associate a subnet with a route table", {
101
+ routeTableNo: z.string({ required_error: "필수 파라미터 'routeTableNo'가 누락되었습니다." }).describe("Route table number"),
102
+ vpcNo: z.string({ required_error: "필수 파라미터 'vpcNo'가 누락되었습니다." }).describe("VPC number"),
103
+ subnetNo: z.string({ required_error: "필수 파라미터 'subnetNo'가 누락되었습니다." }).describe("Subnet number to associate"),
104
+ }, async (params) => {
105
+ try {
106
+ const { routeTableNo, vpcNo, subnetNo } = params;
107
+ const requestParams = {
108
+ routeTableNo,
109
+ vpcNo,
110
+ "subnetNoList.1": subnetNo,
111
+ };
112
+ const result = await client.request("/vpc/v2/addRouteTableSubnet", requestParams);
113
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
114
+ }
115
+ catch (error) {
116
+ return { content: [{ type: "text", text: error.message }], isError: true };
117
+ }
118
+ });
119
+ server.tool("ncloud_remove_route_table_subnet", "⚠️ Destructive: Remove a subnet association from a route table. Set confirm=true to execute.", {
120
+ routeTableNo: z.string({ required_error: "필수 파라미터 'routeTableNo'가 누락되었습니다." }).describe("Route table number"),
121
+ vpcNo: z.string({ required_error: "필수 파라미터 'vpcNo'가 누락되었습니다." }).describe("VPC number"),
122
+ subnetNo: z.string({ required_error: "필수 파라미터 'subnetNo'가 누락되었습니다." }).describe("Subnet number to remove from route table"),
123
+ confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
124
+ }, async (params) => {
125
+ try {
126
+ if (!params.confirm) {
127
+ const message = `⚠️ This will remove Subnet [${params.subnetNo}] from Route Table [${params.routeTableNo}]. Do you want to proceed? (yes/no)\n\nTo execute, call this tool again with confirm=true.`;
128
+ return { content: [{ type: "text", text: message }] };
129
+ }
130
+ const { confirm, routeTableNo, vpcNo, subnetNo } = params;
131
+ const requestParams = {
132
+ routeTableNo,
133
+ vpcNo,
134
+ "subnetNoList.1": subnetNo,
135
+ };
136
+ const result = await client.request("/vpc/v2/removeRouteTableSubnet", requestParams);
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
+ // ─── Description Tool ──────────────────────────────────────────────────────
144
+ server.tool("ncloud_set_route_table_description", "Update the description of a route table", {
145
+ routeTableNo: z.string({ required_error: "필수 파라미터 'routeTableNo'가 누락되었습니다." }).describe("Route table number"),
146
+ routeTableDescription: z.string({ required_error: "필수 파라미터 'routeTableDescription'이 누락되었습니다." }).describe("New description for the route table"),
147
+ }, async (params) => {
148
+ try {
149
+ const result = await client.request("/vpc/v2/setRouteTableDescription", 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
+ // ─── Destructive Tools (with confirm gate) ─────────────────────────────────
157
+ server.tool("ncloud_delete_route_table", "⚠️ Destructive: Permanently delete a route table. Set confirm=true to execute.", {
158
+ routeTableNo: z.string({ required_error: "필수 파라미터 'routeTableNo'가 누락되었습니다." }).describe("Route table number to delete"),
159
+ confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
160
+ }, async (params) => {
161
+ try {
162
+ if (!params.confirm) {
163
+ const message = `⚠️ This will permanently delete Route Table [${params.routeTableNo}]. Do you want to proceed? (yes/no)\n\nTo execute, call this tool again with confirm=true.`;
164
+ return { content: [{ type: "text", text: message }] };
165
+ }
166
+ const { confirm, ...apiParams } = params;
167
+ const result = await client.request("/vpc/v2/deleteRouteTable", apiParams);
168
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
169
+ }
170
+ catch (error) {
171
+ return { content: [{ type: "text", text: error.message }], isError: true };
172
+ }
173
+ });
174
+ server.tool("ncloud_remove_route", "⚠️ Destructive: Remove a route from a route table. Set confirm=true to execute.", {
175
+ routeTableNo: z.string({ required_error: "필수 파라미터 'routeTableNo'가 누락되었습니다." }).describe("Route table number"),
176
+ vpcNo: z.string({ required_error: "필수 파라미터 'vpcNo'가 누락되었습니다." }).describe("VPC number"),
177
+ destinationCidrBlock: z.string({ required_error: "필수 파라미터 'destinationCidrBlock'이 누락되었습니다." }).regex(/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\/\d{1,2}$/, {
178
+ message: "잘못된 파라미터: 'destinationCidrBlock'은 CIDR 형식이어야 합니다 (예: 0.0.0.0/0)",
179
+ }).describe("Destination CIDR block of the route to remove"),
180
+ targetTypeCode: z.string({ required_error: "필수 파라미터 'targetTypeCode'가 누락되었습니다." }).describe("Target type code (NATGW, VPCPEERING, VGW)"),
181
+ targetNo: z.string({ required_error: "필수 파라미터 'targetNo'가 누락되었습니다." }).describe("Target instance number"),
182
+ confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
183
+ }, async (params) => {
184
+ try {
185
+ if (!params.confirm) {
186
+ const message = `⚠️ This will permanently remove route [${params.destinationCidrBlock}] from Route Table [${params.routeTableNo}]. Do you want to proceed? (yes/no)\n\nTo execute, call this tool again with confirm=true.`;
187
+ return { content: [{ type: "text", text: message }] };
188
+ }
189
+ const { confirm, routeTableNo, vpcNo, destinationCidrBlock, targetTypeCode, targetNo } = params;
190
+ const requestParams = {
191
+ routeTableNo,
192
+ vpcNo,
193
+ "routeList.1.destinationCidrBlock": destinationCidrBlock,
194
+ "routeList.1.targetTypeCode": targetTypeCode,
195
+ "routeList.1.targetNo": targetNo,
196
+ };
197
+ const result = await client.request("/vpc/v2/removeRoute", requestParams);
198
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
199
+ }
200
+ catch (error) {
201
+ return { content: [{ type: "text", text: error.message }], isError: true };
202
+ }
203
+ });
204
+ }
205
+ //# sourceMappingURL=route-table.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"route-table.js","sourceRoot":"","sources":["../../src/tools/route-table.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 registerSecurityMonitoringTools(server: McpServer, client: NcloudClient): void;
@@ -0,0 +1,182 @@
1
+ import { z } from "zod";
2
+ export function registerSecurityMonitoringTools(server, client) {
3
+ // ncloud_list_security_events — List security events with optional filters
4
+ server.tool("ncloud_list_security_events", "List security monitoring events with filtering by period, severity, and event type. Only available for users subscribed to the Security Monitoring service.", {
5
+ startTime: z.string().optional().describe("Start time in ISO 8601 format (e.g., \"2024-01-01T00:00:00Z\")"),
6
+ endTime: z.string().optional().describe("End time in ISO 8601 format (e.g., \"2024-01-31T23:59:59Z\")"),
7
+ severityCode: z.string().optional().describe("Severity level filter (e.g., \"HIGH\", \"MEDIUM\", \"LOW\")"),
8
+ eventTypeCode: z.string().optional().describe("Event type filter (e.g., \"IDS\", \"IPS\", \"AV\")"),
9
+ regionCode: z.string().optional().describe("Region code (KR, JPN, SGN, etc.)"),
10
+ pageNo: z.number().optional().describe("Page number (default 1)"),
11
+ pageSize: z.number().optional().describe("Page size (default 50)"),
12
+ }, async (params) => {
13
+ try {
14
+ const apiParams = {};
15
+ if (params.startTime !== undefined)
16
+ apiParams.startTime = params.startTime;
17
+ if (params.endTime !== undefined)
18
+ apiParams.endTime = params.endTime;
19
+ if (params.severityCode !== undefined)
20
+ apiParams.severityCode = params.severityCode;
21
+ if (params.eventTypeCode !== undefined)
22
+ apiParams.eventTypeCode = params.eventTypeCode;
23
+ if (params.regionCode !== undefined)
24
+ apiParams.regionCode = params.regionCode;
25
+ if (params.pageNo !== undefined)
26
+ apiParams.pageNo = params.pageNo;
27
+ if (params.pageSize !== undefined)
28
+ apiParams.pageSize = params.pageSize;
29
+ const result = await client.request("/vsecuritymonitoring/v1/getSecurityEventList", apiParams);
30
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
31
+ }
32
+ catch (error) {
33
+ return { content: [{ type: "text", text: error.message }], isError: true };
34
+ }
35
+ });
36
+ // ncloud_get_security_event_detail — Get detailed information of a specific security event
37
+ server.tool("ncloud_get_security_event_detail", "Get detailed information about a specific security monitoring event. Only available for users subscribed to the Security Monitoring service.", {
38
+ eventId: z.string().describe("The security event ID to get details for"),
39
+ regionCode: z.string().optional().describe("Region code (KR, JPN, SGN, etc.)"),
40
+ }, async (params) => {
41
+ try {
42
+ const apiParams = {
43
+ eventId: params.eventId,
44
+ };
45
+ if (params.regionCode !== undefined)
46
+ apiParams.regionCode = params.regionCode;
47
+ const result = await client.request("/vsecuritymonitoring/v1/getSecurityEventDetail", apiParams);
48
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
49
+ }
50
+ catch (error) {
51
+ return { content: [{ type: "text", text: error.message }], isError: true };
52
+ }
53
+ });
54
+ // ncloud_list_ids_events — List IDS/IPS detection and blocking events
55
+ server.tool("ncloud_list_ids_events", "List IDS/IPS intrusion detection and prevention events. Use for tracking intrusion attempts and blocked attacks. Only available for users subscribed to the Security Monitoring service.", {
56
+ startTime: z.string().optional().describe("Start time in ISO 8601 format (e.g., \"2024-01-01T00:00:00Z\")"),
57
+ endTime: z.string().optional().describe("End time in ISO 8601 format (e.g., \"2024-01-31T23:59:59Z\")"),
58
+ severityCode: z.string().optional().describe("Severity level filter (e.g., \"HIGH\", \"MEDIUM\", \"LOW\")"),
59
+ targetServerInstanceNo: z.string().optional().describe("Target server instance number to filter events"),
60
+ regionCode: z.string().optional().describe("Region code (KR, JPN, SGN, etc.)"),
61
+ pageNo: z.number().optional().describe("Page number (default 1)"),
62
+ pageSize: z.number().optional().describe("Page size (default 50)"),
63
+ }, async (params) => {
64
+ try {
65
+ const apiParams = {};
66
+ if (params.startTime !== undefined)
67
+ apiParams.startTime = params.startTime;
68
+ if (params.endTime !== undefined)
69
+ apiParams.endTime = params.endTime;
70
+ if (params.severityCode !== undefined)
71
+ apiParams.severityCode = params.severityCode;
72
+ if (params.targetServerInstanceNo !== undefined)
73
+ apiParams.targetServerInstanceNo = params.targetServerInstanceNo;
74
+ if (params.regionCode !== undefined)
75
+ apiParams.regionCode = params.regionCode;
76
+ if (params.pageNo !== undefined)
77
+ apiParams.pageNo = params.pageNo;
78
+ if (params.pageSize !== undefined)
79
+ apiParams.pageSize = params.pageSize;
80
+ const result = await client.request("/vsecuritymonitoring/v1/getIdsEventList", apiParams);
81
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
82
+ }
83
+ catch (error) {
84
+ return { content: [{ type: "text", text: error.message }], isError: true };
85
+ }
86
+ });
87
+ // ncloud_list_av_events — List Anti-Virus malware detection events
88
+ server.tool("ncloud_list_av_events", "List Anti-Virus malware detection events. Use for tracking malware threats detected on servers. Only available for users subscribed to the Security Monitoring service.", {
89
+ startTime: z.string().optional().describe("Start time in ISO 8601 format (e.g., \"2024-01-01T00:00:00Z\")"),
90
+ endTime: z.string().optional().describe("End time in ISO 8601 format (e.g., \"2024-01-31T23:59:59Z\")"),
91
+ severityCode: z.string().optional().describe("Severity level filter (e.g., \"HIGH\", \"MEDIUM\", \"LOW\")"),
92
+ targetServerInstanceNo: z.string().optional().describe("Target server instance number to filter events"),
93
+ regionCode: z.string().optional().describe("Region code (KR, JPN, SGN, etc.)"),
94
+ pageNo: z.number().optional().describe("Page number (default 1)"),
95
+ pageSize: z.number().optional().describe("Page size (default 50)"),
96
+ }, async (params) => {
97
+ try {
98
+ const apiParams = {};
99
+ if (params.startTime !== undefined)
100
+ apiParams.startTime = params.startTime;
101
+ if (params.endTime !== undefined)
102
+ apiParams.endTime = params.endTime;
103
+ if (params.severityCode !== undefined)
104
+ apiParams.severityCode = params.severityCode;
105
+ if (params.targetServerInstanceNo !== undefined)
106
+ apiParams.targetServerInstanceNo = params.targetServerInstanceNo;
107
+ if (params.regionCode !== undefined)
108
+ apiParams.regionCode = params.regionCode;
109
+ if (params.pageNo !== undefined)
110
+ apiParams.pageNo = params.pageNo;
111
+ if (params.pageSize !== undefined)
112
+ apiParams.pageSize = params.pageSize;
113
+ const result = await client.request("/vsecuritymonitoring/v1/getAntiVirusEventList", apiParams);
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
+ // ncloud_list_ddos_events — List Anti-DDoS security events
121
+ server.tool("ncloud_list_ddos_events", "List Anti-DDoS security events that occurred while using the Anti-DDoS service. Use for tracking DDoS attack attempts and mitigation actions. Only available for users subscribed to the Security Monitoring service.", {
122
+ startDateTime: z.string().describe("Start date/time for event search in ISO 8601 format (e.g., \"2024-01-01T00:00:00Z\")"),
123
+ endDateTime: z.string().describe("End date/time for event search in ISO 8601 format (e.g., \"2024-01-31T23:59:59Z\")"),
124
+ pageNo: z.number().optional().describe("Page number (default 1)"),
125
+ pageSize: z.number().optional().describe("Page size (default 50)"),
126
+ }, async (params) => {
127
+ try {
128
+ const apiParams = {
129
+ startDateTime: params.startDateTime,
130
+ endDateTime: params.endDateTime,
131
+ };
132
+ if (params.pageNo !== undefined)
133
+ apiParams.pageNo = params.pageNo;
134
+ if (params.pageSize !== undefined)
135
+ apiParams.pageSize = params.pageSize;
136
+ const result = await client.request("/vsecuritymonitoring/v1/getDDoSList", apiParams);
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
+ // ncloud_get_ddos_event_detail — Get Anti-DDoS event detail
144
+ server.tool("ncloud_get_ddos_event_detail", "Get detailed information about a specific Anti-DDoS security event. Use for investigating DDoS attack details including attack vectors, duration, and mitigation results. Only available for users subscribed to the Security Monitoring service.", {
145
+ eventId: z.string().describe("The DDoS event ID to get details for"),
146
+ }, async (params) => {
147
+ try {
148
+ const apiParams = {
149
+ eventId: params.eventId,
150
+ };
151
+ const result = await client.request("/vsecuritymonitoring/v1/getDDoSEventDetail", apiParams);
152
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
153
+ }
154
+ catch (error) {
155
+ return { content: [{ type: "text", text: error.message }], isError: true };
156
+ }
157
+ });
158
+ // ncloud_list_waf_events — List WAF security events
159
+ server.tool("ncloud_list_waf_events", "List WAF (Web Application Firewall) security events that occurred while using the WAF service. Use for tracking web application attacks such as SQL injection, XSS, and other OWASP threats. Only available for users subscribed to the Security Monitoring service.", {
160
+ startDateTime: z.string().describe("Start date/time for event search in ISO 8601 format (e.g., \"2024-01-01T00:00:00Z\")"),
161
+ endDateTime: z.string().describe("End date/time for event search in ISO 8601 format (e.g., \"2024-01-31T23:59:59Z\")"),
162
+ pageNo: z.number().optional().describe("Page number (default 1)"),
163
+ pageSize: z.number().optional().describe("Page size (default 50)"),
164
+ }, async (params) => {
165
+ try {
166
+ const apiParams = {
167
+ startDateTime: params.startDateTime,
168
+ endDateTime: params.endDateTime,
169
+ };
170
+ if (params.pageNo !== undefined)
171
+ apiParams.pageNo = params.pageNo;
172
+ if (params.pageSize !== undefined)
173
+ apiParams.pageSize = params.pageSize;
174
+ const result = await client.request("/vsecuritymonitoring/v1/getWAFList", apiParams);
175
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
176
+ }
177
+ catch (error) {
178
+ return { content: [{ type: "text", text: error.message }], isError: true };
179
+ }
180
+ });
181
+ }
182
+ //# sourceMappingURL=security-monitoring.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"security-monitoring.js","sourceRoot":"","sources":["../../src/tools/security-monitoring.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 registerSensTools(server: McpServer, client: NcloudClient): void;