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,529 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
/**
|
|
3
|
+
* Ncloud Key Management Service (KMS) API 2.0
|
|
4
|
+
* Base URL: https://ocapi.ncloud.com
|
|
5
|
+
* Auth: Account Auth (x-ncp-apigw-timestamp, x-ncp-iam-access-key, x-ncp-apigw-signature-v2)
|
|
6
|
+
*/
|
|
7
|
+
export function registerKmsTools(server, client) {
|
|
8
|
+
// ─── Key Management ───────────────────────────────────────────────────────────
|
|
9
|
+
// ncloud_kms_create_key — Create a new KMS key
|
|
10
|
+
server.tool("ncloud_kms_create_key", "Create a new KMS key. Supports AES256 (symmetric), RSA2048 (asymmetric), and ECDSA key types.", {
|
|
11
|
+
keyName: z.string().describe("Key name (3-15 chars, alphanumeric + '-' + '_', must start with letter)"),
|
|
12
|
+
keyType: z.enum(["AES256", "RSA2048", "ECDSA"]).describe("Key type: AES256 (symmetric 256-bit), RSA2048 (asymmetric 2048-bit), ECDSA (asymmetric 256-bit)"),
|
|
13
|
+
protectionType: z.enum(["BASIC", "COMMON_HSM"]).describe("Key storage type: BASIC (encrypted internal storage) or COMMON_HSM (Hardware Security Module)"),
|
|
14
|
+
isAutoRotation: z.boolean().optional().describe("Enable auto rotation (default: false)"),
|
|
15
|
+
rotationPeriod: z.number().optional().describe("Auto rotation period in days (1-730, default: 90). Only when isAutoRotation is true"),
|
|
16
|
+
memo: z.string().optional().describe("Key memo/description (0-100 chars)"),
|
|
17
|
+
isConvergent: z.boolean().optional().describe("Enable convergent encryption (only for AES256, default: false)"),
|
|
18
|
+
}, async (params) => {
|
|
19
|
+
try {
|
|
20
|
+
const body = {
|
|
21
|
+
keyName: params.keyName,
|
|
22
|
+
keyType: params.keyType,
|
|
23
|
+
protectionType: params.protectionType,
|
|
24
|
+
isAutoRotation: params.isAutoRotation ?? false,
|
|
25
|
+
};
|
|
26
|
+
if (params.rotationPeriod !== undefined)
|
|
27
|
+
body.rotationPeriod = params.rotationPeriod;
|
|
28
|
+
if (params.memo !== undefined)
|
|
29
|
+
body.memo = params.memo;
|
|
30
|
+
if (params.isConvergent !== undefined)
|
|
31
|
+
body.isConvergent = params.isConvergent;
|
|
32
|
+
const result = await client.requestRaw("POST", "/kms/v1/keys", undefined, body);
|
|
33
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
// ncloud_kms_get_key_info — Get key detail information
|
|
40
|
+
server.tool("ncloud_kms_get_key_info", "Get detailed information about a specific KMS key by its keyTag.", {
|
|
41
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
42
|
+
}, async (params) => {
|
|
43
|
+
try {
|
|
44
|
+
const result = await client.requestRaw("GET", `/kms/v1/keys/${params.keyTag}`);
|
|
45
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
// ncloud_kms_get_key_list — Get key list
|
|
52
|
+
server.tool("ncloud_kms_get_key_list", "Get list of all KMS keys with pagination.", {
|
|
53
|
+
pageNo: z.number().optional().describe("Page number (default: 1)"),
|
|
54
|
+
pageSize: z.number().optional().describe("Page size 1-200 (default: 100)"),
|
|
55
|
+
}, async (params) => {
|
|
56
|
+
try {
|
|
57
|
+
const query = {};
|
|
58
|
+
if (params.pageNo !== undefined)
|
|
59
|
+
query.pageNo = params.pageNo;
|
|
60
|
+
if (params.pageSize !== undefined)
|
|
61
|
+
query.pageSize = params.pageSize;
|
|
62
|
+
const result = await client.requestRaw("GET", "/kms/v1/keys", query);
|
|
63
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
67
|
+
}
|
|
68
|
+
});
|
|
69
|
+
// ncloud_kms_get_public_key — Get public key (RSA2048/ECDSA only)
|
|
70
|
+
server.tool("ncloud_kms_get_public_key", "Get the public key for an asymmetric key (RSA2048 or ECDSA only).", {
|
|
71
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
72
|
+
}, async (params) => {
|
|
73
|
+
try {
|
|
74
|
+
const result = await client.requestRaw("GET", `/kms/v1/keys/${params.keyTag}/public-key`);
|
|
75
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
79
|
+
}
|
|
80
|
+
});
|
|
81
|
+
// ncloud_kms_enable_key — Enable a disabled key
|
|
82
|
+
server.tool("ncloud_kms_enable_key", "Enable a disabled KMS key to make it usable again.", {
|
|
83
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
84
|
+
}, async (params) => {
|
|
85
|
+
try {
|
|
86
|
+
const result = await client.requestRaw("POST", `/kms/v1/keys/${params.keyTag}/enable`);
|
|
87
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
91
|
+
}
|
|
92
|
+
});
|
|
93
|
+
// ncloud_kms_disable_key — Disable an active key
|
|
94
|
+
server.tool("ncloud_kms_disable_key", "Disable an active KMS key. Disabled keys cannot be used for cryptographic operations.", {
|
|
95
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
96
|
+
}, async (params) => {
|
|
97
|
+
try {
|
|
98
|
+
const result = await client.requestRaw("POST", `/kms/v1/keys/${params.keyTag}/disable`);
|
|
99
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
100
|
+
}
|
|
101
|
+
catch (error) {
|
|
102
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
103
|
+
}
|
|
104
|
+
});
|
|
105
|
+
// ncloud_kms_update_key_name — Update key name
|
|
106
|
+
server.tool("ncloud_kms_update_key_name", "Update the name of a KMS key.", {
|
|
107
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
108
|
+
keyName: z.string().describe("New key name (3-15 chars, alphanumeric + '-' + '_', must start with letter)"),
|
|
109
|
+
}, async (params) => {
|
|
110
|
+
try {
|
|
111
|
+
const result = await client.requestRaw("POST", `/kms/v1/keys/${params.keyTag}/update-name`, undefined, { keyName: params.keyName });
|
|
112
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
// ncloud_kms_rotate_key — Rotate key to create new version
|
|
119
|
+
server.tool("ncloud_kms_rotate_key", "Rotate an active key to create a new version. Only enabled keys can be rotated.", {
|
|
120
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
121
|
+
}, async (params) => {
|
|
122
|
+
try {
|
|
123
|
+
const result = await client.requestRaw("POST", `/kms/v1/keys/${params.keyTag}/rotate`);
|
|
124
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
// ncloud_kms_enable_key_version — Enable a specific key version
|
|
131
|
+
server.tool("ncloud_kms_enable_key_version", "Enable a specific version of a KMS key.", {
|
|
132
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
133
|
+
version: z.number().describe("Key version number to enable"),
|
|
134
|
+
}, async (params) => {
|
|
135
|
+
try {
|
|
136
|
+
const result = await client.requestRaw("POST", `/kms/v1/keys/${params.keyTag}/versions/${params.version}/enable`);
|
|
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_kms_disable_key_version — Disable a specific key version
|
|
144
|
+
server.tool("ncloud_kms_disable_key_version", "Disable a specific version of a KMS key. Disabled versions cannot decrypt data encrypted with that version.", {
|
|
145
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
146
|
+
version: z.number().describe("Key version number to disable"),
|
|
147
|
+
}, async (params) => {
|
|
148
|
+
try {
|
|
149
|
+
const result = await client.requestRaw("POST", `/kms/v1/keys/${params.keyTag}/versions/${params.version}/disable`);
|
|
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
|
+
// ncloud_kms_get_key_version_list — Get key version list
|
|
157
|
+
server.tool("ncloud_kms_get_key_version_list", "Get list of all versions for a specific KMS key.", {
|
|
158
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
159
|
+
}, async (params) => {
|
|
160
|
+
try {
|
|
161
|
+
const result = await client.requestRaw("GET", `/kms/v1/keys/${params.keyTag}/versions`);
|
|
162
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
163
|
+
}
|
|
164
|
+
catch (error) {
|
|
165
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
// ncloud_kms_request_key_deletion — Request key deletion (⚠️ Destructive)
|
|
169
|
+
server.tool("ncloud_kms_request_key_deletion", "⚠️ Destructive: Request deletion of a KMS key. The key enters REVOKE state and will be permanently deleted after the scheduled date. This action can be cancelled before the destroy date.", {
|
|
170
|
+
keyTag: z.string().min(1).describe("Key tag - unique identifier derived from key name (required)"),
|
|
171
|
+
}, async (params) => {
|
|
172
|
+
try {
|
|
173
|
+
if (!params.keyTag || params.keyTag.trim().length === 0) {
|
|
174
|
+
return { content: [{ type: "text", text: "Error: keyTag is required and cannot be empty" }], isError: true };
|
|
175
|
+
}
|
|
176
|
+
const result = await client.requestRaw("POST", `/kms/v1/keys/${params.keyTag}/request-deletion`);
|
|
177
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
178
|
+
}
|
|
179
|
+
catch (error) {
|
|
180
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
181
|
+
}
|
|
182
|
+
});
|
|
183
|
+
// ncloud_kms_cancel_key_deletion — Cancel key deletion request
|
|
184
|
+
server.tool("ncloud_kms_cancel_key_deletion", "Cancel a pending key deletion request. Only keys in REVOKE state can be cancelled.", {
|
|
185
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
186
|
+
}, async (params) => {
|
|
187
|
+
try {
|
|
188
|
+
const result = await client.requestRaw("POST", `/kms/v1/keys/${params.keyTag}/cancel-deletion`);
|
|
189
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
190
|
+
}
|
|
191
|
+
catch (error) {
|
|
192
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
// ncloud_kms_delete_key — Permanently delete a key (⚠️ Destructive)
|
|
196
|
+
server.tool("ncloud_kms_delete_key", "⚠️ Destructive: Permanently delete a KMS key. This action is irreversible. The key must be in REVOKE state (deletion requested) before it can be permanently deleted.", {
|
|
197
|
+
keyTag: z.string().min(1).describe("Key tag - unique identifier derived from key name (required)"),
|
|
198
|
+
}, async (params) => {
|
|
199
|
+
try {
|
|
200
|
+
if (!params.keyTag || params.keyTag.trim().length === 0) {
|
|
201
|
+
return { content: [{ type: "text", text: "Error: keyTag is required and cannot be empty" }], isError: true };
|
|
202
|
+
}
|
|
203
|
+
const result = await client.requestRaw("DELETE", `/kms/v1/keys/${params.keyTag}`);
|
|
204
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
208
|
+
}
|
|
209
|
+
});
|
|
210
|
+
// ─── Auto Rotation ────────────────────────────────────────────────────────────
|
|
211
|
+
// ncloud_kms_update_rotation_period — Update auto rotation period
|
|
212
|
+
server.tool("ncloud_kms_update_rotation_period", "Update the auto rotation period for a KMS key.", {
|
|
213
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
214
|
+
rotationPeriod: z.number().describe("Rotation period in days (1-730)"),
|
|
215
|
+
}, async (params) => {
|
|
216
|
+
try {
|
|
217
|
+
const result = await client.requestRaw("POST", `/kms/v1/keys/${params.keyTag}/rotation-period`, undefined, { rotationPeriod: params.rotationPeriod });
|
|
218
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
219
|
+
}
|
|
220
|
+
catch (error) {
|
|
221
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
// ncloud_kms_enable_auto_rotation — Enable auto rotation
|
|
225
|
+
server.tool("ncloud_kms_enable_auto_rotation", "Enable automatic key rotation for a KMS key.", {
|
|
226
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
227
|
+
}, async (params) => {
|
|
228
|
+
try {
|
|
229
|
+
const result = await client.requestRaw("POST", `/kms/v1/keys/${params.keyTag}/enable-auto-rotation`);
|
|
230
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
231
|
+
}
|
|
232
|
+
catch (error) {
|
|
233
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
234
|
+
}
|
|
235
|
+
});
|
|
236
|
+
// ncloud_kms_disable_auto_rotation — Disable auto rotation
|
|
237
|
+
server.tool("ncloud_kms_disable_auto_rotation", "Disable automatic key rotation for a KMS key.", {
|
|
238
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
239
|
+
}, async (params) => {
|
|
240
|
+
try {
|
|
241
|
+
const result = await client.requestRaw("POST", `/kms/v1/keys/${params.keyTag}/disable-auto-rotation`);
|
|
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
|
+
// ncloud_kms_update_memo — Update key memo
|
|
249
|
+
server.tool("ncloud_kms_update_memo", "Update the memo/description of a KMS key.", {
|
|
250
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
251
|
+
memo: z.string().describe("New memo content (0-100 chars)"),
|
|
252
|
+
}, async (params) => {
|
|
253
|
+
try {
|
|
254
|
+
const result = await client.requestRaw("POST", `/kms/v1/keys/${params.keyTag}/memo`, undefined, { memo: params.memo });
|
|
255
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
256
|
+
}
|
|
257
|
+
catch (error) {
|
|
258
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
259
|
+
}
|
|
260
|
+
});
|
|
261
|
+
// ─── Cryptographic Operations ─────────────────────────────────────────────────
|
|
262
|
+
// ncloud_kms_encrypt — Encrypt data with a key
|
|
263
|
+
server.tool("ncloud_kms_encrypt", "Encrypt data (up to 32KB) using the current version of a KMS key. Only AES256 or RSA2048 key types supported.", {
|
|
264
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
265
|
+
plaintext: z.union([z.string(), z.array(z.string())]).describe("Base64-encoded plaintext data (string or array of strings, max 32KB each)"),
|
|
266
|
+
context: z.string().optional().describe("Base64-encoded context for convergent encryption (required if key has convergent encryption enabled, max 50 bytes)"),
|
|
267
|
+
}, async (params) => {
|
|
268
|
+
try {
|
|
269
|
+
const body = { plaintext: params.plaintext };
|
|
270
|
+
if (params.context !== undefined)
|
|
271
|
+
body.context = params.context;
|
|
272
|
+
const result = await client.requestRaw("POST", `/kms/v1/keys/${params.keyTag}/encrypt`, undefined, body);
|
|
273
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
274
|
+
}
|
|
275
|
+
catch (error) {
|
|
276
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
277
|
+
}
|
|
278
|
+
});
|
|
279
|
+
// ncloud_kms_decrypt — Decrypt ciphertext with a key
|
|
280
|
+
server.tool("ncloud_kms_decrypt", "Decrypt ciphertext using a KMS key. Only AES256 or RSA2048 key types supported. Ciphertext must include KMS prefix (ncpkms:version:ciphertext).", {
|
|
281
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
282
|
+
ciphertext: z.union([z.string(), z.array(z.string())]).describe("Ciphertext data including KMS prefix (string or array of strings)"),
|
|
283
|
+
context: z.string().optional().describe("Base64-encoded context used during encryption (required if convergent encryption was used)"),
|
|
284
|
+
}, async (params) => {
|
|
285
|
+
try {
|
|
286
|
+
const body = { ciphertext: params.ciphertext };
|
|
287
|
+
if (params.context !== undefined)
|
|
288
|
+
body.context = params.context;
|
|
289
|
+
const result = await client.requestRaw("POST", `/kms/v1/keys/${params.keyTag}/decrypt`, undefined, body);
|
|
290
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
291
|
+
}
|
|
292
|
+
catch (error) {
|
|
293
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
294
|
+
}
|
|
295
|
+
});
|
|
296
|
+
// ncloud_kms_create_custom_key — Generate a random data encryption key
|
|
297
|
+
server.tool("ncloud_kms_create_custom_key", "Generate a random raw key (data encryption key) wrapped by the specified master key. Used for envelope encryption. Only AES256 or RSA2048 key types supported.", {
|
|
298
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
299
|
+
requestPlainKey: z.boolean().optional().describe("Whether to return the plaintext key (default: false)"),
|
|
300
|
+
bits: z.number().optional().describe("Key size in bits: 128, 256 (default), or 512"),
|
|
301
|
+
context: z.string().optional().describe("Base64-encoded context for convergent encryption (max 50 bytes)"),
|
|
302
|
+
}, async (params) => {
|
|
303
|
+
try {
|
|
304
|
+
const body = {};
|
|
305
|
+
if (params.requestPlainKey !== undefined)
|
|
306
|
+
body.requestPlainKey = params.requestPlainKey;
|
|
307
|
+
if (params.bits !== undefined)
|
|
308
|
+
body.bits = params.bits;
|
|
309
|
+
if (params.context !== undefined)
|
|
310
|
+
body.context = params.context;
|
|
311
|
+
const result = await client.requestRaw("POST", `/kms/v1/keys/${params.keyTag}/create-custom-key`, undefined, body);
|
|
312
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
313
|
+
}
|
|
314
|
+
catch (error) {
|
|
315
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
316
|
+
}
|
|
317
|
+
});
|
|
318
|
+
// ncloud_kms_reencrypt — Re-encrypt ciphertext with latest key version
|
|
319
|
+
server.tool("ncloud_kms_reencrypt", "Re-encrypt ciphertext with the latest version of the specified master key. Used after key rotation to update encrypted data. Only AES256 or RSA2048 key types supported.", {
|
|
320
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
321
|
+
ciphertext: z.union([z.string(), z.array(z.string())]).describe("Ciphertext to re-encrypt (string or array of strings)"),
|
|
322
|
+
context: z.string().optional().describe("Base64-encoded context for convergent encryption"),
|
|
323
|
+
}, async (params) => {
|
|
324
|
+
try {
|
|
325
|
+
const body = { ciphertext: params.ciphertext };
|
|
326
|
+
if (params.context !== undefined)
|
|
327
|
+
body.context = params.context;
|
|
328
|
+
const result = await client.requestRaw("POST", `/kms/v1/keys/${params.keyTag}/reencrypt`, undefined, body);
|
|
329
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
330
|
+
}
|
|
331
|
+
catch (error) {
|
|
332
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
333
|
+
}
|
|
334
|
+
});
|
|
335
|
+
// ncloud_kms_sign — Sign data with a key
|
|
336
|
+
server.tool("ncloud_kms_sign", "Generate a digital signature for data (up to 8KB). Only RSA2048 or ECDSA key types supported.", {
|
|
337
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
338
|
+
data: z.string().describe("Base64-encoded data to sign (max 8KB)"),
|
|
339
|
+
}, async (params) => {
|
|
340
|
+
try {
|
|
341
|
+
const result = await client.requestRaw("POST", `/kms/v1/keys/${params.keyTag}/sign`, undefined, { data: params.data });
|
|
342
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
343
|
+
}
|
|
344
|
+
catch (error) {
|
|
345
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
346
|
+
}
|
|
347
|
+
});
|
|
348
|
+
// ncloud_kms_verify — Verify signature
|
|
349
|
+
server.tool("ncloud_kms_verify", "Verify a digital signature against data. Only RSA2048 or ECDSA key types supported.", {
|
|
350
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
351
|
+
data: z.string().describe("Base64-encoded original data that was signed"),
|
|
352
|
+
signature: z.string().describe("Signature value to verify"),
|
|
353
|
+
}, async (params) => {
|
|
354
|
+
try {
|
|
355
|
+
const result = await client.requestRaw("POST", `/kms/v1/keys/${params.keyTag}/verify`, undefined, { data: params.data, signature: params.signature });
|
|
356
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
357
|
+
}
|
|
358
|
+
catch (error) {
|
|
359
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
360
|
+
}
|
|
361
|
+
});
|
|
362
|
+
// ─── IP ACL ───────────────────────────────────────────────────────────────────
|
|
363
|
+
// ncloud_kms_enable_ip_acl — Enable IP ACL for token requests
|
|
364
|
+
server.tool("ncloud_kms_enable_ip_acl", "Enable IP ACL to control which IP addresses can request tokens for a KMS key.", {
|
|
365
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
366
|
+
}, async (params) => {
|
|
367
|
+
try {
|
|
368
|
+
const result = await client.requestRaw("POST", `/kms/v1/keys/${params.keyTag}/ip-acl/enable`);
|
|
369
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
370
|
+
}
|
|
371
|
+
catch (error) {
|
|
372
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
373
|
+
}
|
|
374
|
+
});
|
|
375
|
+
// ncloud_kms_disable_ip_acl — Disable IP ACL
|
|
376
|
+
server.tool("ncloud_kms_disable_ip_acl", "Disable IP ACL for a KMS key, allowing token requests from any IP.", {
|
|
377
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
378
|
+
}, async (params) => {
|
|
379
|
+
try {
|
|
380
|
+
const result = await client.requestRaw("POST", `/kms/v1/keys/${params.keyTag}/ip-acl/disable`);
|
|
381
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
382
|
+
}
|
|
383
|
+
catch (error) {
|
|
384
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
385
|
+
}
|
|
386
|
+
});
|
|
387
|
+
// ncloud_kms_get_acl_rule_list — Get IP ACL rules
|
|
388
|
+
server.tool("ncloud_kms_get_acl_rule_list", "Get the list of IP ACL rules configured for a KMS key.", {
|
|
389
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
390
|
+
}, async (params) => {
|
|
391
|
+
try {
|
|
392
|
+
const result = await client.requestRaw("GET", `/kms/v1/keys/${params.keyTag}/ip-acl/rules`);
|
|
393
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
394
|
+
}
|
|
395
|
+
catch (error) {
|
|
396
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
397
|
+
}
|
|
398
|
+
});
|
|
399
|
+
// ncloud_kms_add_acl_rule — Add IP ACL rule
|
|
400
|
+
server.tool("ncloud_kms_add_acl_rule", "Add an IP address to the ACL rules for a KMS key to allow token requests from that IP.", {
|
|
401
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
402
|
+
ip: z.string().describe("IP address to allow (e.g., '192.168.1.1' or CIDR '192.168.1.0/24')"),
|
|
403
|
+
memo: z.string().optional().describe("Description for this ACL rule"),
|
|
404
|
+
}, async (params) => {
|
|
405
|
+
try {
|
|
406
|
+
const body = { ip: params.ip };
|
|
407
|
+
if (params.memo !== undefined)
|
|
408
|
+
body.memo = params.memo;
|
|
409
|
+
const result = await client.requestRaw("POST", `/kms/v1/keys/${params.keyTag}/ip-acl/rules`, undefined, body);
|
|
410
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
411
|
+
}
|
|
412
|
+
catch (error) {
|
|
413
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
414
|
+
}
|
|
415
|
+
});
|
|
416
|
+
// ncloud_kms_delete_acl_rule — Delete IP ACL rule (⚠️ Destructive)
|
|
417
|
+
server.tool("ncloud_kms_delete_acl_rule", "⚠️ Destructive: Remove an IP address from the ACL rules for a KMS key.", {
|
|
418
|
+
keyTag: z.string().min(1).describe("Key tag - unique identifier derived from key name (required)"),
|
|
419
|
+
ruleId: z.string().min(1).describe("ACL rule ID to delete (required)"),
|
|
420
|
+
}, async (params) => {
|
|
421
|
+
try {
|
|
422
|
+
if (!params.keyTag || !params.ruleId) {
|
|
423
|
+
return { content: [{ type: "text", text: "Error: keyTag and ruleId are required" }], isError: true };
|
|
424
|
+
}
|
|
425
|
+
const result = await client.requestRaw("DELETE", `/kms/v1/keys/${params.keyTag}/ip-acl/rules/${params.ruleId}`);
|
|
426
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
427
|
+
}
|
|
428
|
+
catch (error) {
|
|
429
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
430
|
+
}
|
|
431
|
+
});
|
|
432
|
+
// ─── Token Generator ──────────────────────────────────────────────────────────
|
|
433
|
+
// ncloud_kms_create_token_generator — Create token generator
|
|
434
|
+
server.tool("ncloud_kms_create_token_generator", "Create (activate) a token generator for a KMS key. Enables token-based authentication for cryptographic operations.", {
|
|
435
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
436
|
+
}, async (params) => {
|
|
437
|
+
try {
|
|
438
|
+
const result = await client.requestRaw("POST", `/kms/v1/keys/${params.keyTag}/token-generator`);
|
|
439
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
440
|
+
}
|
|
441
|
+
catch (error) {
|
|
442
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
443
|
+
}
|
|
444
|
+
});
|
|
445
|
+
// ncloud_kms_get_token_generator — Get token generator info
|
|
446
|
+
server.tool("ncloud_kms_get_token_generator", "Get token generator information for a KMS key.", {
|
|
447
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
448
|
+
}, async (params) => {
|
|
449
|
+
try {
|
|
450
|
+
const result = await client.requestRaw("GET", `/kms/v1/keys/${params.keyTag}/token-generator`);
|
|
451
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
452
|
+
}
|
|
453
|
+
catch (error) {
|
|
454
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
455
|
+
}
|
|
456
|
+
});
|
|
457
|
+
// ncloud_kms_update_token_generator — Update (rotate) token generator
|
|
458
|
+
server.tool("ncloud_kms_update_token_generator", "Update (rotate) the token generator for a KMS key. Generates a new secret for token creation.", {
|
|
459
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
460
|
+
}, async (params) => {
|
|
461
|
+
try {
|
|
462
|
+
const result = await client.requestRaw("POST", `/kms/v1/keys/${params.keyTag}/token-generator/update`);
|
|
463
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
464
|
+
}
|
|
465
|
+
catch (error) {
|
|
466
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
467
|
+
}
|
|
468
|
+
});
|
|
469
|
+
// ncloud_kms_delete_token_generator — Delete token generator (⚠️ Destructive)
|
|
470
|
+
server.tool("ncloud_kms_delete_token_generator", "⚠️ Destructive: Delete (deactivate) the token generator for a KMS key. All existing tokens will be invalidated.", {
|
|
471
|
+
keyTag: z.string().min(1).describe("Key tag - unique identifier derived from key name (required)"),
|
|
472
|
+
}, async (params) => {
|
|
473
|
+
try {
|
|
474
|
+
if (!params.keyTag || params.keyTag.trim().length === 0) {
|
|
475
|
+
return { content: [{ type: "text", text: "Error: keyTag is required and cannot be empty" }], isError: true };
|
|
476
|
+
}
|
|
477
|
+
const result = await client.requestRaw("DELETE", `/kms/v1/keys/${params.keyTag}/token-generator`);
|
|
478
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
479
|
+
}
|
|
480
|
+
catch (error) {
|
|
481
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
482
|
+
}
|
|
483
|
+
});
|
|
484
|
+
// ncloud_kms_create_token_set — Create token set (access + refresh tokens)
|
|
485
|
+
server.tool("ncloud_kms_create_token_set", "Create a token set (access token + refresh token) for token-based authentication. Requires an active token generator.", {
|
|
486
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
487
|
+
}, async (params) => {
|
|
488
|
+
try {
|
|
489
|
+
const result = await client.requestRaw("POST", `/kms/v1/keys/${params.keyTag}/tokens`);
|
|
490
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
491
|
+
}
|
|
492
|
+
catch (error) {
|
|
493
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
494
|
+
}
|
|
495
|
+
});
|
|
496
|
+
// ─── Activity Logs ────────────────────────────────────────────────────────────
|
|
497
|
+
// ncloud_kms_get_key_activity_logs — Get key usage activity logs
|
|
498
|
+
server.tool("ncloud_kms_get_key_activity_logs", "Get activity logs (usage history) for a specific KMS key.", {
|
|
499
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
500
|
+
pageNo: z.number().optional().describe("Page number (default: 1)"),
|
|
501
|
+
pageSize: z.number().optional().describe("Page size (default: 100)"),
|
|
502
|
+
}, async (params) => {
|
|
503
|
+
try {
|
|
504
|
+
const query = {};
|
|
505
|
+
if (params.pageNo !== undefined)
|
|
506
|
+
query.pageNo = params.pageNo;
|
|
507
|
+
if (params.pageSize !== undefined)
|
|
508
|
+
query.pageSize = params.pageSize;
|
|
509
|
+
const result = await client.requestRaw("GET", `/kms/v1/keys/${params.keyTag}/activity-logs`, query);
|
|
510
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
511
|
+
}
|
|
512
|
+
catch (error) {
|
|
513
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
514
|
+
}
|
|
515
|
+
});
|
|
516
|
+
// ncloud_kms_get_latest_use_info — Get latest key usage info
|
|
517
|
+
server.tool("ncloud_kms_get_latest_use_info", "Get the most recent usage information for a specific KMS key.", {
|
|
518
|
+
keyTag: z.string().describe("Key tag - unique identifier derived from key name"),
|
|
519
|
+
}, async (params) => {
|
|
520
|
+
try {
|
|
521
|
+
const result = await client.requestRaw("GET", `/kms/v1/keys/${params.keyTag}/latest-use`);
|
|
522
|
+
return { content: [{ type: "text", text: JSON.stringify(result, null, 2) }] };
|
|
523
|
+
}
|
|
524
|
+
catch (error) {
|
|
525
|
+
return { content: [{ type: "text", text: error.message }], isError: true };
|
|
526
|
+
}
|
|
527
|
+
});
|
|
528
|
+
}
|
|
529
|
+
//# sourceMappingURL=kms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kms.js","sourceRoot":"","sources":["../../src/tools/kms.ts"],"names":[],"mappings":"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"}
|