@takashito/linode-mcp-server
Version:
MCP server for Linode API
167 lines (166 loc) • 6.28 kB
TypeScript
import { AxiosInstance } from 'axios';
import { PaginatedResponse, PaginationParams } from './common';
export interface NotificationChannel {
id: number;
label: string;
channel_type: string;
details: Record<string, any>;
created: string;
updated: string;
}
export interface CreateNotificationChannelRequest {
label: string;
channel_type: string;
details: Record<string, any>;
}
export interface UpdateNotificationChannelRequest {
label?: string;
channel_type?: string;
details?: Record<string, any>;
}
export interface AlertDefinition {
id: number;
label: string;
description: string;
service_type: string;
severity: number;
trigger_conditions: Record<string, any>;
channel_ids: number[];
entity_ids: string[];
created: string;
updated: string;
enabled: boolean;
}
export interface CreateAlertDefinitionRequest {
label: string;
description?: string;
severity?: number;
trigger_conditions: Record<string, any>;
channel_ids?: number[];
entity_ids?: string[];
enabled?: boolean;
}
export interface UpdateAlertDefinitionRequest {
label?: string;
description?: string;
severity?: number;
trigger_conditions?: Record<string, any>;
channel_ids?: number[];
entity_ids?: string[];
enabled?: boolean;
}
export interface LogStream {
id: number;
label: string;
filters: Record<string, any>;
aggregation: Record<string, any>;
created: string;
updated: string;
}
export interface CreateLogStreamRequest {
label: string;
filters: Record<string, any>;
aggregation: Record<string, any>;
}
export interface UpdateLogStreamRequest {
label?: string;
filters?: Record<string, any>;
aggregation?: Record<string, any>;
}
export interface LogStreamHistory {
id: number;
stream_id: number;
timestamp: string;
data: Record<string, any>;
}
export interface LogDestination {
id: number;
label: string;
type: string;
config: Record<string, any>;
created: string;
updated: string;
}
export interface CreateLogDestinationRequest {
label: string;
type: string;
config: Record<string, any>;
}
export interface UpdateLogDestinationRequest {
label?: string;
type?: string;
config?: Record<string, any>;
}
export interface LogDestinationHistory {
id: number;
destination_id: number;
timestamp: string;
data: Record<string, any>;
}
export interface MonitorDashboard {
id: number;
label: string;
service_type: string;
type: string;
widgets: Record<string, any>[];
created: string;
updated: string;
}
export interface MonitorService {
service_type: string;
label: string;
}
export interface MetricDefinition {
metric: string;
label: string;
metric_type: string;
unit: string;
scrape_interval: string;
is_alertable: boolean;
dimensions: Record<string, any>[];
available_aggregate_functions: string[];
}
export interface GetServiceMetricsRequest {
entity_ids: number[];
start_time: string;
end_time: string;
time_granularity?: Record<string, any>;
}
export interface ServiceToken {
token: string;
}
export interface MonitorClient {
getNotificationChannels(params?: PaginationParams): Promise<PaginatedResponse<NotificationChannel>>;
getNotificationChannel(channelId: number): Promise<NotificationChannel>;
createNotificationChannel(data: CreateNotificationChannelRequest): Promise<NotificationChannel>;
updateNotificationChannel(channelId: number, data: UpdateNotificationChannelRequest): Promise<NotificationChannel>;
deleteNotificationChannel(channelId: number): Promise<void>;
getChannelAlerts(channelId: number, params?: PaginationParams): Promise<PaginatedResponse<AlertDefinition>>;
getAlertDefinitions(params?: PaginationParams): Promise<PaginatedResponse<AlertDefinition>>;
getServiceAlertDefinitions(serviceType: string, params?: PaginationParams): Promise<PaginatedResponse<AlertDefinition>>;
getAlertDefinition(serviceType: string, alertId: number): Promise<AlertDefinition>;
createAlertDefinition(serviceType: string, data: CreateAlertDefinitionRequest): Promise<AlertDefinition>;
updateAlertDefinition(serviceType: string, alertId: number, data: UpdateAlertDefinitionRequest): Promise<AlertDefinition>;
deleteAlertDefinition(serviceType: string, alertId: number): Promise<void>;
getLogStreams(params?: PaginationParams): Promise<PaginatedResponse<LogStream>>;
getLogStream(streamId: number): Promise<LogStream>;
createLogStream(data: CreateLogStreamRequest): Promise<LogStream>;
updateLogStream(streamId: number, data: UpdateLogStreamRequest): Promise<LogStream>;
deleteLogStream(streamId: number): Promise<void>;
getLogStreamHistory(streamId: number, params?: PaginationParams): Promise<PaginatedResponse<LogStreamHistory>>;
getLogDestinations(params?: PaginationParams): Promise<PaginatedResponse<LogDestination>>;
getLogDestination(destinationId: number): Promise<LogDestination>;
createLogDestination(data: CreateLogDestinationRequest): Promise<LogDestination>;
updateLogDestination(destinationId: number, data: UpdateLogDestinationRequest): Promise<LogDestination>;
deleteLogDestination(destinationId: number): Promise<void>;
getLogDestinationHistory(destinationId: number, params?: PaginationParams): Promise<PaginatedResponse<LogDestinationHistory>>;
listDashboards(params?: PaginationParams): Promise<PaginatedResponse<MonitorDashboard>>;
getDashboard(dashboardId: number): Promise<MonitorDashboard>;
listServices(params?: PaginationParams): Promise<PaginatedResponse<MonitorService>>;
getService(serviceType: string): Promise<MonitorService>;
listServiceDashboards(serviceType: string, params?: PaginationParams): Promise<PaginatedResponse<MonitorDashboard>>;
listServiceMetricDefinitions(serviceType: string): Promise<PaginatedResponse<MetricDefinition>>;
getServiceMetrics(serviceType: string, data: GetServiceMetricsRequest): Promise<Record<string, any>>;
createServiceToken(serviceType: string): Promise<ServiceToken>;
}
export declare function createMonitorClient(axios: AxiosInstance): MonitorClient;