@takashito/linode-mcp-server
Version:
MCP server for Linode API
143 lines • 9.15 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.listImageSharegroupsByImageSchema = exports.listTokenSharegroupImagesSchema = exports.getTokenSharegroupSchema = exports.deleteSharegroupTokenSchema = exports.updateSharegroupTokenSchema = exports.createSharegroupTokenSchema = exports.getSharegroupTokenSchema = exports.listSharegroupTokensSchema = exports.removeSharegroupMemberSchema = exports.updateSharegroupMemberSchema = exports.addSharegroupMembersSchema = exports.getSharegroupMemberSchema = exports.listSharegroupMembersSchema = exports.removeSharegroupImageSchema = exports.updateSharegroupImageSchema = exports.addSharegroupImagesSchema = exports.listSharegroupImagesSchema = exports.deleteImageSharegroupSchema = exports.updateImageSharegroupSchema = exports.createImageSharegroupSchema = exports.getImageSharegroupSchema = exports.listImageSharegroupsSchema = exports.replicateImageSchema = exports.deleteImageSchema = exports.updateImageSchema = exports.uploadImageSchema = exports.createImageSchema = exports.getImageSchema = exports.listImagesSchema = exports.linodeImageSchema = void 0;
const zod_1 = require("zod");
const schemas_1 = require("../common/schemas");
// Basic image schema
exports.linodeImageSchema = zod_1.z.object({
id: zod_1.z.string().describe('The unique ID of this Image'),
label: zod_1.z.string().describe('The Image\'s label'),
description: zod_1.z.string().nullable().describe('A description for this Image'),
created: zod_1.z.string().describe('The date this Image was created'),
updated: zod_1.z.string().describe('The last date this Image was updated'),
type: zod_1.z.enum(['manual', 'automatic']).describe('How the Image was created'),
status: zod_1.z.enum(['available', 'creating', 'pending_upload', 'deleted']).describe('The status of the Image'),
is_public: (0, schemas_1.coerceBoolean)().describe('True if the Image is public'),
size: zod_1.z.coerce.number().describe('The size of the Image in MB'),
created_by: zod_1.z.string().describe('The name of the user who created this Image'),
vendor: zod_1.z.string().nullable().describe('The upstream distribution vendor'),
deprecated: (0, schemas_1.coerceBoolean)().describe('Whether or not this Image is deprecated'),
expiry: zod_1.z.string().nullable().describe('Only Images with a non-null expiry will be automatically deleted')
});
// Schema for listing images
exports.listImagesSchema = schemas_1.paginationSchema;
// Schema for getting a specific image
exports.getImageSchema = zod_1.z.object({
imageId: zod_1.z.string().describe('The ID of the Image')
});
// Schema for creating an image
exports.createImageSchema = zod_1.z.object({
disk_id: zod_1.z.coerce.number().describe('The ID of the Linode Disk to create an Image from'),
label: zod_1.z.string().describe('The label for the resulting Image'),
description: zod_1.z.string().optional().describe('A text description for the Image')
});
// Schema for uploading an image
exports.uploadImageSchema = zod_1.z.object({
label: zod_1.z.string().describe('The label for the resulting Image'),
description: zod_1.z.string().optional().describe('A text description for the Image'),
region: zod_1.z.string().describe('The region where the Image will be uploaded')
});
// Schema for updating an image
exports.updateImageSchema = zod_1.z.object({
imageId: zod_1.z.string().describe('The ID of the Image to update'),
label: zod_1.z.string().optional().describe('The new label for the Image'),
description: zod_1.z.string().optional().describe('The new description for the Image')
});
// Schema for deleting an image
exports.deleteImageSchema = zod_1.z.object({
imageId: zod_1.z.string().describe('The ID of the Image to delete')
});
// Schema for replicating an image
exports.replicateImageSchema = zod_1.z.object({
imageId: zod_1.z.string().describe('The ID of the Image to replicate'),
regions: zod_1.z.array(zod_1.z.string()).describe('Array of regions to replicate the Image to')
});
// --- Sharegroups CRUD ---
exports.listImageSharegroupsSchema = schemas_1.paginationSchema;
exports.getImageSharegroupSchema = zod_1.z.object({
sharegroupId: zod_1.z.coerce.number().describe('The ID of the share group')
});
exports.createImageSharegroupSchema = zod_1.z.object({
label: zod_1.z.string().describe('The label for the share group'),
description: zod_1.z.string().optional().describe('A description for the share group')
});
exports.updateImageSharegroupSchema = zod_1.z.object({
sharegroupId: zod_1.z.coerce.number().describe('The ID of the share group to update'),
label: zod_1.z.string().optional().describe('The new label for the share group'),
description: zod_1.z.string().optional().describe('The new description for the share group')
});
exports.deleteImageSharegroupSchema = zod_1.z.object({
sharegroupId: zod_1.z.coerce.number().describe('The ID of the share group to delete')
});
// --- Sharegroup Images ---
exports.listSharegroupImagesSchema = zod_1.z.object({
sharegroupId: zod_1.z.coerce.number().describe('The ID of the share group'),
page: zod_1.z.coerce.number().int().optional().describe('Page number to fetch (minimum: 1)'),
page_size: zod_1.z.coerce.number().int().optional().describe('Number of items per page (minimum: 1, maximum: 500)')
});
exports.addSharegroupImagesSchema = zod_1.z.object({
sharegroupId: zod_1.z.coerce.number().describe('The ID of the share group'),
images: zod_1.z.array(zod_1.z.string()).describe('Array of Image IDs to add to the share group')
});
exports.updateSharegroupImageSchema = zod_1.z.object({
sharegroupId: zod_1.z.coerce.number().describe('The ID of the share group'),
imageId: zod_1.z.string().describe('The ID of the shared image to update')
});
exports.removeSharegroupImageSchema = zod_1.z.object({
sharegroupId: zod_1.z.coerce.number().describe('The ID of the share group'),
imageId: zod_1.z.string().describe('The ID of the shared image to remove')
});
// --- Sharegroup Members ---
exports.listSharegroupMembersSchema = zod_1.z.object({
sharegroupId: zod_1.z.coerce.number().describe('The ID of the share group'),
page: zod_1.z.coerce.number().int().optional().describe('Page number to fetch (minimum: 1)'),
page_size: zod_1.z.coerce.number().int().optional().describe('Number of items per page (minimum: 1, maximum: 500)')
});
exports.getSharegroupMemberSchema = zod_1.z.object({
sharegroupId: zod_1.z.coerce.number().describe('The ID of the share group'),
tokenUuid: zod_1.z.string().describe('The UUID of the membership token')
});
exports.addSharegroupMembersSchema = zod_1.z.object({
sharegroupId: zod_1.z.coerce.number().describe('The ID of the share group'),
data: zod_1.z.record(zod_1.z.any()).optional().describe('Request body for adding members to the share group')
});
exports.updateSharegroupMemberSchema = zod_1.z.object({
sharegroupId: zod_1.z.coerce.number().describe('The ID of the share group'),
tokenUuid: zod_1.z.string().describe('The UUID of the membership token to update'),
data: zod_1.z.record(zod_1.z.any()).optional().describe('Request body for updating the membership token')
});
exports.removeSharegroupMemberSchema = zod_1.z.object({
sharegroupId: zod_1.z.coerce.number().describe('The ID of the share group'),
tokenUuid: zod_1.z.string().describe('The UUID of the membership token to revoke')
});
// --- Sharegroup Tokens ---
exports.listSharegroupTokensSchema = schemas_1.paginationSchema;
exports.getSharegroupTokenSchema = zod_1.z.object({
tokenUuid: zod_1.z.string().describe('The UUID of the token')
});
exports.createSharegroupTokenSchema = zod_1.z.object({
data: zod_1.z.record(zod_1.z.any()).optional().describe('Request body for creating a sharegroup token')
});
exports.updateSharegroupTokenSchema = zod_1.z.object({
tokenUuid: zod_1.z.string().describe('The UUID of the token to update'),
data: zod_1.z.record(zod_1.z.any()).optional().describe('Request body for updating the token')
});
exports.deleteSharegroupTokenSchema = zod_1.z.object({
tokenUuid: zod_1.z.string().describe('The UUID of the token to delete')
});
// --- Token Lookups ---
exports.getTokenSharegroupSchema = zod_1.z.object({
tokenUuid: zod_1.z.string().describe('The UUID of the token')
});
exports.listTokenSharegroupImagesSchema = zod_1.z.object({
tokenUuid: zod_1.z.string().describe('The UUID of the token'),
page: zod_1.z.coerce.number().int().optional().describe('Page number to fetch (minimum: 1)'),
page_size: zod_1.z.coerce.number().int().optional().describe('Number of items per page (minimum: 1, maximum: 500)')
});
// --- Image-to-Sharegroups Lookup ---
exports.listImageSharegroupsByImageSchema = zod_1.z.object({
imageId: zod_1.z.string().describe('The ID of the Image'),
page: zod_1.z.coerce.number().int().optional().describe('Page number to fetch (minimum: 1)'),
page_size: zod_1.z.coerce.number().int().optional().describe('Number of items per page (minimum: 1, maximum: 500)')
});
//# sourceMappingURL=schemas.js.map