@takashito/linode-mcp-server
Version:
MCP server for Linode API
120 lines (119 loc) • 4.02 kB
TypeScript
import { AxiosInstance } from 'axios';
import { PaginationParams, PaginatedResponse } from './common';
/**
* Interface for image data
*/
export interface Image {
id: string;
label: string;
description: string | null;
created: string;
updated: string;
type: 'manual' | 'automatic';
status: 'available' | 'creating' | 'pending_upload' | 'deleted';
is_public: boolean;
size: number;
created_by: string;
vendor: string | null;
deprecated: boolean;
expiry: string | null;
}
/**
* Interface for creating an image
*/
export interface CreateImageRequest {
disk_id: number;
label: string;
description?: string;
}
/**
* Interface for uploading an image
*/
export interface UploadImageRequest {
label: string;
description?: string;
region: string;
}
/**
* Interface for updating an image
*/
export interface UpdateImageRequest {
label?: string;
description?: string;
}
/**
* Interface for image replication to regions
*/
export interface ReplicateImageRequest {
regions: string[];
}
/**
* Interface for the Images client
*/
export interface ImagesClient {
/**
* List all images
*/
getImages(params?: PaginationParams): Promise<PaginatedResponse<Image>>;
/**
* Get a specific image by ID
*/
getImage(imageId: string): Promise<Image>;
/**
* Create a new image from an existing disk
*/
createImage(data: CreateImageRequest): Promise<Image>;
/**
* Upload a new image
*/
uploadImage(data: UploadImageRequest): Promise<{
image: Image;
upload_url: string;
}>;
/**
* Update an existing image
*/
updateImage(imageId: string, data: UpdateImageRequest): Promise<Image>;
/**
* Delete an image
*/
deleteImage(imageId: string): Promise<{}>;
/**
* Replicate an image to other regions
*/
replicateImage(imageId: string, data: ReplicateImageRequest): Promise<{}>;
getSharegroups(params?: PaginationParams): Promise<PaginatedResponse<any>>;
getSharegroup(sharegroupId: number): Promise<any>;
createSharegroup(data: {
label: string;
description?: string;
}): Promise<any>;
updateSharegroup(sharegroupId: number, data: {
label?: string;
description?: string;
}): Promise<any>;
deleteSharegroup(sharegroupId: number): Promise<{}>;
getSharegroupImages(sharegroupId: number, params?: PaginationParams): Promise<PaginatedResponse<any>>;
addSharegroupImages(sharegroupId: number, data: {
images: string[];
}): Promise<any>;
updateSharegroupImage(sharegroupId: number, imageId: string): Promise<any>;
removeSharegroupImage(sharegroupId: number, imageId: string): Promise<{}>;
getSharegroupMembers(sharegroupId: number, params?: PaginationParams): Promise<PaginatedResponse<any>>;
getSharegroupMember(sharegroupId: number, tokenUuid: string): Promise<any>;
addSharegroupMembers(sharegroupId: number, data: Record<string, any>): Promise<any>;
updateSharegroupMember(sharegroupId: number, tokenUuid: string, data: Record<string, any>): Promise<any>;
removeSharegroupMember(sharegroupId: number, tokenUuid: string): Promise<{}>;
getSharegroupTokens(params?: PaginationParams): Promise<PaginatedResponse<any>>;
getSharegroupToken(tokenUuid: string): Promise<any>;
createSharegroupToken(data: Record<string, any>): Promise<any>;
updateSharegroupToken(tokenUuid: string, data: Record<string, any>): Promise<any>;
deleteSharegroupToken(tokenUuid: string): Promise<{}>;
getTokenSharegroup(tokenUuid: string): Promise<any>;
getTokenSharegroupImages(tokenUuid: string, params?: PaginationParams): Promise<PaginatedResponse<any>>;
getImageSharegroups(imageId: string, params?: PaginationParams): Promise<PaginatedResponse<any>>;
}
/**
* Create a client for interacting with the Linode Images API
*/
export declare function createImagesClient(axios: AxiosInstance): ImagesClient;