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,187 @@
1
+ import { z } from "zod";
2
+ export function registerImageOptimizerTools(server, client) {
3
+ // ─── Project Query Tools ───────────────────────────────────────────────────
4
+ server.tool("ncloud_imageoptimizer_list_projects", "List all Image Optimizer projects with pagination", {
5
+ pageNo: z.number().optional().describe("Page number (default: 1)"),
6
+ pageSizeNo: z.number().optional().describe("Number of items per page (default: 20)"),
7
+ }, async (params) => {
8
+ try {
9
+ const result = await client.request("/api/v2/projects", params);
10
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
11
+ }
12
+ catch (error) {
13
+ return { content: [{ type: "text", text: error.message }], isError: true };
14
+ }
15
+ });
16
+ server.tool("ncloud_imageoptimizer_get_project", "Get detailed information about a specific Image Optimizer project", {
17
+ projectId: z.string({ required_error: "필수 파라미터 'projectId'가 누락되었습니다." }).describe("Project ID to query"),
18
+ }, async (params) => {
19
+ try {
20
+ const result = await client.request(`/api/v2/projects/${params.projectId}`);
21
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
22
+ }
23
+ catch (error) {
24
+ return { content: [{ type: "text", text: error.message }], isError: true };
25
+ }
26
+ });
27
+ // ─── Project Create Tool ───────────────────────────────────────────────────
28
+ server.tool("ncloud_imageoptimizer_create_project", "Create a new Image Optimizer project. Use dryRun=true to preview without creating.", {
29
+ projectName: z.string({ required_error: "필수 파라미터 'projectName'이 누락되었습니다." }).describe("Project name"),
30
+ bucketName: z.string({ required_error: "필수 파라미터 'bucketName'이 누락되었습니다." }).describe("Object Storage bucket name for source images"),
31
+ createCdn: z.boolean().optional().default(true).describe("Whether to auto-create a Global Edge CDN"),
32
+ cdnProfileId: z.number().optional().describe("Global Edge profile ID (required when createCdn=true)"),
33
+ cdnRegionType: z.enum(["KOREA", "JAPAN", "GLOBAL"]).optional().describe("CDN service region (required when createCdn=true)"),
34
+ cdnDomain: z.string().optional().describe("Existing Global Edge domain (required when createCdn=false)"),
35
+ cdnInstanceNo: z.number().optional().describe("Existing Global Edge instance ID (required when createCdn=false)"),
36
+ dryRun: z.boolean().optional().default(false).describe("If true, returns a preview without actually creating the project"),
37
+ }, async (params) => {
38
+ try {
39
+ if (params.dryRun) {
40
+ const preview = {
41
+ label: "🔍 Dry-Run Preview: Image Optimizer Project Creation",
42
+ projectName: params.projectName,
43
+ bucketName: params.bucketName,
44
+ createCdn: params.createCdn,
45
+ cdnProfileId: params.cdnProfileId,
46
+ cdnRegionType: params.cdnRegionType,
47
+ message: "이 요청은 실제 프로젝트를 생성하지 않습니다. dryRun=false로 호출하면 프로젝트가 생성됩니다.",
48
+ };
49
+ return { content: [{ type: "text", text: JSON.stringify(preview, null, 2) }] };
50
+ }
51
+ const body = {
52
+ projectName: params.projectName,
53
+ bucketName: params.bucketName,
54
+ cdn: {
55
+ createCdn: params.createCdn,
56
+ cdnType: "GLOBAL_EDGE",
57
+ profileId: params.cdnProfileId,
58
+ regionType: params.cdnRegionType,
59
+ cdnDomain: params.cdnDomain,
60
+ cdnInstanceNo: params.cdnInstanceNo,
61
+ },
62
+ };
63
+ const result = await client.postRequest("/api/v2/projects", body);
64
+ const project = result?.content || result;
65
+ const summary = {
66
+ 리소스타입: "Image Optimizer Project",
67
+ 프로젝트ID: project?.projectId || project?.id || "creating",
68
+ 프로젝트명: params.projectName,
69
+ 버킷: params.bucketName,
70
+ CDN생성: params.createCdn,
71
+ 상태: project?.projectStatus || "CREATING",
72
+ };
73
+ return { content: [{ type: "text", text: JSON.stringify(summary, null, 2) }] };
74
+ }
75
+ catch (error) {
76
+ return { content: [{ type: "text", text: error.message }], isError: true };
77
+ }
78
+ });
79
+ // ─── Project Delete Tool ───────────────────────────────────────────────────
80
+ server.tool("ncloud_imageoptimizer_delete_project", "⚠️ Destructive: Permanently delete an Image Optimizer project. Set confirm=true to execute.", {
81
+ projectId: z.string({ required_error: "필수 파라미터 'projectId'가 누락되었습니다." }).describe("Project ID to delete"),
82
+ confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
83
+ }, async (params) => {
84
+ try {
85
+ if (!params.confirm) {
86
+ const message = `⚠️ This will permanently delete Image Optimizer Project [${params.projectId}]. All transformation rules will be removed.\n\nTo execute, call this tool again with confirm=true.`;
87
+ return { content: [{ type: "text", text: message }] };
88
+ }
89
+ const result = await client.deleteRequest(`/api/v2/projects/${params.projectId}`);
90
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
91
+ }
92
+ catch (error) {
93
+ return { content: [{ type: "text", text: error.message }], isError: true };
94
+ }
95
+ });
96
+ // ─── Transformation Rule Tools ─────────────────────────────────────────────
97
+ server.tool("ncloud_imageoptimizer_list_rules", "List all transformation rules for an Image Optimizer project", {
98
+ projectId: z.string({ required_error: "필수 파라미터 'projectId'가 누락되었습니다." }).describe("Project ID to list rules for"),
99
+ pageNo: z.number().optional().describe("Page number (default: 1)"),
100
+ pageSizeNo: z.number().optional().describe("Number of items per page (default: 20)"),
101
+ }, async (params) => {
102
+ try {
103
+ const { projectId, ...queryParams } = params;
104
+ const result = await client.request(`/api/v2/projects/${projectId}/rules`, queryParams);
105
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
106
+ }
107
+ catch (error) {
108
+ return { content: [{ type: "text", text: error.message }], isError: true };
109
+ }
110
+ });
111
+ server.tool("ncloud_imageoptimizer_create_rule", "Create a new transformation rule for an Image Optimizer project. Use dryRun=true to preview without creating.", {
112
+ projectId: z.string({ required_error: "필수 파라미터 'projectId'가 누락되었습니다." }).describe("Project ID to add the rule to"),
113
+ ruleName: z.string({ required_error: "필수 파라미터 'ruleName'이 누락되었습니다." }).describe("Rule name"),
114
+ resizeType: z.enum(["f", "w", "h", "fw", "fh", "wh", "h_wm"]).optional().describe("Resize type: f(fit), w(width), h(height), fw(force width), fh(force height), wh(width+height), h_wm(height with watermark)"),
115
+ width: z.number().optional().describe("Target width in pixels"),
116
+ height: z.number().optional().describe("Target height in pixels"),
117
+ quality: z.number().optional().describe("Output quality (1-100, default: 75)"),
118
+ format: z.enum(["jpg", "png", "webp", "gif"]).optional().describe("Output image format"),
119
+ autorotate: z.boolean().optional().default(true).describe("Whether to auto-rotate based on EXIF data"),
120
+ dryRun: z.boolean().optional().default(false).describe("If true, returns a preview without actually creating the rule"),
121
+ }, async (params) => {
122
+ try {
123
+ if (params.dryRun) {
124
+ const preview = {
125
+ label: "🔍 Dry-Run Preview: Image Optimizer Rule Creation",
126
+ projectId: params.projectId,
127
+ ruleName: params.ruleName,
128
+ resizeType: params.resizeType,
129
+ width: params.width,
130
+ height: params.height,
131
+ quality: params.quality,
132
+ format: params.format,
133
+ autorotate: params.autorotate,
134
+ message: "이 요청은 실제 규칙을 생성하지 않습니다. dryRun=false로 호출하면 규칙이 생성됩니다.",
135
+ };
136
+ return { content: [{ type: "text", text: JSON.stringify(preview, null, 2) }] };
137
+ }
138
+ const body = {
139
+ ruleName: params.ruleName,
140
+ autorotate: params.autorotate,
141
+ };
142
+ if (params.resizeType)
143
+ body.resizeType = params.resizeType;
144
+ if (params.width)
145
+ body.width = params.width;
146
+ if (params.height)
147
+ body.height = params.height;
148
+ if (params.quality)
149
+ body.quality = params.quality;
150
+ if (params.format)
151
+ body.format = params.format;
152
+ const result = await client.postRequest(`/api/v2/projects/${params.projectId}/rules`, body);
153
+ const summary = {
154
+ 리소스타입: "Image Optimizer Rule",
155
+ 프로젝트ID: params.projectId,
156
+ 규칙명: params.ruleName,
157
+ 리사이즈타입: params.resizeType || "none",
158
+ 크기: `${params.width || "auto"}x${params.height || "auto"}`,
159
+ 품질: params.quality || 75,
160
+ 포맷: params.format || "original",
161
+ 상태: "created",
162
+ };
163
+ return { content: [{ type: "text", text: JSON.stringify(summary, null, 2) }] };
164
+ }
165
+ catch (error) {
166
+ return { content: [{ type: "text", text: error.message }], isError: true };
167
+ }
168
+ });
169
+ server.tool("ncloud_imageoptimizer_delete_rule", "⚠️ Destructive: Delete a transformation rule from an Image Optimizer project. Set confirm=true to execute.", {
170
+ projectId: z.string({ required_error: "필수 파라미터 'projectId'가 누락되었습니다." }).describe("Project ID containing the rule"),
171
+ ruleId: z.string({ required_error: "필수 파라미터 'ruleId'가 누락되었습니다." }).describe("Rule ID to delete"),
172
+ confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
173
+ }, async (params) => {
174
+ try {
175
+ if (!params.confirm) {
176
+ const message = `⚠️ This will permanently delete Rule [${params.ruleId}] from Project [${params.projectId}].\n\nTo execute, call this tool again with confirm=true.`;
177
+ return { content: [{ type: "text", text: message }] };
178
+ }
179
+ const result = await client.deleteRequest(`/api/v2/projects/${params.projectId}/rules/${params.ruleId}`);
180
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
181
+ }
182
+ catch (error) {
183
+ return { content: [{ type: "text", text: error.message }], isError: true };
184
+ }
185
+ });
186
+ }
187
+ //# sourceMappingURL=media-imageoptimizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-imageoptimizer.js","sourceRoot":"","sources":["../../src/tools/media-imageoptimizer.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 registerLiveStationTools(server: McpServer, client: NcloudClient): void;
@@ -0,0 +1,252 @@
1
+ import { z } from "zod";
2
+ export function registerLiveStationTools(server, client) {
3
+ // ─── Channel Query Tools ───────────────────────────────────────────────────
4
+ server.tool("ncloud_livestation_list_channels", "List all Live Station streaming channels with pagination", {
5
+ pageNo: z.number().optional().describe("Page number (default: 1)"),
6
+ pageSizeNo: z.number().optional().describe("Number of items per page (default: 20)"),
7
+ }, async (params) => {
8
+ try {
9
+ const result = await client.request("/api/v2/channels", params);
10
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
11
+ }
12
+ catch (error) {
13
+ return { content: [{ type: "text", text: error.message }], isError: true };
14
+ }
15
+ });
16
+ server.tool("ncloud_livestation_get_channel", "Get detailed information about a specific Live Station channel including streaming URLs and CDN settings", {
17
+ channelId: z.string({ required_error: "필수 파라미터 'channelId'가 누락되었습니다." }).describe("Channel ID (e.g., ls-20250820xxxxxx)"),
18
+ }, async (params) => {
19
+ try {
20
+ const result = await client.request(`/api/v2/channels/${params.channelId}`);
21
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
22
+ }
23
+ catch (error) {
24
+ return { content: [{ type: "text", text: error.message }], isError: true };
25
+ }
26
+ });
27
+ // ─── Channel Create Tool ───────────────────────────────────────────────────
28
+ server.tool("ncloud_livestation_create_channel", "Create a new Live Station channel for live streaming. Use dryRun=true to preview without creating.", {
29
+ channelName: z.string({ required_error: "필수 파라미터 'channelName'이 누락되었습니다." }).describe("Channel name (3-20 chars, Korean/English/numbers/_)"),
30
+ envType: z.enum(["REAL", "DEV", "STAGE"]).optional().default("REAL").describe("Channel environment type"),
31
+ outputProtocol: z.enum(["HLS", "LL_HLS", "HLS,DASH"]).optional().default("HLS").describe("Output protocol: HLS, LL_HLS (low-latency), or HLS,DASH (both)"),
32
+ createCdn: z.boolean({ required_error: "필수 파라미터 'createCdn'이 누락되었습니다." }).describe("Whether to create a new CDN (true) or use existing (false)"),
33
+ cdnProfileId: z.number({ required_error: "필수 파라미터 'cdnProfileId'가 누락되었습니다." }).describe("Global Edge profile ID"),
34
+ cdnRegionType: z.enum(["KOREA", "JAPAN", "GLOBAL"]).optional().describe("CDN service region (required when createCdn=true)"),
35
+ cdnDomain: z.string().optional().describe("Existing Global Edge domain (required when createCdn=false)"),
36
+ cdnInstanceNo: z.number().optional().describe("Existing Global Edge instance ID (required when createCdn=false)"),
37
+ qualitySetId: z.number({ required_error: "필수 파라미터 'qualitySetId'가 누락되었습니다." }).describe("Image quality setting ID (from quality settings list)"),
38
+ useDvr: z.boolean({ required_error: "필수 파라미터 'useDvr'가 누락되었습니다." }).describe("Time machine (DVR) setting: true to enable rewind"),
39
+ timemachineMin: z.number().optional().describe("Time machine allowance in minutes (360, required if useDvr=true)"),
40
+ immediateOnAir: z.boolean().optional().default(false).describe("Auto-recording on stream start"),
41
+ recordType: z.enum(["NO_RECORD", "AUTO_UPLOAD", "MANUAL_UPLOAD"]).optional().default("NO_RECORD").describe("Recording storage type"),
42
+ recordFormat: z.enum(["MP4", "HLS", "ALL"]).optional().describe("Recording file format (required if recordType=AUTO_UPLOAD)"),
43
+ recordBucketName: z.string().optional().describe("Recording storage bucket (required if recordType=AUTO_UPLOAD)"),
44
+ recordFilePath: z.string().optional().describe("Recording storage path (required if recordType=AUTO_UPLOAD)"),
45
+ isStreamFailOver: z.boolean().optional().default(false).describe("Whether to enable streaming redundancy"),
46
+ drmEnabledYn: z.boolean().optional().default(false).describe("Whether to enable Multi DRM"),
47
+ dryRun: z.boolean().optional().default(false).describe("If true, returns a preview without actually creating the channel"),
48
+ }, async (params) => {
49
+ try {
50
+ if (params.dryRun) {
51
+ const preview = {
52
+ label: "🔍 Dry-Run Preview: Live Station Channel Creation",
53
+ channelName: params.channelName,
54
+ envType: params.envType,
55
+ outputProtocol: params.outputProtocol,
56
+ createCdn: params.createCdn,
57
+ cdnProfileId: params.cdnProfileId,
58
+ cdnRegionType: params.cdnRegionType,
59
+ qualitySetId: params.qualitySetId,
60
+ useDvr: params.useDvr,
61
+ recordType: params.recordType,
62
+ isStreamFailOver: params.isStreamFailOver,
63
+ drmEnabledYn: params.drmEnabledYn,
64
+ message: "이 요청은 실제 채널을 생성하지 않습니다. dryRun=false로 호출하면 채널이 생성됩니다.",
65
+ };
66
+ return { content: [{ type: "text", text: JSON.stringify(preview, null, 2) }] };
67
+ }
68
+ const body = {
69
+ channelName: params.channelName,
70
+ envType: params.envType,
71
+ outputProtocol: params.outputProtocol,
72
+ cdn: {
73
+ createCdn: params.createCdn,
74
+ cdnType: "GLOBAL_EDGE",
75
+ profileId: params.cdnProfileId,
76
+ regionType: params.cdnRegionType,
77
+ cdnDomain: params.cdnDomain,
78
+ cdnInstanceNo: params.cdnInstanceNo,
79
+ },
80
+ qualitySetId: params.qualitySetId,
81
+ useDvr: params.useDvr,
82
+ immediateOnAir: params.immediateOnAir,
83
+ record: {
84
+ type: params.recordType,
85
+ format: params.recordFormat,
86
+ bucketName: params.recordBucketName,
87
+ filePath: params.recordFilePath,
88
+ },
89
+ isStreamFailOver: params.isStreamFailOver,
90
+ drmEnabledYn: params.drmEnabledYn,
91
+ };
92
+ if (params.useDvr && params.timemachineMin) {
93
+ body.timemachineMin = params.timemachineMin;
94
+ }
95
+ const result = await client.postRequest("/api/v2/channels", body);
96
+ const channel = result?.content || result;
97
+ const summary = {
98
+ 리소스타입: "Live Station Channel",
99
+ 채널ID: channel?.channelId || channel?.id || "creating",
100
+ 채널명: params.channelName,
101
+ 프로토콜: params.outputProtocol,
102
+ DVR: params.useDvr,
103
+ 녹화: params.recordType,
104
+ 상태: channel?.channelStatus || "CREATING",
105
+ };
106
+ return { content: [{ type: "text", text: JSON.stringify(summary, null, 2) }] };
107
+ }
108
+ catch (error) {
109
+ return { content: [{ type: "text", text: error.message }], isError: true };
110
+ }
111
+ });
112
+ // ─── Channel Delete Tool ───────────────────────────────────────────────────
113
+ server.tool("ncloud_livestation_delete_channel", "⚠️ Destructive: Permanently terminate a Live Station channel. End broadcast streaming before terminating. Set confirm=true to execute.", {
114
+ channelId: z.string({ required_error: "필수 파라미터 'channelId'가 누락되었습니다." }).describe("Channel ID to terminate"),
115
+ confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
116
+ }, async (params) => {
117
+ try {
118
+ if (!params.confirm) {
119
+ const message = `⚠️ This will permanently terminate Live Station Channel [${params.channelId}]. Created snapshots will also be deleted. The integrated CDN will be maintained.\n\nTo execute, call this tool again with confirm=true.`;
120
+ return { content: [{ type: "text", text: message }] };
121
+ }
122
+ const result = await client.deleteRequest(`/api/v2/channels/${params.channelId}`);
123
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
124
+ }
125
+ catch (error) {
126
+ return { content: [{ type: "text", text: error.message }], isError: true };
127
+ }
128
+ });
129
+ // ─── Quality Settings Tools ────────────────────────────────────────────────
130
+ server.tool("ncloud_livestation_list_quality_settings", "List available image quality settings for Live Station channels", {
131
+ pageNo: z.number().optional().describe("Page number (default: 1)"),
132
+ pageSizeNo: z.number().optional().describe("Number of items per page (default: 20)"),
133
+ }, async (params) => {
134
+ try {
135
+ const result = await client.request("/api/v2/quality-sets", 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
+ // ─── Service URL Tool ──────────────────────────────────────────────────────
143
+ server.tool("ncloud_livestation_get_service_url", "Get the streaming service URLs (publish/play) for a Live Station channel", {
144
+ channelId: z.string({ required_error: "필수 파라미터 'channelId'가 누락되었습니다." }).describe("Channel ID to get service URLs for"),
145
+ }, async (params) => {
146
+ try {
147
+ const result = await client.request(`/api/v2/channels/${params.channelId}/serviceUrls`);
148
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
149
+ }
150
+ catch (error) {
151
+ return { content: [{ type: "text", text: error.message }], isError: true };
152
+ }
153
+ });
154
+ // ─── Channel Operation Tools ─────────────────────────────────────────────
155
+ server.tool("ncloud_livestation_stop_channel", "⚠️ Destructive: Stop a Live Station channel. The channel will be suspended and streaming will be interrupted. Set confirm=true to execute.", {
156
+ channelId: z.string({ required_error: "필수 파라미터 'channelId'가 누락되었습니다." }).describe("Channel ID to stop"),
157
+ confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
158
+ }, async (params) => {
159
+ try {
160
+ if (!params.confirm) {
161
+ const message = `⚠️ This will stop Live Station Channel [${params.channelId}]. Streaming will be interrupted.\n\nTo execute, call this tool again with confirm=true.`;
162
+ return { content: [{ type: "text", text: message }] };
163
+ }
164
+ const result = await client.putRequest(`/api/v2/channels/${params.channelId}/stop`, {});
165
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
166
+ }
167
+ catch (error) {
168
+ return { content: [{ type: "text", text: error.message }], isError: true };
169
+ }
170
+ });
171
+ server.tool("ncloud_livestation_resume_channel", "Resume a stopped Live Station channel to make it active again for streaming", {
172
+ channelId: z.string({ required_error: "필수 파라미터 'channelId'가 누락되었습니다." }).describe("Channel ID to resume"),
173
+ }, async (params) => {
174
+ try {
175
+ const result = await client.putRequest(`/api/v2/channels/${params.channelId}/resume`, {});
176
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
177
+ }
178
+ catch (error) {
179
+ return { content: [{ type: "text", text: error.message }], isError: true };
180
+ }
181
+ });
182
+ server.tool("ncloud_livestation_update_channel", "Update configuration of a Live Station channel (CDN, quality, recording, DVR settings)", {
183
+ channelId: z.string({ required_error: "필수 파라미터 'channelId'가 누락되었습니다." }).describe("Channel ID to update"),
184
+ channelName: z.string().optional().describe("New channel name (3-20 chars)"),
185
+ qualitySetId: z.number().optional().describe("New image quality setting ID"),
186
+ useDvr: z.boolean().optional().describe("Time machine (DVR) setting"),
187
+ timemachineMin: z.number().optional().describe("Time machine allowance in minutes (360)"),
188
+ immediateOnAir: z.boolean().optional().describe("Auto-recording on stream start"),
189
+ recordType: z.enum(["NO_RECORD", "AUTO_UPLOAD", "MANUAL_UPLOAD"]).optional().describe("Recording storage type"),
190
+ recordFormat: z.enum(["MP4", "HLS", "ALL"]).optional().describe("Recording file format"),
191
+ recordBucketName: z.string().optional().describe("Recording storage bucket"),
192
+ recordFilePath: z.string().optional().describe("Recording storage path"),
193
+ isStreamFailOver: z.boolean().optional().describe("Whether to enable streaming redundancy"),
194
+ drmEnabledYn: z.boolean().optional().describe("Whether to enable Multi DRM"),
195
+ }, async (params) => {
196
+ try {
197
+ const { channelId, ...updateFields } = params;
198
+ const body = {};
199
+ if (updateFields.channelName !== undefined)
200
+ body.channelName = updateFields.channelName;
201
+ if (updateFields.qualitySetId !== undefined)
202
+ body.qualitySetId = updateFields.qualitySetId;
203
+ if (updateFields.useDvr !== undefined)
204
+ body.useDvr = updateFields.useDvr;
205
+ if (updateFields.timemachineMin !== undefined)
206
+ body.timemachineMin = updateFields.timemachineMin;
207
+ if (updateFields.immediateOnAir !== undefined)
208
+ body.immediateOnAir = updateFields.immediateOnAir;
209
+ if (updateFields.isStreamFailOver !== undefined)
210
+ body.isStreamFailOver = updateFields.isStreamFailOver;
211
+ if (updateFields.drmEnabledYn !== undefined)
212
+ body.drmEnabledYn = updateFields.drmEnabledYn;
213
+ if (updateFields.recordType !== undefined) {
214
+ body.record = {
215
+ type: updateFields.recordType,
216
+ format: updateFields.recordFormat,
217
+ bucketName: updateFields.recordBucketName,
218
+ filePath: updateFields.recordFilePath,
219
+ };
220
+ }
221
+ const result = await client.putRequest(`/api/v2/channels/${channelId}`, body);
222
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
223
+ }
224
+ catch (error) {
225
+ return { content: [{ type: "text", text: error.message }], isError: true };
226
+ }
227
+ });
228
+ // ─── Channel Record Control ────────────────────────────────────────────────
229
+ server.tool("ncloud_livestation_start_record", "Start manual recording for a Live Station channel that is currently streaming", {
230
+ channelId: z.string({ required_error: "필수 파라미터 'channelId'가 누락되었습니다." }).describe("Channel ID to start recording"),
231
+ }, async (params) => {
232
+ try {
233
+ const result = await client.putRequest(`/api/v2/channels/${params.channelId}/record/start`, {});
234
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
235
+ }
236
+ catch (error) {
237
+ return { content: [{ type: "text", text: error.message }], isError: true };
238
+ }
239
+ });
240
+ server.tool("ncloud_livestation_stop_record", "Stop manual recording for a Live Station channel", {
241
+ channelId: z.string({ required_error: "필수 파라미터 'channelId'가 누락되었습니다." }).describe("Channel ID to stop recording"),
242
+ }, async (params) => {
243
+ try {
244
+ const result = await client.putRequest(`/api/v2/channels/${params.channelId}/record/stop`, {});
245
+ return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
246
+ }
247
+ catch (error) {
248
+ return { content: [{ type: "text", text: error.message }], isError: true };
249
+ }
250
+ });
251
+ }
252
+ //# sourceMappingURL=media-livestation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"media-livestation.js","sourceRoot":"","sources":["../../src/tools/media-livestation.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 registerVodStationTools(server: McpServer, client: NcloudClient): void;