@takashito/linode-mcp-server
Version:
MCP server for Linode API
116 lines (115 loc) • 3.14 kB
TypeScript
import { AxiosInstance } from 'axios';
import { PaginatedResponse, PaginationParams } from './common';
export interface LongviewClient {
id: number;
label: string;
api_key: string;
install_code: string;
apps: {
apache: boolean;
nginx: boolean;
mysql: boolean;
};
created: string;
updated: string;
}
export interface LongviewSubscription {
id: string;
label: string;
clients_included: number;
price: {
hourly: number;
monthly: number;
};
}
export interface LongviewData {
timestamp: number;
uptime: number;
packages: {
updates: number;
};
load: [number, number, number];
cpu: {
user: number;
nice: number;
system: number;
wait: number;
idle: number;
};
memory: {
total: number;
used: number;
free: number;
buffers: number;
cached: number;
swap_total: number;
swap_used: number;
swap_free: number;
};
network: {
[networkInterface: string]: {
rx_bytes: number;
tx_bytes: number;
rx_packets: number;
tx_packets: number;
};
};
disk: {
[device: string]: {
fs: string;
mount_point: string;
total: number;
used: number;
free: number;
};
};
processes: {
[process: string]: {
user: string;
count: number;
cpu: number;
mem: number;
};
};
}
export interface CreateLongviewClientRequest {
label?: string;
}
export interface UpdateLongviewClientRequest {
label: string;
}
export interface LongviewPlan {
id: string;
label: string;
clients_included: number;
price: {
hourly: number;
monthly: number;
};
}
export interface UpdateLongviewPlanRequest {
longview_subscription: string;
}
export interface LongviewType {
id: string;
label: string;
clients_included: number;
price: {
hourly: number;
monthly: number;
};
}
export interface LongviewClientInterface {
getLongviewClients(params?: PaginationParams): Promise<PaginatedResponse<LongviewClient>>;
getLongviewClient(id: number): Promise<LongviewClient>;
createLongviewClient(data?: CreateLongviewClientRequest): Promise<LongviewClient>;
updateLongviewClient(id: number, data: UpdateLongviewClientRequest): Promise<LongviewClient>;
deleteLongviewClient(id: number): Promise<void>;
getLongviewSubscriptions(params?: PaginationParams): Promise<PaginatedResponse<LongviewSubscription>>;
getLongviewSubscription(id: string): Promise<LongviewSubscription>;
getLongviewData(id: number): Promise<LongviewData>;
getLongviewPlan(): Promise<LongviewPlan>;
updateLongviewPlan(data: UpdateLongviewPlanRequest): Promise<LongviewPlan>;
getLongviewTypes(params?: PaginationParams): Promise<PaginatedResponse<LongviewType>>;
}
export declare function createLongviewClient(axiosInstance: AxiosInstance): LongviewClientInterface;