ncloud-mcp-server 1.0.4 → 1.1.1
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/README.md +18 -2
- package/README_EN.md +18 -2
- package/dist/index.js +12 -331
- package/dist/index.js.map +1 -1
- package/dist/tools/_response.d.ts +69 -0
- package/dist/tools/_response.js +96 -0
- package/dist/tools/_response.js.map +1 -0
- package/dist/tools/acg.js +10 -9
- package/dist/tools/acg.js.map +1 -1
- package/dist/tools/activity-tracer.js +4 -3
- package/dist/tools/activity-tracer.js.map +1 -1
- package/dist/tools/analytics-cdss.js +51 -50
- package/dist/tools/analytics-cdss.js.map +1 -1
- package/dist/tools/analytics-datacatalog.js +22 -21
- package/dist/tools/analytics-datacatalog.js.map +1 -1
- package/dist/tools/analytics-dataflow.js +27 -26
- package/dist/tools/analytics-dataflow.js.map +1 -1
- package/dist/tools/analytics-dataforest.js +25 -24
- package/dist/tools/analytics-dataforest.js.map +1 -1
- package/dist/tools/analytics-dataquery.js +6 -5
- package/dist/tools/analytics-dataquery.js.map +1 -1
- package/dist/tools/analytics-datastream.js +22 -21
- package/dist/tools/analytics-datastream.js.map +1 -1
- package/dist/tools/analytics-hadoop.js +30 -29
- package/dist/tools/analytics-hadoop.js.map +1 -1
- package/dist/tools/analytics-ses.js +43 -42
- package/dist/tools/analytics-ses.js.map +1 -1
- package/dist/tools/api-gateway.js +13 -12
- package/dist/tools/api-gateway.js.map +1 -1
- package/dist/tools/autoscaling.js +25 -24
- package/dist/tools/autoscaling.js.map +1 -1
- package/dist/tools/billing.d.ts +0 -11
- package/dist/tools/billing.js +210 -48
- package/dist/tools/billing.js.map +1 -1
- package/dist/tools/certificate-manager.js +4 -3
- package/dist/tools/certificate-manager.js.map +1 -1
- package/dist/tools/cloud-advisor.js +16 -15
- package/dist/tools/cloud-advisor.js.map +1 -1
- package/dist/tools/cloud-functions.js +22 -21
- package/dist/tools/cloud-functions.js.map +1 -1
- package/dist/tools/cloud-insight-integration.js +56 -35
- package/dist/tools/cloud-insight-integration.js.map +1 -1
- package/dist/tools/cloud-insight-plugin.js +291 -353
- package/dist/tools/cloud-insight-plugin.js.map +1 -1
- package/dist/tools/cloud-insight-rule.js +28 -27
- package/dist/tools/cloud-insight-rule.js.map +1 -1
- package/dist/tools/cloud-insight.js +12 -11
- package/dist/tools/cloud-insight.js.map +1 -1
- package/dist/tools/common.js +6 -5
- package/dist/tools/common.js.map +1 -1
- package/dist/tools/compute-initscript.js +5 -4
- package/dist/tools/compute-initscript.js.map +1 -1
- package/dist/tools/compute-loginkey.js +5 -4
- package/dist/tools/compute-loginkey.js.map +1 -1
- package/dist/tools/compute-placement.js +14 -13
- package/dist/tools/compute-placement.js.map +1 -1
- package/dist/tools/compute-publicip.js +8 -7
- package/dist/tools/compute-publicip.js.map +1 -1
- package/dist/tools/compute-server.js +29 -28
- package/dist/tools/compute-server.js.map +1 -1
- package/dist/tools/compute-storage.js +16 -15
- package/dist/tools/compute-storage.js.map +1 -1
- package/dist/tools/containers-nks.js +38 -37
- package/dist/tools/containers-nks.js.map +1 -1
- package/dist/tools/containers-registry.js +13 -12
- package/dist/tools/containers-registry.js.map +1 -1
- package/dist/tools/database-cache.js +25 -24
- package/dist/tools/database-cache.js.map +1 -1
- package/dist/tools/database-mongodb.js +25 -24
- package/dist/tools/database-mongodb.js.map +1 -1
- package/dist/tools/database-mssql.js +23 -22
- package/dist/tools/database-mssql.js.map +1 -1
- package/dist/tools/database-mysql.js +30 -29
- package/dist/tools/database-mysql.js.map +1 -1
- package/dist/tools/database-postgresql.js +26 -25
- package/dist/tools/database-postgresql.js.map +1 -1
- package/dist/tools/global-dns.js +13 -12
- package/dist/tools/global-dns.js.map +1 -1
- package/dist/tools/global-edge.js +21 -20
- package/dist/tools/global-edge.js.map +1 -1
- package/dist/tools/global-traffic-manager.js +27 -26
- package/dist/tools/global-traffic-manager.js.map +1 -1
- package/dist/tools/kms.js +52 -39
- package/dist/tools/kms.js.map +1 -1
- package/dist/tools/loadbalancer.js +17 -16
- package/dist/tools/loadbalancer.js.map +1 -1
- package/dist/tools/log-analytics.js +118 -110
- package/dist/tools/log-analytics.js.map +1 -1
- package/dist/tools/media-imageoptimizer.js +10 -9
- package/dist/tools/media-imageoptimizer.js.map +1 -1
- package/dist/tools/media-livestation.js +13 -12
- package/dist/tools/media-livestation.js.map +1 -1
- package/dist/tools/media-vodstation.js +11 -10
- package/dist/tools/media-vodstation.js.map +1 -1
- package/dist/tools/nat-gateway.js +6 -5
- package/dist/tools/nat-gateway.js.map +1 -1
- package/dist/tools/network-acl.js +18 -17
- package/dist/tools/network-acl.js.map +1 -1
- package/dist/tools/network-interface.js +15 -14
- package/dist/tools/network-interface.js.map +1 -1
- package/dist/tools/private-ca.js +32 -23
- package/dist/tools/private-ca.js.map +1 -1
- package/dist/tools/registry.d.ts +49 -0
- package/dist/tools/registry.js +254 -0
- package/dist/tools/registry.js.map +1 -0
- package/dist/tools/resource-manager.js +7 -6
- package/dist/tools/resource-manager.js.map +1 -1
- package/dist/tools/route-table.js +12 -11
- package/dist/tools/route-table.js.map +1 -1
- package/dist/tools/security-monitoring.js +120 -129
- package/dist/tools/security-monitoring.js.map +1 -1
- package/dist/tools/sens.js +7 -6
- package/dist/tools/sens.js.map +1 -1
- package/dist/tools/sourcebuild.js +18 -17
- package/dist/tools/sourcebuild.js.map +1 -1
- package/dist/tools/sourcecommit.js +13 -12
- package/dist/tools/sourcecommit.js.map +1 -1
- package/dist/tools/sourcedeploy.js +35 -34
- package/dist/tools/sourcedeploy.js.map +1 -1
- package/dist/tools/sourcepipeline.js +18 -17
- package/dist/tools/sourcepipeline.js.map +1 -1
- package/dist/tools/storage-archive.js +13 -12
- package/dist/tools/storage-archive.js.map +1 -1
- package/dist/tools/storage-nas.js +20 -19
- package/dist/tools/storage-nas.js.map +1 -1
- package/dist/tools/storage-ncloud.js +25 -24
- package/dist/tools/storage-ncloud.js.map +1 -1
- package/dist/tools/storage-object.js +29 -28
- package/dist/tools/storage-object.js.map +1 -1
- package/dist/tools/sub-account.js +19 -18
- package/dist/tools/sub-account.js.map +1 -1
- package/dist/tools/target-group.js +12 -11
- package/dist/tools/target-group.js.map +1 -1
- package/dist/tools/vpc-peering.js +8 -7
- package/dist/tools/vpc-peering.js.map +1 -1
- package/dist/tools/vpc.js +11 -10
- package/dist/tools/vpc.js.map +1 -1
- package/package.json +1 -1
- package/dist/auth/signature.test.d.ts +0 -1
- package/dist/auth/signature.test.js +0 -90
- package/dist/auth/signature.test.js.map +0 -1
- package/dist/client/ncloud-client.test.d.ts +0 -1
- package/dist/client/ncloud-client.test.js +0 -477
- package/dist/client/ncloud-client.test.js.map +0 -1
- package/dist/tools/compute-server.test.d.ts +0 -1
- package/dist/tools/compute-server.test.js +0 -224
- package/dist/tools/compute-server.test.js.map +0 -1
|
@@ -1,43 +1,59 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
|
+
import { toolText } from "./_response.js";
|
|
3
|
+
// Cloud Insight Integration API (base: https://cw.apigw.ntruss.com)
|
|
4
|
+
// 공식 docs 기준 경로/메서드/필드 (management-cloudinsight-*integration*)
|
|
5
|
+
const BASE = "/cw_fea/real/cw/api/integration";
|
|
2
6
|
export function registerCloudInsightIntegrationTools(server, client) {
|
|
3
|
-
// ncloud_list_integrations — Get integration list
|
|
4
|
-
server.tool("ncloud_list_integrations", "Get the list of Cloud Insight integrations.", {
|
|
7
|
+
// ncloud_list_integrations — Get integration list (paged)
|
|
8
|
+
server.tool("ncloud_list_integrations", "Get the list of Cloud Insight integrations (paged).", {
|
|
9
|
+
query: z.string().optional().default("").describe("Filter keyword (empty string = all)"),
|
|
10
|
+
pageNum: z.number().optional().default(1).describe("Page number (>= 1)"),
|
|
11
|
+
pageSize: z.number().optional().default(100).describe("Page size (>= 1)"),
|
|
12
|
+
}, async (params) => {
|
|
5
13
|
try {
|
|
6
|
-
const
|
|
7
|
-
|
|
14
|
+
const body = {
|
|
15
|
+
query: params.query ?? "",
|
|
16
|
+
pageNum: params.pageNum ?? 1,
|
|
17
|
+
pageSize: params.pageSize ?? 100,
|
|
18
|
+
};
|
|
19
|
+
const result = await client.postRequest(`${BASE}/page`, body);
|
|
20
|
+
return toolText(result);
|
|
8
21
|
}
|
|
9
22
|
catch (error) {
|
|
10
23
|
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
11
24
|
}
|
|
12
25
|
});
|
|
13
|
-
// ncloud_get_integration — Get integration details
|
|
26
|
+
// ncloud_get_integration — Get integration details (GET, id in path)
|
|
14
27
|
server.tool("ncloud_get_integration", "Get detailed information about a specific Cloud Insight integration.", {
|
|
15
28
|
integrationId: z.string().describe("Integration ID to retrieve details for"),
|
|
16
29
|
}, async (params) => {
|
|
17
30
|
try {
|
|
18
|
-
const
|
|
19
|
-
|
|
20
|
-
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
31
|
+
const result = await client.requestRaw("GET", `${BASE}/${params.integrationId}/detail`);
|
|
32
|
+
return toolText(result);
|
|
21
33
|
}
|
|
22
34
|
catch (error) {
|
|
23
35
|
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
24
36
|
}
|
|
25
37
|
});
|
|
26
|
-
// ncloud_create_integration — Create an integration
|
|
27
|
-
server.tool("ncloud_create_integration", "Create a new Cloud Insight integration.", {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
38
|
+
// ncloud_create_integration — Create an integration (OUT_GOING webhook)
|
|
39
|
+
server.tool("ncloud_create_integration", "Create a new Cloud Insight integration (outgoing webhook).", {
|
|
40
|
+
name: z.string().describe("Name of the integration"),
|
|
41
|
+
url: z.string().describe("Outgoing webhook URL"),
|
|
42
|
+
payload: z.string().describe("Request payload template (JSON string, 0-15000 bytes)"),
|
|
43
|
+
type: z.string().optional().default("OUT_GOING").describe("Integration type (currently 'OUT_GOING')"),
|
|
44
|
+
headers: z.record(z.string()).optional().describe("HTTP headers to send (max 10 entries)"),
|
|
31
45
|
}, async (params) => {
|
|
32
46
|
try {
|
|
33
47
|
const body = {
|
|
34
|
-
|
|
35
|
-
|
|
48
|
+
name: params.name,
|
|
49
|
+
type: params.type ?? "OUT_GOING",
|
|
50
|
+
url: params.url,
|
|
51
|
+
payload: params.payload,
|
|
36
52
|
};
|
|
37
|
-
if (params.
|
|
38
|
-
body.
|
|
39
|
-
const result = await client.postRequest(
|
|
40
|
-
return
|
|
53
|
+
if (params.headers !== undefined)
|
|
54
|
+
body.headers = params.headers;
|
|
55
|
+
const result = await client.postRequest(`${BASE}/create`, body);
|
|
56
|
+
return toolText(result);
|
|
41
57
|
}
|
|
42
58
|
catch (error) {
|
|
43
59
|
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
@@ -46,41 +62,46 @@ export function registerCloudInsightIntegrationTools(server, client) {
|
|
|
46
62
|
// ncloud_update_integration — Update an integration
|
|
47
63
|
server.tool("ncloud_update_integration", "Update an existing Cloud Insight integration.", {
|
|
48
64
|
integrationId: z.string().describe("Integration ID to update"),
|
|
49
|
-
|
|
50
|
-
|
|
65
|
+
name: z.string().describe("Name of the integration"),
|
|
66
|
+
url: z.string().describe("Outgoing webhook URL"),
|
|
67
|
+
payload: z.string().describe("Request payload template (JSON string, 0-15000 bytes)"),
|
|
68
|
+
type: z.string().optional().default("OUT_GOING").describe("Integration type (currently 'OUT_GOING')"),
|
|
69
|
+
headers: z.record(z.string()).optional().describe("HTTP headers to send (max 10 entries)"),
|
|
51
70
|
}, async (params) => {
|
|
52
71
|
try {
|
|
53
72
|
const body = {
|
|
54
|
-
|
|
73
|
+
id: params.integrationId,
|
|
74
|
+
name: params.name,
|
|
75
|
+
type: params.type ?? "OUT_GOING",
|
|
76
|
+
url: params.url,
|
|
77
|
+
payload: params.payload,
|
|
55
78
|
};
|
|
56
|
-
if (params.
|
|
57
|
-
body.
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
const result = await client.postRequest("/cw_fea/real/cw/api/integration/update", body);
|
|
61
|
-
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
79
|
+
if (params.headers !== undefined)
|
|
80
|
+
body.headers = params.headers;
|
|
81
|
+
const result = await client.postRequest(`${BASE}/update`, body);
|
|
82
|
+
return toolText(result);
|
|
62
83
|
}
|
|
63
84
|
catch (error) {
|
|
64
85
|
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
65
86
|
}
|
|
66
87
|
});
|
|
67
|
-
// ncloud_delete_integration — Delete
|
|
68
|
-
server.tool("ncloud_delete_integration", "⚠️ Destructive: Delete a Cloud Insight integration.", {
|
|
88
|
+
// ncloud_delete_integration — Delete integration(s) (body = JSON array of ids)
|
|
89
|
+
server.tool("ncloud_delete_integration", "⚠️ Destructive: Delete a Cloud Insight integration. Set confirm=true to execute.", {
|
|
69
90
|
integrationId: z.string().describe("Integration ID to delete"),
|
|
70
|
-
confirm: z.boolean().optional().describe("Must be true to execute
|
|
91
|
+
confirm: z.boolean().optional().default(false).describe("Must be true to actually execute the destructive operation"),
|
|
71
92
|
}, async (params) => {
|
|
72
93
|
try {
|
|
73
94
|
if (!params.confirm) {
|
|
74
95
|
return {
|
|
75
96
|
content: [{
|
|
76
97
|
type: "text",
|
|
77
|
-
text: `⚠️ This will permanently delete integration [${params.integrationId}]. To
|
|
98
|
+
text: `⚠️ This will permanently delete integration [${params.integrationId}]. To execute, call this tool again with confirm=true.`,
|
|
78
99
|
}],
|
|
79
100
|
};
|
|
80
101
|
}
|
|
81
|
-
|
|
82
|
-
const result = await client.postRequest(
|
|
83
|
-
return
|
|
102
|
+
// 삭제 API는 id 문자열의 JSON 배열을 body로 받는다
|
|
103
|
+
const result = await client.postRequest(`${BASE}/delete`, [params.integrationId]);
|
|
104
|
+
return toolText(result);
|
|
84
105
|
}
|
|
85
106
|
catch (error) {
|
|
86
107
|
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cloud-insight-integration.js","sourceRoot":"","sources":["../../src/tools/cloud-insight-integration.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"cloud-insight-integration.js","sourceRoot":"","sources":["../../src/tools/cloud-insight-integration.ts"],"names":[],"mappings":"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"}
|