@takashito/linode-mcp-server
Version:
MCP server for Linode API
58 lines (57 loc) • 1.76 kB
TypeScript
import { AxiosInstance } from 'axios';
import { PaginatedResponse, PaginationParams } from './common';
export interface Volume {
id: number;
label: string;
status: string;
region: string;
size: number;
linode_id: number | null;
created: string;
updated: string;
filesystem_path: string;
tags: string[];
}
export interface VolumeType {
id: string;
label: string;
region: string;
minimum: number;
maximum: number;
}
export interface CreateVolumeRequest {
label: string;
size: number;
region?: string;
linode_id?: number;
config_id?: number;
tags?: string[];
encryption?: 'enabled' | 'disabled';
}
export interface UpdateVolumeRequest {
label?: string;
tags?: string[];
}
export interface AttachVolumeRequest {
linode_id: number;
config_id?: number;
}
export interface ResizeVolumeRequest {
size: number;
}
export interface CloneVolumeRequest {
label: string;
}
export interface LinodeVolumesClient {
getVolumes: (params?: PaginationParams) => Promise<PaginatedResponse<Volume>>;
getVolumeById: (id: number) => Promise<Volume>;
createVolume: (data: CreateVolumeRequest) => Promise<Volume>;
updateVolume: (id: number, data: UpdateVolumeRequest) => Promise<Volume>;
deleteVolume: (id: number) => Promise<{}>;
attachVolume: (id: number, data: AttachVolumeRequest) => Promise<{}>;
detachVolume: (id: number) => Promise<{}>;
resizeVolume: (id: number, data: ResizeVolumeRequest) => Promise<{}>;
cloneVolume: (id: number, data: CloneVolumeRequest) => Promise<Volume>;
getVolumeTypes: () => Promise<PaginatedResponse<VolumeType>>;
}
export declare function createVolumesClient(axios: AxiosInstance): LinodeVolumesClient;